Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Окно произвольной формы   Найти похожие ветки 

 
Justas   (2004-09-24 22:14) [0]

Доброго времени суток.
Возник такой вопрос: на форме есть несколько компонентов TLabel. Как сделать окно произвольной формы так, чтобы оно имело форму этих лайблов. Т.е. чтобы казалось, что надписи висят на экране.
Прощу прощения за сумбурность объяснения.
Подобное я видел в программе Rainlendar.
Если можно, подскажите компонент, который умеет это делать
заранее спасибо


 
default ©   (2004-09-24 22:30) [1]

форму меток...с помощью путей(см. "paths" в SDK) делал давно
компонент так и не был доделан...особенно как узнал что такое уже написано...так что ищи или делай по этому принципу


 
Piter ©   (2004-09-25 00:23) [2]

надо использовать регионы.

В справке по WinApi - "Region Creation and Selection"


 
Kolan ©   (2004-09-25 01:27) [3]

Могу прислать пример произвольной формы. А вообше. Ya.ru, Google... Примеров очень много.


 
Justas   (2004-09-25 02:21) [4]

Спасибо всем!
Насчет регионов. Я делал окно произвольной формы, но основой служил  графический файл. Здесь тот же принцип? То есть создавать регионы по форме лэйблов? А если я заранее не знаю, каков их текст?


 
Kolan ©   (2004-09-25 02:30) [5]

Блин tit раз че-то я не понял. Ты хочеш чтобы окно было в форме label например если label.caption="T" то и форма - Т.
Или ты просто хочешь, что бы кроме твоих label ничего не было (для второго используй transparency)


 
Defunct ©   (2004-09-25 02:38) [6]

Kolan ©   (25.09.04 02:30) [5]

Наскоко я понял он хочет написать что-то типа "SHOCK" на весь экран, так почему же тогда нельзя обойтись без форм, просто взять DC0 и рисовать прямо на экране.


 
Kolan ©   (2004-09-25 02:43) [7]

tit - еше Punto Switcher помог :)


 
Kolan ©   (2004-09-25 02:53) [8]

AAA Rainlendar - это календарь. И его форма полупрозрачна а на ней числа(дни месяца) по всей видимости те самые label. Так это можно с помошью AIP функций. Спроси у Ya.ru "прозрачная форма && delphi".
P.S. Пришлось програму найти и скачать. Хотя может я и не совсем понял чего хотели-то.


 
Justas   (2004-09-25 03:19) [9]

Kolan, ты все правильно понял.
Спасибо за ответы!!
- Именно то, что нужно - это если Label.Caption="T" то и форма - Т. Как это сделать?
- И по второму пункту, с полупрозрачной формой - как это можно сделать?
Кстати, у календаря форма не полупрозрачная. Там форма именно имеет форму текста, в данном случае чисел месяца.


 
Defunct ©   (2004-09-25 04:33) [10]

> - И по второму пункту, с полупрозрачной формой - как это можно сделать?

Миксовать цвета. Проще будет сделать если формы просто нет.

что то типа такого:

Function Mix(SourceColor, DestColor, Opacity:Byte):Byte;
Var Delta:Integer;
Begin
 Delta := DestColor - SourceColor;
 Delta := (Delta*Opacity) div 100;
 Result := Byte(SourceColor + Delta);
End;

....

// Накладываем один поток на другой с Opacity процентом непрозрачности
 For I:=1 To PixelsCount Do
 Begin
   Begin // Process a layer
     DestBmp.A[i].R := Mix(DestBmp.A[i].R, SourceBmp.A[i].R, Opacity);
     DestBmp.A[i].G := Mix(DestBmp.A[i].G, SourceBmp.A[i].G, Opacity);
     DestBmp.A[i].B := Mix(DestBmp.A[i].B, SourceBmp.A[i].B, Opacity);
   End;
 End


 
Delphi X PRO   (2004-09-25 10:04) [11]

Можно, короче, создать регионы в форме, а потом их скрепить %)


 
Kolan ©   (2004-09-25 11:41) [12]

>Justas
>- Именно то, что нужно - это если Label.Caption="T" то и форма - Т. Как это сделать?
Я думаю что не так просто. Может
1. Создать форму с image на всю форму - допустим Т (далее работаеш с регионом)
2. Создать алгоритм котоый нарисует bitmap по твоему label

или 1. тоже а второе
2. сделать image list с готовами буквами и как-то их соединять

А вообше бред представь как это будет выглядеть.

P.S где в Rainlendar то что ты хочешь не нашел.

P.S. Я же сказал API для прозрачности

http://delphiworld.narod.ru/base/half_transparent_form_win2000.html


 
Justas   (2004-09-25 15:08) [13]

Спасибо большое всем!
Внимательно изучу ваши ссылки

Kolan, в Rainlendar поменяй скин. Там есть один именно такой, я как описывал (или пытался описать :) )


 
Kolan ©   (2004-09-26 00:45) [14]

I>
> Justas

Видно в моем нет.
Кстати про скины. Есть вроде возможность использовать как-же называется ... стили окон что-ли. Их можно с microsoft подгружать и работа с ними стандартная помоему для любого приложения.
P.S. А вообше мне кажется ты не того хочешь. Подумай что-то нетак - хотя не зняю что.
Как в анекдоте чувствую что наё..бывают не могу понять где.
:)


 
Justas   (2004-09-26 01:05) [15]

Да-да "нет, конечно интуитивно я догадываюсь, но хотелось бы знать конкретнее" :)

вот тут http://xe-on.narod.ru/alpha.htm есть пример как сделать форму прозрачной. Это почти то, что мне надо было, но есть одно НО - все, что находится на форме, тоже становится прозрачным
Я даже нарыл как можно сделать окно полностью прозрачным, а контролы нет, но проблема в том, что в этом случае лейблы соответственно тоже непрозрачны, даже если ставить свойство Transparent:=true. Это можно как-то решить?


 
Justas   (2004-09-26 01:24) [16]

Отвечу сам себе на вторую часть вопроса. Прозрачная форма делается через регионы окна (как и советовали), потому и контролы соответственно непрозрачны



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.034 c
1-1098116291
IceT
2004-10-18 20:18
2004.10.31
Деревья


6-1093371499
Луарвик
2004-08-24 22:18
2004.10.31
IdHTTP: Метод Post: че-то с кодировкой?


3-1096718489
Denniro
2004-10-02 16:01
2004.10.31
Примеры работы с MS-SQL


6-1093112613
Луарвик
2004-08-21 22:23
2004.10.31
Замена NMHTTP у Indy


14-1097655093
Herzog
2004-10-13 12:11
2004.10.31
Inkompatible Typen: String und procedure, untyped pointer or .





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский