我正在尝试将.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应用程序中看到的是一个带有白色背景的红十字。
那么位图对象有什么问题?
答案 0 :(得分:0)
我自己找到了原因:由于使用了using语句,目标位图被处理掉了。答案是使用this.Image =(Bitmap)target.Clone();代替。