其实就是怎样往图元文件里写东西
VC里有类CMetaFileDC,Delphi里如何处理

解决方案 »

  1.   

    var
      PMetafile:Tmetafile;
      PCanvas:TMetafileCanvas;
      i:integer;
    begin
      PMetafile:=TMetafile.Create;  //建立输出文件
      PCanvas:=TMetafileCanvas.Create(Pmetafile,0);
      PCanvas.Draw(0,0,PMetafile);  //创建图元的画布
      PCanvas.Pen.Color:=RGB(0,0,255);
      PCanvas.Brush.Color:=RGB(255,0,0); //设置文本颜色和笔颜色
      PCanvas.Rectangle(100,100,200,200); //在图元文件中绘制矩形框
      for i:=1 to 500 do
      begin
        PCanvas.MoveTo(20+i-1,120-trunc(80*sin(0.1*(i-1))));
        PCanvas.LineTo(20+i,120-trunc(80*sin(0.1*i)));//这里略有不同,这里 LineTo和MoveTo的参数只能是整形
      end;                                          //在图元文件中绘制正弦波
        PCanvas.TextOut(200,250,'图6电机载荷正弦波曲线图'); //在图元文件中绘制文本
      PMetafile.SaveToFile('MyFile.emf');
      PCanvas.Free;
      Pcanvas:=nil;
    end;
      

  2.   

    不好意思,刚才没刷新。
    感谢 BS() !!!
    再请教一下
    那下面void CMyWMFView::OnDispmetafile() 用
    PlayMetaFile
    方法显示图元文件该怎么翻
      

  3.   

    function CMyWMFView.OnDispmetafile():void;//不过Delphi里没有void,最好写为
    procedure  CMyWMFView.OnDispmetafile();//因为你没有什么要返回,
    在pascal中有函数和过程两种方法,需要返回采用函数,即用function定义
    clientDC.PlayMetaFile(hmf);句可以写为clientDC.canvas.draw(0,0,Pcanvas);//这里的Pcanvas就是上边那一段中的,不过你要是在其他的
    方法中用,须从新声明,或者你可以把他声明为全局的
      

  4.   

    Delphi和VC虽然大致相同,不过细节上还是有很多分别,这样写也许还有问题,建议你看看Delphi的有关类的定义