是否可以使用StretchRectangle()将在一台设备上创建的曲面绘制到另一台设备上创建的曲面上?它是为两个不同的控件创建的两个设备。
我一直在InvalidCallException
。两个表面都是渲染目标,具有相同的格式并放置在默认池中。
我认为问题出在两个不同的设备上?我该如何复制这个表面?
更新:
我使用LockRectangle
并使用GraphicsStream
读取和写入另一个表面,取得了一些成功。我说一些成功,因为我注意到某些移动是可见的,但我还是要确定要读/写的字节数等等,哪个矩形... < / p>
答案 0 :(得分:0)
我相信这是不可能的。经过不断的实验,我能够复制一个有效的表面,但除了以下代码之外还有很多额外的工作要做。这只是实际的副本。
byte[] data = new byte[surfaceByteCount];
GraphicsStream sourceStream = sourceSurface.LockRectangle(area, LockFlags.ReadOnly);
sourceStream.Read(data, 0, data.Length);
sourceSurface.UnlockRectangle();
GraphicsStream targetStream = targetSurface.LockRectangle(area, LockFlags.Discard);
targetStream.Write(data, 0, data.Length);
targetSurface.UnlockRectangle();
device.Present();