Delphi用Windows界面函數(shù)設(shè)計(jì)多邊形窗體
時(shí)間:2009-04-10 15:20:00 來(lái)源:無(wú)憂考網(wǎng) [字體:小 中 大]
制作多邊形窗體的關(guān)鍵在于設(shè)定多邊形的區(qū)域,并根據(jù)這個(gè)指定的區(qū)域改變窗體的形狀。Windows的CreatePolygonRgn和SetWindowRgn函數(shù)可以解決這兩個(gè)難點(diǎn)。
利用以下代碼即可將窗體設(shè)置為一個(gè)五邊形:
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;
該程序首先定義了一個(gè)TPoint類型的數(shù)組pt,在其中存儲(chǔ)了一個(gè)五邊形的數(shù)據(jù)。然后使用CreatePolygonRgn函數(shù)將這個(gè)五邊形轉(zhuǎn)換成為一個(gè)區(qū)域,最后使用SetWindowRgn函數(shù),根據(jù)五邊形指定的區(qū)域改變窗體的形狀。
程序代碼如下:
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鍵運(yùn)行程序
利用以下代碼即可將窗體設(shè)置為一個(gè)五邊形:
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;
該程序首先定義了一個(gè)TPoint類型的數(shù)組pt,在其中存儲(chǔ)了一個(gè)五邊形的數(shù)據(jù)。然后使用CreatePolygonRgn函數(shù)將這個(gè)五邊形轉(zhuǎn)換成為一個(gè)區(qū)域,最后使用SetWindowRgn函數(shù),根據(jù)五邊形指定的區(qū)域改變窗體的形狀。
程序代碼如下:
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鍵運(yùn)行程序