![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 30.04.2007
Сообщений: 0
|
![]()
Дело в том, что я хочю предать моей программе изящиный вид, а не вид обычной прямоугольной формы. Пожалуста помогитерешить мне решить эту проблему.
|
![]() |
![]() |
![]() |
#2 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Помогаюрешить тебе решить проблему
![]() Способ 1й, простой: Если надо форма с дырками или любой формы (тафтология блин): кидай на форму TImage; align=alClient, загружай в нее рисунок с изображением красивого окна, убирай заголовок, прозрачные области на рисунке делаешь цветом к примеру #FF00FF (гадский розовый clFuchsia), в свойствах формы Transparent=true, Transparentcolor=clFuchsia, F9 -> получишь форму в виде своего рисунка с дырками вместо розового цвета. Способ 2й, ещё проще: Качай кучу красивых и тяжелых компонентов http://www.alphaskins.com и наряжай свою "ёлку" как угодно. И без того крупные дельфийские программы заметно потолстеют
пыщь
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 321
|
![]()
Это проще сделать при помощи так называемых регионов:
procedure TForm1.FormActivate(Sender: TObject); var Region: HRGN; begin Region := CreateEllipticRgn(0, 0, 300, 300); SetWindowRgn(Handle, Region, True); end; в результате получаем круг. используются также полигоны и прочее... |
![]() |
![]() |
![]() |
#4 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Конечно проще, и быстрее и правильнее и всё такое, но с полигонами сильно не разгуляешься, сложную форму будет трудно создать
пыщь
|
![]() |
![]() |
![]() |
#5 |
stopfake.org
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,927
|
![]()
Если надо придать окну только форму, как на рисунке window, то рисуй как на рисунке beautwindow. И в свойствах формы устанавливай form1.TransparentColor:=цвет рамки (показываться не будет) и Form1.transparent... =true(точно не помню, дельфы под рукой нету)
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 24.01.2007
Сообщений: 323
|
![]()
такая тема тут ужэ не впервые поднималась...
![]()
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
![]() |
![]() |
![]() |
![]() |
#7 |
Embedder
Пользователь
Регистрация: 01.11.2006
Сообщений: 68
|
![]()
Используй компоненты BusinessSkinForm
http://www.realcoding.net/downloads/view/2767
[SHIFT] вправо, [SHIFT] влево считается [ESCAPE]ом и карается REBOOTом!
|
![]() |
![]() |
![]() |
#8 |
.NET-чик
Форумчанин
Регистрация: 24.03.2007
Сообщений: 569
|
![]()
или вот еще эти можеш тоже использовать http://www.saarixx.info/sxskincomponents/ru/
Интересные компоненты со скинами
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок ![]() Последний раз редактировалось OrdJONY; 08.06.2007 в 11:27. |
![]() |
![]() |
![]() |
#9 |
With best regards
Участник клуба
Регистрация: 20.04.2007
Сообщений: 1,448
|
![]()
дополнение к первому способу JTG:
///// function CreateRgnFromBitmap(rgnBitmap:TBitm ap):HRGN; var TransColor:TColor; i,j:integer; I_Width,i_height:integer; i_left,i_right:integer; rectrgn:hrgn; begin result:=0; i_width:=rgnBitmap.Width; i_height:=rgnBitmap.Height; TransColor:=rgnBitmap.Canvas.Pixels[0,0]; For i:=0 to i_height-1 do begin i_left:=-1; for j:= 0 to i_width-1 do begin if i_left<0 then begin if rgnBitMap.Canvas.Pixels[i,j]<>transcolor then i_left:=j; end else if rgnBitMap.Canvas.Pixels[i,j]=transcolor then begin i_right:=j; rectrgn:=CreateRectrgn(i_left,i,i_r ight,i+1); if result=0 then Result:=rectrgn else begin Combinergn(result,result,rectrgn,RG N_OR); DeleteObject(rectRgn); end; i_left:=-1; end; end; if i_left>=0 then begin rectrgn:=CreateRectRgn(i_left,i,i_w idth,i+1); if Result=0 then Result:=rectRgn else begin CombineRgn(Result,Result,rectrgn,RG N_OR); DeleteObject(rectRgn); end; end; end; end; //// procedure TForm1.FormCreate(Sender: TObject); var WindowRgn:HRGN; begin BorderStyle:=bsNone; ClientWidth:=Image1.Picture.Bitmap. Width; ClientHeight:=Image1.Picture.Bitmap .Height; windowrgn:=CreateRgnFromBitMap(imag e1.Picture.Bitmap); SetWindowRgn(Handle,windowrgn,True) ; ... end; ////////////// В Image1 загружен растр, с "одноцветным фоном (по левому верхнему пикселю)" который определяется функцией CreateRgnFromBitmap и "просвечивается" область на форме. P.S.: по ссылкам не ходил, так что сорри если повторяю.
Life is too short, play more...
Как правильно задавать вопросы |
![]() |
![]() |
![]() |
#10 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
В дополнение способа Алекса
© Фленов Михаил (smirnandr@mail.ru) ![]()
пыщь
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Добавить фОРМУ... | prog38 | Помощь студентам | 4 | 02.07.2008 09:07 |
Как сделать форму? | HAMMAN | Помощь студентам | 1 | 29.01.2008 22:11 |
Про форму | Marsik | Помощь студентам | 2 | 03.11.2007 14:53 |