Как создать непрямоугольное управление

Печать
Статьи

Прежде всего, Вы должны определить форму (иначе говоря, определить регион). Чтобы это сделать, Вы должны использовать одну из функций региона:

  • CreateEllipticRgn
  • CreateEllipticRgnIndirect
  • CreatePolygonRgn
  • CreatePolyPolygonRgn
  • CreateRectRgn
  • CreateRectRgnIndirect
  • CreateRoundRectRgn

После использования одной из этих функций, Вы имеете определенный регион.

В следующем шаге Вы назначаете этот регион на любое управление, с которым Вы работаете. Это можно сделать с использованием функции SetWindowRgn в пределах события FormCreate.

Следующий код делает непрямоугольную форму. Вы можете проверить это, чтобы увидеть результат:


procedure TForm1.FormCreate(Sender: TObject);
var
  points : array [1..5] of TPoint;
  region : hrgn;
begin
  points [1].x:= 10;
  points [1].Y:= 10;
  points [2].x:= 100;
  points [2].y:= 50;
  points [3].x:= 50;
  points [3].y:= 80;
  points [4].x:= 10;
  points [4].y:= 200;
  points [5].x:= 10;
  points [5].Y:= 10;
  region := createpolygonrgn(points, 5, 1);
  SetWindowRgn(form1.handle, region, true);
end;