用API函数在DELPHI中实现“非典型”窗体
现在的一些共享软件特别是一些多媒体播放器软件为了吸引用户,很注重程序界面的设计。实际上,我们使用API函数也可以实现那些好看又另类的效果。
1.异形窗体
窗体只能是方的吗?不是,还可以有其他形状。这要用到两个Win32 API函数。首先用CreateRoundRectRgn()函数在窗体内界定一个椭圆形区域。这里所指的区域(region)是一个特殊的API对象,我们可以在区域内部进行填充和剪裁等操作,从而定义窗体的外部特征。然后调用SetWindowRgn()函数绘制,更进一步还可以再用CombineRgn()函数来合并多个区域,例如在Delphi的单元文件中加入以下代码:
procedure TForm1.FormCreate(Sender: TObject);
var
FRegion1:THandle;
FRegion2:THandle;
begin
FRegion1:=CreateRoundRectRgn(20,20,200,200,300,300);//界定一个椭圆区域
FRegion2:=CreateRectRgn(170,170,400,400);//界定一个矩形区域
CombineRgn(FRegion1,FRegion1,FRegion2,RGN_OR);//将两个区域连接起来
SetwindowRgn(handle,FRegion1,True);//对连接后的区域进行绘制
end;
程序段中的CreateRoundRectRgn()函数用来创建一个圆角矩形区域,它的原型为:
HRGN CreateRou
现在的一些共享软件特别是一些多媒体播放器软件为了吸引用户,很注重程序界面的设计。实际上,我们使用API函数也可以实现那些好看又另类的效果。
1.异形窗体
窗体只能是方的吗?不是,还可以有其他形状。这要用到两个Win32 API函数。首先用CreateRoundRectRgn()函数在窗体内界定一个椭圆形区域。这里所指的区域(region)是一个特殊的API对象,我们可以在区域内部进行填充和剪裁等操作,从而定义窗体的外部特征。然后调用SetWindowRgn()函数绘制,更进一步还可以再用CombineRgn()函数来合并多个区域,例如在Delphi的单元文件中加入以下代码:
procedure TForm1.FormCreate(Sender: TObject);
var
FRegion1:THandle;
FRegion2:THandle;
begin
FRegion1:=CreateRoundRectRgn(20,20,200,200,300,300);//界定一个椭圆区域
FRegion2:=CreateRectRgn(170,170,400,400);//界定一个矩形区域
CombineRgn(FRegion1,FRegion1,FRegion2,RGN_OR);//将两个区域连接起来
SetwindowRgn(handle,FRegion1,True);//对连接后的区域进行绘制
end;
程序段中的CreateRoundRectRgn()函数用来创建一个圆角矩形区域,它的原型为:
HRGN CreateRou