本文将介绍如何利用Windows提供的制作界面函数制作一个多边形窗体
制作多边形窗体的关键在于设定多边形的区域并根据这个指定的区域改变窗体的形状Windows的CreatePolygonRgn和SetWindowRgn函数可以解决这两个难点
利用以下代码即可将窗体设置为一个五边形
procedure TFormFormCreate(Sender: TObject);
var
pt: array [] of TPoint;
m_rgn: HRGN;
begin
pt[]x:=selfWidth div ;
pt[]y:=;
pt[]x:=;
pt[]y:=selfHeight div ;
pt[]x:=selfWidth div ;
pt[]y:=selfHeight;
pt[]x:=selfWidth;
pt[]y:=selfHeight div ;
pt[]x:=selfWidth;
pt[]y:=;
m_rgn:=CreatePolygonRgn(ptWINDING);
SetWindowRgn(selfHandlem_rgnTRUE);
end;
该程序首先定义了一个TPoint类型的数组pt在其中存储了一个五边形的数据然后使用CreatePolygonRgn函数将这个五边形转换成为一个区域最后使用SetWindowRgn函数根据五边形指定的区域改变窗体的形状
程序代码如下
unit Unit;
interface
uses
Windows Messages SysUtils Variants Classes Graphics Controls Forms
Dialogs;
type
TForm = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form: TForm;
implementation
{$R *dfm}
procedure TFormFormCreate(Sender: TObject);
var
pt: array [] of TPoint;
m_rgn: HRGN;
begin
pt[]x:=selfWidth div ;
pt[]y:=;
pt[]x:=;
pt[]y:=selfHeight div ;
pt[]x:=selfWidth div ;
pt[]y:=selfHeight;
pt[]x:=selfWidth;
pt[]y:=selfHeight div ;
pt[]x:=selfWidth;
pt[]y:=;
m_rgn:=CreatePolygonRgn(ptWINDING);
SetWindowRgn(selfHandlem_rgnTRUE);
end;
end
保存文件然后按F键运行程序结果如图所示
图 程序运行结果制作多边形窗体的方法并不止本实例所介绍的一种后面还会涉及到如何制作更为复杂的窗体希望读者多加体会制作出更加有个性的窗体