利用gdi+绘图,怎样实现导出可以不失真缩放的emf格式的文件?
如果是在emf格式的图形上绘图,可以实现导出整个emf格式的文件么?

解决方案 »

  1.   

    Graphics metagraph=this.CreateGraphics();
    Metafile metaFileOld = new Metafile("你的原始文件名.emf");
    //新建一个图元文件
    IntPtr hdc =metagraph.GetHdc();
    Metafile metaFile1 = new Metafile("你的文件名.emf", hdc);
    //使用Metafile对象的地址做为绘图平面
    Graphics graphics = Graphics.FromImage(metaFile1);
    graphics.DrawImage(metaFileOld,new Point(0,0));
    //以下是你自己的增加操作
    graphics.Draw....;
    graphics.Fill....;
    //例如:文本输出 
    SolidBrush solidBrush = new SolidBrush(Color.Black);
    FontFamily fontFamily = new FontFamily("隶书");
    Font font = new Font(fontFamily, 27,
    FontStyle.Regular, GraphicsUnit.Pixel);
    graphics.DrawString("图元文件示例", font, solidBrush,
    new PointF(20.0f, 80.0f));
    //释放所有资源。
    graphics.Dispose();
    metaFile1.Dispose();
    metaFileOld.Dispose();
    metagraph.ReleaseHdc(hdc);
    metagraph.Dispose();//将上面的绘图信息进行回放
    Graphics playbackGraphics = this.CreateGraphics();
    playbackGraphics.Clear(Color.White);
    //打开并显示图元文件
    Metafile metaFile2 = new Metafile("你的文件名.emf");
    playbackGraphics.DrawImage(metaFile2,new Point(0,0));
    //关闭已经打开的图元文件
    metaFile2.Dispose();
      

  2.   

    楼上的代码是已有的emf格式的文件上作图吧,如果现生成一个emf图形并导出应该怎么做呢?
      

  3.   

    ahking(aspire):
    可以新建图呀
    新建图也是一样的。
      

  4.   

    johnsuna(缘来是e) 
    Metafile metaFile1 = new Metafile(@"d:\你的文件名.emf", hdc);
    这一句是否可以等文本输出操作完后,由用户来决定保存到哪?
      

  5.   

    楼主加我的MSN吧: a3news#hotmail.com