本文將介紹如何利用Windows提供的制作界面函數制作一個多邊形窗體
制作多邊形窗體的關鍵在於設定多邊形的區域
並根據這個指定的區域改變窗體的形狀
Windows的CreatePolygonRgn和SetWindowRgn函數可以解決這兩個難點
利用以下代碼即可將窗體設置為一個五邊形
procedure TForm
FormCreate(Sender: TObject);
var
pt: array [
] of TPoint;
m_rgn: HRGN;
begin
pt[
]
x:=self
Width div
;
pt[
]
y:=
;
pt[
]
x:=
;
pt[
]
y:=self
Height div
;
pt[
]
x:=self
Width div
;
pt[
]
y:=self
Height;
pt[
]
x:=self
Width;
pt[
]
y:=self
Height div
;
pt[
]
x:=self
Width;
pt[
]
y:=
;
m_rgn:=CreatePolygonRgn(pt
WINDING);
SetWindowRgn(self
Handle
m_rgn
TRUE);
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 TForm
FormCreate(Sender: TObject);
var
pt: array [
] of TPoint;
m_rgn: HRGN;
begin
pt[
]
x:=self
Width div
;
pt[
]
y:=
;
pt[
]
x:=
;
pt[
]
y:=self
Height div
;
pt[
]
x:=self
Width div
;
pt[
]
y:=self
Height;
pt[
]
x:=self
Width;
pt[
]
y:=self
Height div
;
pt[
]
x:=self
Width;
pt[
]
y:=
;
m_rgn:=CreatePolygonRgn(pt
WINDING);
SetWindowRgn(self
Handle
m_rgn
TRUE);
end;
end
保存文件
然後按F
鍵運行程序
結果如圖
所示
圖 程序運行結果 制作多邊形窗體的方法並不止本實例所介紹的一種
後面還會涉及到如何制作更為復雜的窗體
希望讀者多加體會
制作出更加有個性的窗體
From:http://tw.wingwit.com/Article/program/Delphi/201311/8430.html