copyrect对于wmf格式文件不能用吗 ( 积分: 100 )

  • 主题发起人 主题发起人 eeigyl
  • 开始时间 开始时间
E

eeigyl

Unregistered / Unconfirmed
GUEST, unregistred user!
wmfcanvas:tmetafilecanvas;
wmf:tmetafile;
wmf:=tmetafile.create;
wmfcanvas:=tmetafilecanvas.create(wmf,0);
TRect oRect;
oRect :=Rect(0,0,wmf.Width,wmf.Height);
wmfcanvas.CopyRect(wmfcanvas.ClipRect,wmfcanvas,oRect);
image1.Canvas.CopyRect(image1.ClientRect,wmfcanvas,oRect);
其中Image1为TImage控件,当执行到最后一句时提示如下错误:
"can only modify an image if it contains a bitmap",是什么意思,如何修改呀,
是不是copyrect方法不能用于wmf格式文件?对于bmp文件,这句话没有错,执行正确,请问
对于wmf格式如何解决
 
wmfcanvas:tmetafilecanvas;
wmf:tmetafile;
wmf:=tmetafile.create;
wmfcanvas:=tmetafilecanvas.create(wmf,0);
TRect oRect;
oRect :=Rect(0,0,wmf.Width,wmf.Height);
wmfcanvas.CopyRect(wmfcanvas.ClipRect,wmfcanvas,oRect);
image1.Canvas.CopyRect(image1.ClientRect,wmfcanvas,oRect);
其中Image1为TImage控件,当执行到最后一句时提示如下错误:
"can only modify an image if it contains a bitmap",是什么意思,如何修改呀,
是不是copyrect方法不能用于wmf格式文件?对于bmp文件,这句话没有错,执行正确,请问
对于wmf格式如何解决
 
提示说的很清楚,对于非位图文件不能进行修改操作。
可以利用TPicture对象将wmf文件打开再利用一个TBitmap对象读到Image中如下代码
procedure TfrmChildMDI.ReadImage(FileName:String);
var p:TPicture;
bp:TBitmap;
begin
if FileName='' then
exit;
p:=TPicture.Create;
p.LoadFromFile(FileName);
bp:=TBitmap.Create;
bp.Width:=p.Width;
bp.Height:=p.Height;
bp.Canvas.StretchDraw(bp.Canvas.ClipRect,p.Graphic);
Image1.Picture.Graphic:=bp;
bp.Free;
p.Free;
end;
然后就可以进行你想要的操作了。
 
后退
顶部