![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Окно произвольной формы [D5, WinXP]
Justas © (2004-09-24 22:14:00)Доброго времени суток.
Возник такой вопрос: на форме есть несколько компонентов TLabel. Как сделать окно произвольной формы так, чтобы оно имело форму этих лайблов. Т.е. чтобы казалось, что надписи висят на экране.
Прощу прощения за сумбурность объяснения.
Подобное я видел в программе Rainlendar.
Если можно, подскажите компонент, который умеет это делать
заранее спасибо
Justas (2004-09-26 01:24:00) [1]Отвечу сам себе на вторую часть вопроса. Прозрачная форма делается через регионы окна (как и советовали), потому и контролы соответственно непрозрачны
Justas (2004-09-26 01:05:00) [2]Да-да "нет, конечно интуитивно я догадываюсь, но хотелось бы знать конкретнее" :)
вот тут http://xe-on.narod.ru/alpha.htmесть пример как сделать форму прозрачной. Это почти то, что мне надо было, но есть одно НО - все, что находится на форме, тоже становится прозрачным
Я даже нарыл как можно сделать окно полностью прозрачным, а контролы нет, но проблема в том, что в этом случае лейблы соответственно тоже непрозрачны, даже если ставить свойство Transparent:=true. Это можно как-то решить?
Kolan (2004-09-26 00:45:00) [3]I>
> Justas
Видно в моем нет.
Кстати про скины. Есть вроде возможность использовать как-же называется ... стили окон что-ли. Их можно с microsoft подгружать и работа с ними стандартная помоему для любого приложения.
P.S. А вообше мне кажется ты не того хочешь. Подумай что-то нетак - хотя не зняю что.
Как в анекдоте чувствую что наё..бывают не могу понять где.
:)
Justas (2004-09-25 15:08:00) [4]Спасибо большое всем!
Внимательно изучу ваши ссылки
Kolan, в Rainlendar поменяй скин. Там есть один именно такой, я как описывал (или пытался описать :) )
Kolan (2004-09-25 11:41:00) [5]>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
Delphi X PRO (2004-09-25 10:04:00) [6]Можно, короче, создать регионы в форме, а потом их скрепить %)
Defunct (2004-09-25 04:33:00) [7]> - И по второму пункту, с полупрозрачной формой - как это можно сделать?
Миксовать цвета. Проще будет сделать если формы просто нет.
что то типа такого:
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
Justas (2004-09-25 03:19:00) [8]Kolan, ты все правильно понял.
Спасибо за ответы!!
- Именно то, что нужно - это если Label.Caption='T' то и форма - Т. Как это сделать?
- И по второму пункту, с полупрозрачной формой - как это можно сделать?
Кстати, у календаря форма не полупрозрачная. Там форма именно имеет форму текста, в данном случае чисел месяца.
Kolan (2004-09-25 02:53:00) [9]AAA Rainlendar - это календарь. И его форма полупрозрачна а на ней числа(дни месяца) по всей видимости те самые label. Так это можно с помошью AIP функций. Спроси у Ya.ru "прозрачная форма && delphi".
P.S. Пришлось програму найти и скачать. Хотя может я и не совсем понял чего хотели-то.
Kolan (2004-09-25 02:43:00) [10]tit - еше Punto Switcher помог :)
Defunct (2004-09-25 02:38:00) [11]Kolan © (25.09.04 02:30) [5]
Наскоко я понял он хочет написать что-то типа "SHOCK" на весь экран, так почему же тогда нельзя обойтись без форм, просто взять DC0 и рисовать прямо на экране.
Kolan (2004-09-25 02:30:00) [12]Блин tit раз че-то я не понял. Ты хочеш чтобы окно было в форме label например если label.caption='T' то и форма - Т.
Или ты просто хочешь, что бы кроме твоих label ничего не было (для второго используй transparency)
Justas (2004-09-25 02:21:00) [13]Спасибо всем!
Насчет регионов. Я делал окно произвольной формы, но основой служил графический файл. Здесь тот же принцип? То есть создавать регионы по форме лэйблов? А если я заранее не знаю, каков их текст?
Kolan (2004-09-25 01:27:00) [14]Могу прислать пример произвольной формы. А вообше. Ya.ru, Google... Примеров очень много.
Piter (2004-09-25 00:23:00) [15]надо использовать регионы.
В справке по WinApi - "Region Creation and Selection"
default (2004-09-24 22:30:00) [16]форму меток...с помощью путей(см. "paths" в SDK) делал давно
компонент так и не был доделан...особенно как узнал что такое уже написано...так что ищи или делай по этому принципу