绘制到基于内存流的 GDI+ 图元文件 - 之后可以处理流吗?

问题描述 投票:0回答:0

我正在使用 MemoryStream 将我的 GDI+ 绘图命令写入图元文件,稍后显示图元文件以加速平移和缩放等琐碎任务。效果很好。

过去写代码时,我注意不要在 Metafile 实际绘制到屏幕上之前处理 MemoryStream。今天,出于一种危险的心情,我在屏幕上绘制图像之前已经处理了 MemoryStream,令人惊讶的是,它仍然运行良好,没有抛出异常。所以我想知道这是否合法,或者它是否只是偶然起作用,并且在某些情况下它可能会失败。

我想这种情况有点类似于驻留在硬盘驱动器上的图元文件,它在图元文件加载后但在屏幕上绘制之前被删除,对吧?

MemoryStream memoryStream = new MemoryStream(); 
Metafile metafile = new Metafile(memoryStream, deviceContextHandle, rectangleF, MetafileFrameUnit.Pixel, EmfType.EmfPlusOnly);
using (Graphics g = Graphics.FromImage(metafile))
{
    SomeGraphicsObject.Draw(g);
}
screenGraphics.DrawImage(metafile, x, y, dx, dy);
memoryStream.Dispose(); // legit to move this one line up?
gdi+ dispose memorystream metafile
© www.soinside.com 2019 - 2024. All rights reserved.