对于我目前正在开发的应用程序,我需要创建一个 .emf 文件。当我将结果直接输出到文件时,我已经让它工作了,但是我无法将它输出到流中,这对我正在尝试做的事情至关重要。
此代码正确生成文件,但它直接输出到硬盘。
var sizedImage = new Bitmap(103, 67);
using(var graphicsFromSizedImage = Graphics.FromImage(sizedImage))
using(var metafile = new Metafile("result.emf", graphicsFromSizedImage.GetHdc()))
using(var graphics = Graphics.FromImage(metafile))
{
graphics.DrawStuff()
graphicsFromSizedImage.ReleaseHdc();
}
这是我将其输出到内存流的尝试,因此我可以从该流中获取 byte[] :
byte[] resultingBytes;
var sizedImage = new Bitmap(103, 67);
using(var stream = new MemoryStream())
using(var graphicsFromSizedImage = Graphics.FromImage(sizedImage))
using(var metafile = new Metafile(stream, graphicsFromSizedImage.GetHdc()))
using(var graphics = Graphics.FromImage(metafile))
{
graphics.DrawStuff()
graphicsFromSizedImage.ReleaseHdc();
resultingBytes = stream.GetBuffer();
}
File.WriteAllBytes("result.emf", resultingBytes);
但这所做的只是创建一个空文件。当我用调试器运行它时,我可以看到流仍然是空的。我在这里想念什么..?