本文将介绍如何利用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. | 保存文件,然后按F9键运行程序,结果如图1-3所示。
 图 程序运行结果 | 制作多边形窗体的方法并不止本实例所介绍的一种,后面还会涉及到如何制作更为复杂的窗体,希望读者多加体会,制作出更加有个性的窗体。
|
|