Форум: "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.03 c