Q question Unregistered / Unconfirmed GUEST, unregistred user! 1999-05-25 #1 比如有一副 800*600 的图象,我想将其中 指定位置(根据 lefttop,rightbottom)的方式将其中一块指定大小的内容 另存为一副新图片,如何实现? Thank you
李 李颖 Unregistered / Unconfirmed GUEST, unregistred user! 1999-05-26 #3 可用TCanvas.CopyRect方法,Delphi文档说明如下: 从另一个Canvas中Copy部分图象到本Canvas中 procedure CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect); 描述: 从另一个Canvas中Copy部分图象到本Canvas的图象中. Dest指定图象将被Copy到哪个区域. Canvas参数指定图象来源的Canvas. Source图象来自源Canvas中的哪个区域. 图象的Copy模式由CopyMode属性指定.
可用TCanvas.CopyRect方法,Delphi文档说明如下: 从另一个Canvas中Copy部分图象到本Canvas中 procedure CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect); 描述: 从另一个Canvas中Copy部分图象到本Canvas的图象中. Dest指定图象将被Copy到哪个区域. Canvas参数指定图象来源的Canvas. Source图象来自源Canvas中的哪个区域. 图象的Copy模式由CopyMode属性指定.
B bluebird Unregistered / Unconfirmed GUEST, unregistred user! 1999-05-26 #4 CopyRect方法 如果要在图上画一个框的实现方法可以参考DELPHI2中的作图的例子 在mouse的系列事件中来完成画框
L lizhao Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-03 #6 我有个问题不明白, 当我从Canvas1 往Canvas2上Copy 时, 不知怎么回事,挡在Canvas1前面的Windows如:其他的应用程序界面。 也给Copy到Canvas2上了。 也是用的CopyRect方法。
我有个问题不明白, 当我从Canvas1 往Canvas2上Copy 时, 不知怎么回事,挡在Canvas1前面的Windows如:其他的应用程序界面。 也给Copy到Canvas2上了。 也是用的CopyRect方法。
Q question Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-05 #9 能些个完整的函数吗? 我以前也用了Copyrect 效果不太好,特别是将大的图象缩小, 至少 NT 和 Win98 上看的不一样(一样配置的计算机)。 谢谢! 我很急!!!
陈 陈冲伟 Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-06 #10 可以先将图片放在一个TBitMap中,设其为BitMap1. 然后再根据你的需要,创建一个 指定大小的TBitMap,设其为BitMap2.然后再使用CopyRect, 将BitMap1中指定区域 Copy到BitMap2中,最后用BitMap2的SaveToFile,将BitMap2保存即可.具体代码如下: var BitMap1, BitMap2: TBitMap; YourRect: TRect; begin BitMap1 := TBitMap.Create; BitMap1.LoadFromFile('OriginPictureFileName'); BitMap2 := TBitMap.Create; BitMap2.Height := YourRect.Bottom - YourRect.Top; BitMap2.Width := YourRect.Right - YourRect.Left; BitMap2.CopyMode := cmSrcCopy; BitMap2.CopyRect(YourRect, BitMap1.Canvas, YourRect); BitMap2.SaveToFile('NewPictureFileName'); BitMap2.Free; BitMap1.Free; end
可以先将图片放在一个TBitMap中,设其为BitMap1. 然后再根据你的需要,创建一个 指定大小的TBitMap,设其为BitMap2.然后再使用CopyRect, 将BitMap1中指定区域 Copy到BitMap2中,最后用BitMap2的SaveToFile,将BitMap2保存即可.具体代码如下: var BitMap1, BitMap2: TBitMap; YourRect: TRect; begin BitMap1 := TBitMap.Create; BitMap1.LoadFromFile('OriginPictureFileName'); BitMap2 := TBitMap.Create; BitMap2.Height := YourRect.Bottom - YourRect.Top; BitMap2.Width := YourRect.Right - YourRect.Left; BitMap2.CopyMode := cmSrcCopy; BitMap2.CopyRect(YourRect, BitMap1.Canvas, YourRect); BitMap2.SaveToFile('NewPictureFileName'); BitMap2.Free; BitMap1.Free; end
L lizhao Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-14 #11 你可以用bitblt函数来做。 var srcbmp,desbmp:TBitmap; begin srcbmp....//这里是原图形. desbmp:=TBitmap.Create; desbmp.width:= w ;// w,h 为你要截取的长宽。 desbmp.height:= h; bitblt(desbmp.Canvas.handle,0,0,w,h, srcbmp.canvas.handle,x,y,SRCCOPY);//x,y为你要拷贝的原图形的左上角坐标。 bitblt.Savetofile(filename); end;
你可以用bitblt函数来做。 var srcbmp,desbmp:TBitmap; begin srcbmp....//这里是原图形. desbmp:=TBitmap.Create; desbmp.width:= w ;// w,h 为你要截取的长宽。 desbmp.height:= h; bitblt(desbmp.Canvas.handle,0,0,w,h, srcbmp.canvas.handle,x,y,SRCCOPY);//x,y为你要拷贝的原图形的左上角坐标。 bitblt.Savetofile(filename); end;
L lwlnic Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-18 #12 你可以将需要的部分一个一个象素来写到另外一个位图中去。 bitmap.canvas.pixel[i,j]是个颜色的值,
Q question Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-20 #13 问题我已经解决,没有试 lizhi 的方法,不过我想它是可行的.
J jlle Unregistered / Unconfirmed GUEST, unregistred user! 2000-10-07 #15 但是对于JPEG格式的图象如何处理呢(不能转换为BMP格式处理)?