将.emf文件呈现为位图

时间:2014-05-08 13:51:38

标签: bitmap render

我正在尝试将.emf文件呈现给具有给定大小的位图。

这是我的代码,我将此答案用作基础:How do I resize (shrink) an EMF (Metafile) in .Net?

public void SetEmfFromBitmap(string emfPath, Size size)
    {
        if (emfPath.Contains(".emf"))
        {
            using (var source = new Metafile(emfPath))
            using (var target = new Bitmap(size.Width, size.Height))
            using (var g = Graphics.FromImage(target))
            {
                g.DrawImage(source, 0, 0, size.Width, size.Height);
                target.Save("c:\\temp\\Month_Calendar.png", ImageFormat.Png); //this works..
                this.Image = target; //but this doesnt???
            }
        }
        else
        {
            throw new ArgumentException("Invalid path to .emf file: " + emfPath);
        }
    }

关于属于从PictureBox派生的类的方法。这就是我设置this.Image(这是一个Bitmap)的原因。但我能在Winforms应用程序中看到的是一个带有白色背景的红十字。

那么位图对象有什么问题?

1 个答案:

答案 0 :(得分:0)

我自己找到了原因:由于使用了using语句,目标位图被处理掉了。答案是使用this.Image =(Bitmap)target.Clone();代替。