如何复制圆形的图像到目标画布, 能否在抓屏时不抓到程序自己的窗口(窗口正常显示时)(150分)

  • 主题发起人 主题发起人 jianping0
  • 开始时间 开始时间
J

jianping0

Unregistered / Unconfirmed
GUEST, unregistred user!
copyrect,bitblt 都是复制矩形图像到目标画布,
不知如何复制圆形的图像到目标画布?
 
第一个问题可以了.
第二个问题,有谁知道吗?
 
[:D]
拷贝包含这个圆形的最小矩形,使用
CreateEllipticRgn
The CreateEllipticRgn function creates an elliptical region.

HRGN CreateEllipticRgn(
int nLeftRect, // x-coord of upper-left corner of rectangle
int nTopRect, // y-coord of upper-left corner of rectangle
int nRightRect, // x-coord of lower-right corner of rectangle
int nBottomRect // y-coord of lower-right corner of rectangle
);
设置显示的圆形区域,直接paint就可以了。

 
实际上是圆形的拷贝问题:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Bmp :TBitmap;
FRgn :HRGN;
begin
Bmp :=TBitmap.Create;
Bmp.PixelFormat :=Image1.Picture.Bitmap.PixelFormat;
Bmp.Width :=100;
Bmp.Height :=100;
BitBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height,Image1.Canvas.Handle,80,80,SRCCOPY); //要拷贝的位图
FRgn :=CreateEllipticRgn(0,0,100,100);
SelectClipRgn(Image1.Canvas.Handle,FRgn);
Image1.Canvas.Draw(0,0,Bmp);
Bmp.Free;
DeleteObject(FRgn);
end;
 
怎么在抓屏时不抓到程序自己的窗口?
 
如果需要一个渐变的边界效果,用卷起千堆雪tyn方法就不行了
 
to jianping0:
抓屏不抓自己的窗口,我做好了。
由于某些原因,我想发到你的MAIL,怎么样?
谢谢。
 
多人接受答案了。
 
卷起千堆雪tyn:
不知道还能不能把你的例子发给我.
jianping0@163.com
谢谢.
 
后退
顶部