呵呵,是你的用法错了,下面是创建三角行的代码:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
const
MyRgn: array[1..8] of integer = (2,135,
115,22,228,135,2,135); //区域坐标var
HR: HRGN;{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
HR := CreatePolygonRgn(MyRgn,4,ALTERNATE); //创建一个区域
SetWindowRgn(Form1.Handle,HR,False); // 设置窗口区域
UpdateWindow(Form1.Handle); //更新窗口
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
const
MyRgn: array[1..8] of integer = (2,135,
115,22,228,135,2,135); //区域坐标var
HR: HRGN;{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
HR := CreatePolygonRgn(MyRgn,4,ALTERNATE); //创建一个区域
SetWindowRgn(Form1.Handle,HR,False); // 设置窗口区域
UpdateWindow(Form1.Handle); //更新窗口
end;end.
解决方案 »
- 有没有bussinessSkin皮肤的专业制作公司,各位大神推荐一下
- 高分求SQL语句
- delphi的版本..........
- 线程执行函数的基本问题,放在主程序程序下没问题 放在线程下就不行了
- 如何保存RichEdit中文字的字体(如:下划线、上下标等)
- 请教!!!
- 关于手机短信息和手机 MODEN卡的问题
- 能不能在一台机器上读取另一台机器的串口数据?
- 缺少cystal_tlb.pas和dcr文件 如何取得
- 关于调用C++编写的DLL的问题,急急急!
- 谁有Delphi5 Update Pack1 Enterprise Edition的SerialNumber和AuthorizationKey
- 我如何对一条已存在的的数据里的图像字段,进行修改或删除?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
TPtArray =array[0..6] of TPoint;
PPtArray =^TPtArray;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationvar
R :HRGN;
P :PPtArray;{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
GetMem(P,7*sizeof(TPoint));
P^[0].X:=0;
P^[0].Y:=10;
P^[1].X:=29;
P^[1].Y:=P^[1].Y;
P^[2].X:=29;
P^[2].Y:=0;
P^[3].X:=325;
P^[3].Y:=0;
P^[4].X:=325;
P^[4].Y:=240;
P^[5].X:=29;
P^[5].Y:=240;
P^[6].X:=29;
P^[6].Y:=15;
R :=CreatePolygonRgn(P,7,ALTERNATE);
SetWindowRgn(Handle,R,false); //这里用false
FreeMem(P,7*sizeof(TPoint));
UpdateWindow(Form1.Handle); //要更新窗口end;end.
主要是UpdateWindow函数的使用和SetWindowRgn时的false(true时无法显示),多交流,呵呵~~ (给分~~)
const
MyRgn: array[1..8] of integer = (2,135,
115,22,228,135,2,135); //区域坐标
+
HR := CreatePolygonRgn(MyRgn,4,ALTERNATE); //创建一个区域
SetWindowRgn(Form1.Handle,HR,False); // 设置窗口区域
UpdateWindow(Form1.Handle); //更新窗口
方法吧,其中的MyRgn数组是两位一个坐标点的,对于n边形,有n+1个坐标点,并要保证个个点的组合图形是封闭的。
TPtArray =array[0..6] of TPoint;
PPtArray =^TPtArray;
var
R :HRGN;
P :PPtArray;
begin
GetMem(P,7*sizeof(TPoint));
P^[0].X:=0;
P^[0].Y:=10;
P^[1].X:=29;
P^[1].Y:=P^[1].Y;////<<<<<<<<<<<<<<这一行错了
P^[2].X:=29;
P^[2].Y:=0;
P^[3].X:=325;
P^[3].Y:=0;
P^[4].X:=325;
P^[4].Y:=240;
P^[5].X:=29;
P^[5].Y:=240;
P^[6].X:=29;
P^[6].Y:=15;
R :=CreatePolygonRgn(P,7,ALTERNATE);////返回值为0
SetWindowRgn(Handle,R,True);
FreeMem(P,7*sizeof(TPoint));
end;