|
本文将介绍如何利用Windows提供的制作界面函数制作一个多边形窗体。 制作多边形窗体的关键在于设定多边形的区域,并根据这个指定的区域改变窗体的形状。Windows的CreatePolygonRgn和SetWindowRgn函数可以解决这两个难点。 利用以下代码即可将窗体设置为一个五边形: procedure TForm1.FormCreate(Sender: TObject); var pt: array [0..4] of TPoint; m_rgn: HRGN; begin pt[0].x:=self.Width div 2; pt[0].y:=0; pt[1].x:=0; pt[1].y:=self.Height div 2; pt[2].x:=self.Width div 2; pt[2].y:=self.Height; pt[3].x:=self.Width; pt[3].y:=self.Height div 2; pt[4].x:=self.Width; pt[4].y:=0; m_rgn:=CreatePolygonRgn(pt,5,WINDING); SetWindowRgn(self.Handle,m_rgn,TRUE); end; 该程序首先定义了一个TPoint类型的数组pt,在其中存储了一个五边形的数据。然后使用CreatePolygonRgn函数将这个五边形转换成为一个区域,最后使用SetWindowRgn函数,根据五边形指定的区域改变窗体的形状。 程序代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var pt: array [0..4] of TPoint; m_rgn: HRGN; begin pt[0].x:=self.Width div 2; pt[0].y:=0; pt[1].x:=0; pt[1].y:=self.Height div 2; pt[2].x:=self.Width div 2; pt[2].y:=self.Height; pt[3].x:=self.Width; pt[3].y:=self.Height div 2; pt[4].x:=self.Width; pt[4].y:=0; m_rgn:=CreatePolygonRgn(pt,5,WINDING); SetWindowRgn(self.Handle,m_rgn,TRUE); end; end.
|