Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форма формы... [D6, Win95/98, Win2k]


Sam Stone ©   (2002-10-02 18:37:00) 

У меня такой вот вопрос: как проще нарисовать форму нестандартной формы(такой вот каламбур)? Я облазил много ресурсов, но там ничего особенного нет. Все через Create<что-нить>Rgn(). Но для создания чего-то сложного(ну, например, форма в виде кляксы...) приходится помучиться. Если кто знает способ попроще - поможите, пожалуйста!!!


Sapersky_   (2002-10-05 18:25:00) [1]

Можно через paths. Это такая штука для записи всех GDI команд. Так что кляксу можно нарисовать гораздо проще, чем вручную регионами.
Вот, например, такой пример (rgn - регион (HRgn), handle - handle окна, оно должно быть достаточно большого размера, где-то 640*480).

Var
DC : HDC;
Font : HFont;
begin
DC:=GetDC(Handle);
Font:=CreateFont
(150,0,0,0,0,0,0,0,0,0,0,0,0,PChar("Comic Sans MS"));
DeleteObject(SelectObject(DC,Font));
SetBkMode(DC,1);
BeginPath(DC);
TextOut(DC, 0, 0, PChar("Hello world!"), 12);
EndPath(DC);
rgn:=PathtoRegion(DC); // одним изящным движением
// брюки превращаются... :)
SetWindowRgn(Handle,rgn,True);
If (Font<>0) then DeleteObject(Font);
ReleaseDC(Handle,DC);
end;

Ещё желательно в обработчик сообщений добавить

WM_LBUTTONDOWN : begin
ReleaseCapture;
WindowProc(Handle,WM_SysCommand, SC_DragMove, 0);
end;

- дабы полученное... хм... окно :) можно было таскать по экрану.


Manulo   (2002-10-04 14:04:00) [2]

http://ssu5.sumdu.edu.ua/~op/

Делали с год назад сайт... Тама есть реальный пример проги, работающей с полигонами и рисующее окно в форме звезды, да ещё и с дыркой посредине + довольно неплохой фак по теме


Sam Stone   (2002-10-03 15:41:00) [3]

Ну и намучался я с этой FormRgn. Дельфя то у меня 6ая - пришлось кой-чего подправить. На delphi.vitpc.com, кстати, есть LogoMaker - тоже хорошая вещь


MBo   (2002-10-02 20:07:00) [4]

delphi.vitpc.com
FormRgn А.Григорьева


Sam Stone   (2002-10-02 19:59:00) [5]


> Положи на форму картинку с кляксой, а саму форму сделай
> невидимой


> Sorry. Все равно регионы нужны

а можно как-нить в программе пройтись по рисунку и создать форму с помощью CreatePolygonRgn? Я одну прогу такую скачал(в нее грузишь бмп и она, судя по всему, просто берет координаты всех точек на границе рисунка. Данная прога зовется Shaper, качнул с download.ru->программрование->Delphi), но там описывается массив array [1..1000000] of TPoint и дельфя это не полюбила. Что-нить аналогичное сообразить мона?


Peter Gluhiy   (2002-10-02 19:29:00) [6]

Sorry. Все равно регионы нужны


Peter Gluhiy   (2002-10-02 19:03:00) [7]

Положи на форму картинку с кляксой, а саму форму сделай невидимой.


MBo   (2002-10-02 18:52:00) [8]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо