望高人指点迷经---关于canvas(100分)

  • 主题发起人 主题发起人 godzhou
  • 开始时间 开始时间
G

godzhou

Unregistered / Unconfirmed
GUEST, unregistred user!
在canvas上画图,然后保存为图片并打印出来,而我原来画(上面有文字和线条)的图大
小有800*600,可是实际要打印出来的图片很小,大概只有200*150左右,甚至更小。这样
便需要对图像进行缩小。如果用bmp,则在一开始画图的时候会不会有这些问题,比如说原
来2个像素宽的线条缩小后会变细,而正常的字在缩小后悔看不清楚等。
打算用wmf,可是不知道如何将canvas上的图形保存为wmf格式。
还望高人指点迷经,提供一个好的方法。
谢谢先!

 
BMP:原来2个像素宽的线条缩小后会变细? 不会;
正常的字在缩小后悔看不清楚?那是当然。

可是实际要打印出来的图片很小,大概只有200*150左右:
你这个200*150是打印机的分辨率还是屏幕上CANVAS的?请注意打印机的分辨率
是可大可小的,打印时应该进行缩放的。如果你只是打印BMP,不要先缩小成200*150,
而是打印时直接缩小(或放大)。你需要计算缩放比例。

如何将canvas上的图形保存为wmf格式:
你创建一个TMetafileCanvas(也是一个CANVAS),将图形画上去,就可以保存了。
wmf的好处是缩放失真小,下面是一个实例:

procedure ExportWmf(ExpFile: string; Width, Height: Integer);
var
MyMetafile: TMetafile;
MfCanvas: TMetafileCanvas;
begin
MyMetafile := TMetafile.Create;
try
MyMetafile.Width := Width;
MyMetafile.Height := Height;
MfCanvas := TMetafileCanvas.Create(MyMetafile, 0);
try
PaintTo(MfCanvas, Width, Height); //在这里画图到MfCanvas
finally
MfCanvas.Free;
end;

MyMetafile.SaveToFile(ExpFile);

finally
MyMetafile.Free;
end;
end;
 
Huzzz 说得正确
给分吧
 
thanks a lot
 
后退
顶部