metafile的显示问题(50分)

  • 主题发起人 主题发起人 ifeng
  • 开始时间 开始时间
I

ifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
我这样为什么在paintbox1里面没有textout出来
procedure TForm1.Button1Click(Sender: TObject);
var
metafile1:Tmetafile;
metafilecanvas1:Tmetafilecanvas;
begin
metafile1:=tmetafile.Create;
metafile1.Width:=200;
metafile1.Height:=200;
metafilecanvas1:=Tmetafilecanvas.Create(metafile1,0);
metafilecanvas1.TextOut(0,0,'xxxxxxxxxxxxxxxxx');
paintbox1.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height);
paintbox1.Canvas.FillRect(rect(1,1,paintbox1.Width-2,paintbox1.Height-2));
paintbox1.Canvas.StretchDraw(rect(1,1,image1.Width-2,image1.Height-2),metafile1);
metafilecanvas1.Free;
end;
 
把metafilecanvas1.Free;放到paintbox1.Canvas.Rectangle前试试。
 
不行啊,还有什么办法吗?
 
to blueman
不好意思,可以了,还有,给我解释一下,好吗?
 
从metafilecanvas1创建到metafilecanvas1释放,中间对metafilecanvas1的所有绘制动作都会被记录下来,矢量图本身就是一些列命令的纪录!
 
在图象画在画布对象上并且画布对象被销毁后,图象显示在元文件对象中。
你可以看它的帮助中如何说明的。
 
但我如果要不断的画,不断的显示呢??如下:

我先画一条线,然后显示,
然后再写一句话,再显示(前面那条线一定要在)
 
try this
procedure TForm1.Button1Click(Sender: TObject);
var
metafile1:Tmetafile;
metafilecanvas1:Tmetafilecanvas;
begin
metafile1:=tmetafile.Create;
metafile1.Width:=200;
metafile1.Height:=200;
metafilecanvas1:=Tmetafilecanvas.Create(metafile1,0);
paintbox1.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height);
paintbox1.Canvas.FillRect(rect(1,1,paintbox1.Width-2,paintbox1.Height-2));
paintbox1.Canvas.StretchDraw(rect(1,1,image1.Width-2,image1.Height-2),metafile1);
metafilecanvas1.TextOut(0,0,'xxxxxxxxxxxxxxxxx');//移到这里,如果还不显示,改变字体的颜色
metafilecanvas1.Free;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
metafile1:Tmetafile;
metafilecanvas1:Tmetafilecanvas;
begin
metafile1:=tmetafile.Create;
metafile1.Width:=200;
metafile1.Height:=200;
metafilecanvas1:=Tmetafilecanvas.Create(metafile1,0);
metafilecanvas1.TextOut(0,0,'xxxxxxxxxxxxxxxxx');
metafilecanvas1.Free;
paintbox1.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height);
paintbox1.Canvas.FillRect(rect(1,1,paintbox1.Width-2,paintbox1.Height-2));
paintbox1.Canvas.StretchDraw(rect(1,1,image1.Width-2,image1.Height-2),metafile1);

end;
 
把 metafilecanvas1.Free; 放到
paintbox1.Canvas.StretchDraw(rect(1,1,image1.Width-2,image1.Height-2),metafile1);


 
谢谢大家,那个可以了,我的问题是,如何保存以前所画的还在?/
 
多人接受答案了。
 
后退
顶部