Окна нестандартной формы создаются с помощью регионов. А работа с регионами в GDI+ легка и приятна.
В примере в качестве региона рассмотрена строка текста, но ничто не мешает использовать различные примитивы или даже изображения (Bitmap).
Для использования изображения в качестве региона необходимо просканировать его пиксел за пикселем, опуская выбранный в качестве прозрачного цвет, и добавляя к региону квадратные области размером в 1 пиксел:
region.Union(MakeRect(x, y, 1, 1))
Пример:
procedure TForm1.FormCreate(Sender: TObject); var region: TGPRegion; hRegion: HRGN; path: TGPGraphicsPath; font_family: TGPFontFamily; string_format: TGPStringFormat; text: string; g: TGPGraphics; begin g := TGPGraphics.Create(Canvas.Handle); path := TGPGraphicsPath.Create(); // создаем графический путь font_family := TGPFontFamily.Create(\'Arial\'); // определяем шрифт string_format := TGPStringFormat.Create(); text := \'Не ешьте мой\'#13#10\'моск\'; path.AddString(text, -1, font_family, FontStyleBold, 120, MakePoint(0, 10), string_format); region := TGPRegion.Create(path); // определяем регион из созданного пути hRegion := region.GetHRGN(g); SetWindowRgn(Handle, hRegion, true); // устанавливаем область отсечения g.Free; path.Free; region.Free; end;


Создание окон нестандартной формы с помощью GDI+
