关于图形裁切并且保存为文件的问题

雄蜂 2005-07-20 09:55:23
我想将一个图形的选中部分保存为另外的文件,处理的文件格式为bmp或jpeg。请问如何实现这样的效果:
1、有一个由鼠标拖放控制的矩形选择框在图形上选定,选定部分之外的部分显示为阴影;
2、选定部分用另存为其他图形文件。
...全文
168 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
aloking 2005-08-01
  • 打赏
  • 举报
回复
procedure TForm_DealPic.PaintBox1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
rgn :HRgn;
bmp,bmp0 :TBitmap;
begin
x2:=X;
y2:=Y;
bmp :=TBitmap.Create;
bmp.Assign(Image1.Picture.Bitmap);
if (x2>bmp.Width) or (y2>bmp.Height) then
begin
//showmessage('区域出界');
bmp.free;
exit;
end;
//PaintBox1.Canvas.
PaintBox1.Canvas.Pen.Color:=clred;
PaintBox1.Canvas.MoveTo(x1,y1);
PaintBox1.Canvas.LineTo(x1,y2);
PaintBox1.Canvas.LineTo(x2,y2);
PaintBox1.Canvas.LineTo(x2,y1);
PaintBox1.Canvas.LineTo(x1,y1);
////////
////////
//Image1.Picture.Assign(nil);
rgn :=CreateRectRgn(x1,y1,x2,y2);
SelectClipRgn(bmp.Canvas.Handle,rgn);
bmp0 :=TBitmap.Create;
bmp0.Width :=abs(x2-x1);
bmp0.Height :=abs(y2-y1);
BitBlt(bmp0.Canvas.Handle,0,0,abs(x2-x1),abs(y2-y1),bmp.Canvas.Handle,x1,y1,SRCCOPY);
Image2.Picture.Bitmap.Assign(bmp0);
bmp.Free;
bmp0.Free;
////////
end;
以前写的,顺手贴给你
aimeoo 2005-07-29
  • 打赏
  • 举报
回复
刚完成你要的效果!
绝缘 2005-07-29
  • 打赏
  • 举报
回复
哎...网上去找找吧..Delphi是最好实现的了.!可惜我现在遇到的问题更是郁闷!远程桌面,接收到JPG图像数据(内存中)后,没办法让它直接显示在控件中...
雄蜂 2005-07-26
  • 打赏
  • 举报
回复
唉,有大虾来说说么?
jemyzhang 2005-07-26
  • 打赏
  • 举报
回复
兄弟,不要等别人的现成代码了,大家给了你思路,你可以自己动动手啊。这样你可以学到很多的东西。
雄蜂 2005-07-21
  • 打赏
  • 举报
回复
请问哪里有现成的源代码。
雄蜂 2005-07-21
  • 打赏
  • 举报
回复
哪位好心人帮帮忙呀。
zzlingaaa 2005-07-21
  • 打赏
  • 举报
回复
不熟悉delphi就直接去找现成的源代码吧,在这里问,问不出很完美的结果的
mxd6819318 2005-07-21
  • 打赏
  • 举报
回复
用一个按钮控件实现原图片的复制,如果区域不合适,点击这个按钮就把不合适的区域擦除了(恢复为原图)。
复制位图函数为copyme():
procedure CopyMe(tobmp: TBitmap; frbmp : TGraphic);
begin
tobmp.Width := frbmp.Width;
tobmp.Height := frbmp.Height;
tobmp.PixelFormat := pf24bit;
tobmp.Canvas.Draw(0,0,frbmp);
end;
雄蜂 2005-07-20
  • 打赏
  • 举报
回复
还有我希望得到的效果是画矩形时得到矩形的绘制过程,即鼠标拖动的矩形,还有一种是矩形已经存在进行位置改变拖动,还有就是当发现矩形区域不合适需要进行擦除。
雄蜂 2005-07-20
  • 打赏
  • 举报
回复
请给出具体代码好么?delphi我还不是太熟悉代码编写。
jemyzhang 2005-07-20
  • 打赏
  • 举报
回复
1.mousedown时记下位置,拖动鼠标,mouseup时记录第二个位置。这时你得到一个矩形区域,将外面的部分画为阴影就可以了。
2.create一个BITMAP,调用bitmap.canvas.copyrect(bitmap的rect,显示刚才图片的canvas,你选取范围的rect);
最后bitmap.savetofile();就可以了

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧