请教,如何实现图象的划块打印(即局部打印)?(100分)

  • 主题发起人 主题发起人 TellmeOk
  • 开始时间 开始时间
T

TellmeOk

Unregistered / Unconfirmed
GUEST, unregistred user!
最近碰到一个棘手的问题,就是如何利用鼠标在图象中划出一
块,并只对这块区域进行打印,不知有何控件或方法支持这种打印。
请高手能指点一二,谢了!
 
用copyrect拷贝到printer的canvas上.
//add Printers unit to the uses
procedure TForm1.Button1Click(Sender: TObject);
var
BitMap1 : TBitMap;
rectd,rects:trect;
begin

BitMap1 := TBitMap.Create;
//这里假设你选取的目标区域是(selectstartx,selectstarty)-(selectendx,selectendy)的矩形
rectd:=rect(0,0,(selectendx-selectstartx),(selectendy-selectstarty));
rects:=rect(selectstartx,selectstarty,selectendx,selectendy);
try
BitMap1.LoadFromFile('c:/test.bmp');
with Printerdo

begin

begin
Doc;
CopyRect(rectd,bitmap1.canvas,rects);
EndDoc;
end;

finally
BitMap1.Free;
end;

end;
 
我没见过这种控件:(
但我想程序可以实现。
找到选择区域S的横坐标最小值xmin和最大值xmax
以及纵坐标最小值ymin和最大值ymax
要打印的区域在R[(xmin,ymin)-(xmax,ymax)]中
对R中所有点进行判断其是否落在S中,若是则打印。
 
划出一块的不是矩形吗
 
还是g622兄弟手脚快
 
先谢谢g622,不过我在编译此程序时,出现编译错误,错误光条停在:
CopyRect(rectd,Bitmap1.canvas,rects);上,
错误信息是:Incompatible types:"TRect" and "TCavas",请赐教!
 
对不起,是
Canvas.CopyRect(rectd,bitmap1.canvas,rects);
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
639
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部