如何对image作圆处理(20分)

  • 主题发起人 主题发起人 hysuser
  • 开始时间 开始时间
H

hysuser

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能告诉我对窗体上的一个包含bmp图象的image控件做圆处理?
在 form的oncreate事件中用以下代码为什么不行啊?
.......
var rgn:hrgn;
begin
h:=createellipticrgn(0,0,image1.with,image1.height);
setwindowrgn(image1.canvas.handle,h,true);
end;
怎么办呢?
 
因为SetWindowRgn()要求的是一个窗口的HWND,而TImage不是一个窗口(TWinControl),
Image1.Canvas.Handle是一个HDC,不是窗口Handle。
如果你把Image1.Canvas.Handle改成Form1.Handle,效果就出来了。
 
to skyweb
我现在就是想要把效果做到image上啊,那该如何做啊
 
将image放到panel上,对panel设置即可
 
直接是不能的,也不理想的,做成一个vcl就行了。
 
把一个image放在一个Panel上,并设Align=alClient,
然后用那个Panel的Handle来做SetWindowRgn。
因为TPanel是从TWinControl继承的,所以有Window Handle。
 
多人接受答案了。
 
后退
顶部