位图上不规则区域的拷贝(200分)

  • 主题发起人 主题发起人 dragonchow
  • 开始时间 开始时间
D

dragonchow

Unregistered / Unconfirmed
GUEST, unregistred user!
像windows画板那样用鼠标画出一个不规则区域,然后可以对此区域里的内容进行移动,剪切,拷贝等操作
 
至于非矩形的拷贝,一般还是运用 BitBlt 来实现的;
不过你需要首先创建区域,然后 SelectClipRgn 就OK 。

小小例子:

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;
 
这个拷贝好像只能针对bmp图象的,如果是jpeg图象,怎么处理?
 
先转成bmp嘛,嘻嘻,你有看Photoshop吗,它都是将所有图形格式转成了bmp的
 
我这里有一个经典的例子,上面很多功能,你要?发给你!
 
to huazai :
我想要一个,能发给我吗?
mikko11@163.com,谢谢
 
后退
顶部