如何制作一个中间是透明矩形的控件?

linx88 2003-10-16 03:51:13
如:制作一个回字形的panel.有没有办法?能不能实现?
...全文
54 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dickeybird888 2003-10-16
  • 打赏
  • 举报
回复
我是采用createpolygonrgn画多边型的方法,你也可以采用画巨型的方法!
dickeybird888 2003-10-16
  • 打赏
  • 举报
回复
我给你举个例子把,方法是这样在panel上放一个image,然后在image上画巨型然后填充设置image的属性为透明,就可以了,话巨型的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
FRgn :HRGN;
pt :array [0..3] of TPoint;
begin
image1.Canvas.brush.color:=clRed;
pt[0] :=Point(0,0);
pt[1] :=Point(20,0);
pt[2] :=Point(20,140);
pt[3] :=Point(0,140);
Image1.Canvas.Polygon(pt);
FRgn :=CreatePolygonRgn(pt,4,Winding);
pt[0] :=Point(0,0);
pt[1] :=Point(140,0);
pt[2] :=Point(140,20);
pt[3] :=Point(20,20);
Image1.Canvas.Polygon(pt);
FRgn :=CreatePolygonRgn(pt,4,Winding);
pt[0] :=Point(140,0);
pt[1] :=Point(120,20);
pt[2] :=Point(120,140);
pt[3] :=Point(140,140);
Image1.Canvas.Polygon(pt);
FRgn :=CreatePolygonRgn(pt,4,Winding);
pt[0] :=Point(140,140);
pt[1] :=Point(120,120);
pt[2] :=Point(20,120);
pt[3] :=Point(0,140);
Image1.Canvas.Polygon(pt);
FRgn :=CreatePolygonRgn(pt,4,Winding);
fillrgn(image1.canvas.handle,frgn,image1.canvas.brush.handle);

end;
DongXF 2003-10-16
  • 打赏
  • 举报
回复
用TBevel不就行了
pankun 2003-10-16
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
hRgn1, hRgn2: THandle;
begin
hRgn1 := CreateRectRgn(0, 0, 100, 100);
hRgn2 := CreateRectRgn(10, 10, 90, 90);
CombineRgn(hRgn1, hRgn1, hRgn2, RGN_DIFF);
SetWindowRgn(Panel1.Handle, hRgn1, True);
end;
这段代码可以让Panel变成回字.
pankun 2003-10-16
  • 打赏
  • 举报
回复
应该可以.先占个位...试试去.

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧