您现在的位置:天新网 > 软件开发 > 开发语言 > Delphi开发 > Delphi技巧
WinAPI: CreatePolyPolygonRgn - 建立多个多边形构成的区域
2009年11月06日 博客园 万一
1 2 下一页
本例效果图:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var f: Boolean = False;
procedure TForm1.FormClick(Sender: TObject);
const
n = 50;
var
ps: array[0..6] of TPoint;
ns: array[0..1] of Integer;
Rgn: HRGN;
i: Integer;
begin
Refresh;
ps[0] := Point(n, n div 2);
ps[1] := Point(n, ClientHeight - n);
ps[2] := Point(ClientWidth - n, ClientHeight - n);
ps[3] := Point(ClientWidth - n, n div 2);
ps[4] := Point(ClientWidth div 2, n);
ps[5] := Point(n div 2, ClientHeight - n div 2);
ps[6] := Point(ClientWidth - n div 2, ClientHeight - n div 2);
ns[0] := 4;
ns[1] := 3;
{建立多个多边形构成的区域}
if f then
begin
Rgn := CreatePolyPolygonRgn(ps, ns, Length(ns), WINDING);
Text := 填充模式: WINDING;
end else begin
Rgn := CreatePolyPolygonRgn(ps, ns, Length(ns), ALTERNATE);
Text := 填充模式: ALTERNATE;
end;
f := not f;
{填充区域}
Canvas.Brush.Color := clSilver;
Canvas.Brush.Style := bsCross;
FillRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle);
{绘制区域边界}
Canvas.Brush.Color := clRed;
Canvas.Brush.Style := bsSolid;
FrameRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle, 2, 2);
Canvas.Brush.Color := Self.Color;
for i := 0 to Length(ps) do
Canvas.TextOut(ps[i].X, ps[i].Y, IntToStr(i));
DeleteObject(Rgn);
end;
end.
上一篇: WinAPI: CreateEllipticRgn、CreateEllipticRgnIndirect - 建立椭圆区域
下一篇: WinAPI: CreateRectRgn、CreateRectRgnIndirect、FillRgn、FrameRgn - 建立矩形区域
1 2 下一页
相关内容