Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

Форма формы...   Найти похожие ветки 

 
Sam Stone   (2002-10-02 18:37) [0]

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


 
MBo ©   (2002-10-02 18:52) [1]

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


 
Peter Gluhiy ©   (2002-10-02 19:03) [2]

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


 
Peter Gluhiy ©   (2002-10-02 19:29) [3]

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


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


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


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

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


 
MBo ©   (2002-10-02 20:07) [5]

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


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

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


 
Manulo ©   (2002-10-04 14:04) [7]

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

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


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

Можно через 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;

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



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

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
3-72078
Mic_2000
2002-12-28 10:40
2003.01.23
Как организовать ввод данных в DBGrid через IBQuery?


1-72199
Олег
2003-01-14 11:12
2003.01.23
---|Ветка была без названия|---


1-72329
Нежить
2003-01-11 22:43
2003.01.23
CM_MOUSEENTER etc. Можно ли словить, не содавая потомка?


14-72501
Шоломицкий
2003-01-06 14:59
2003.01.23
Кто-нить пробовал программу DESKBUTTONS?


1-72270
Andy BitOff
2003-01-10 19:45
2003.01.23
Drag n Drop