首页  编辑  

图形的不规则的Copy

Tags: /超级猛料/Picture.图形图像编程/图片处理/   Date Created:

你见过这样屏幕保护程序的效果吗?屏幕中央出现一个圆形区域,区域中是一幅图,随着圆形区域的逐渐扩大,这幅图便画满了整个屏幕,另一种效果相反,是以圆形逐渐缩小的方式来显现的,Windows的Blt函数都是基于矩形拷贝的,没有其它多边形的拷贝,所以实现这一效果肯定是用剪裁区域一类的方法来做的。

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"。