你见过这样屏幕保护程序的效果吗?屏幕中央出现一个圆形区域,区域中是一幅图,随着圆形区域的逐渐扩大,这幅图便画满了整个屏幕,另一种效果相反,是以圆形逐渐缩小的方式来显现的,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"。