请问RGN是什么类型? ( 积分: 20 )

  • 主题发起人 主题发起人 tiantianyao
  • 开始时间 开始时间
T

tiantianyao

Unregistered / Unconfirmed
GUEST, unregistred user!
我在看设计不规则界面的时候,他定义了 x: HRgn;。请问是什么类型来的,这个我从书上从来没有看过。请指点。
 
我在看设计不规则界面的时候,他定义了 x: HRgn;。请问是什么类型来的,这个我从书上从来没有看过。请指点。
 
Use this operator to get the attached Windows GDI handle of the CRgn object.
 
老大,你可不可以说说是什么意思啊,你这样回答我,我怎么知道什么意思啊,你不会是为了我的分数就在这里叫个不停吧[:(]
 
>>你不会是为了我的分数就在这里叫个不停吧
丫的,我才回答一句啊.
看不懂英文就不要乱讲话.

靠,找别人去吧!
 
靠啊。找别人这句话你不能乱说啊。是你不要乱回答别人的问题啊
 
就当成是象画笔那样的Windows资源就可以了

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
ImgForm: TImage;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ImgFormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ImgFormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
var
myX, myY : Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Rgn : HRgn;
begin
//创建一个椭圆形区域
Rgn := CreateEllipticRgn(0,0,Width,Height);
SetWindowRgn(Handle,Rgn,True);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Rgn : HRgn;
begin
//创建一个圆角矩形区域
Rgn := CreateRoundRectRgn(0,0,Width,Height,50,50);
SetWindowRgn(Handle,Rgn,True);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
HR: HRGN;
begin
try
ImgForm.Picture := nil;
ImgForm.AutoSize := TRUE;
ImgForm.Picture.LoadFromFile('C:/Test.bmp');
if (ImgForm.Width<=0) or (ImgForm.Height<=0) then
Abort
else begin
Self.ClientWidth := ImgForm.Width;
Self.ClientHeight := ImgForm.Height;
end
except
end;

HR := CreateRoundRectRgn(0, 0, ClientWidth, ClientHeight, 30, 30);
SetWindowRgn(Self.Handle, HR, TRUE);
end;

procedure TForm1.ImgFormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not Self.Visible then Exit;

if (ssLeft in Shift) then
begin
Self.Left := Self.Left + X - myX;
Self.Top := Self.Top + Y - myY;
end;
end;

procedure TForm1.ImgFormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
myX := X;
myY := Y;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
Rgn : HRgn;
begin
//开始绘制路线
BeginPath(Canvas.Handle);
//设置背景填充模式为透明填充(缺省不透明方式OPAQUE)
SetBkMode(Canvas.Handle,TRANSPARENT);
Canvas.Font.Name := '哈哈哈';
CanVas.Font.Size := 80;
CanVas.TextOut(20,20,'哈哈哈');
Canvas.Font.Name := '是窗体?';
CanVas.Font.Size := 80;
CanVas.TextOut(150,150,'是窗体?');
EndPath(Canvas.Handle);
Rgn := PathToRegion(Canvas.Handle);
Color := clRed;
SetWindowRgn(Handle,Rgn,True);
end;

end.
 
在VC中,是区域句柄类型。--句柄类型!
 
楼主请自重,rgn就是区域的意思,和画笔画刷等都是windows的GDI资源
 

Similar threads

回复
0
查看
1K
不得闲
回复
0
查看
894
不得闲
回复
0
查看
892
不得闲
回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部