Форум: "Media";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Вниз
Форма формы... Найти похожие ветки
← →
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 вся ветка
Форум: "Media";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c