2010-12-07 60 views
1

我正在处理的项目需要能够转换图像的任意四个角。由于GDI +不幸没有这种功能,我们正在使用DirectX的3D图形。将DirectX 3D图形直接渲染到图像上,使用C#

虽然我有一个方形网格,并且纹理能够在屏幕上成功显示,但我需要能够通过此渲染生成图像,背景设置为透明。有没有办法有效地实现这一点?

最好,我想这样做,而不使用控制初始化设备。或者,我不介意创建一个自定义的不可见控件,它会为我生成一个图像。

编辑

其实,我只是实现了一个透明的背景是严格不是必须的,但它会帮助我们的项目位的性能。

无论如何,我已经有过这样的运气,但速度太慢了。也许有更好的方法?

// Create a surface to render an image to 
Surface mSurface = mDevice.GetRenderTarget(0); 

// Render the visualization 
mDevice.Clear(ClearFlags.Target, Color.Transparent, 1.0f, 0); 
mDevice.BeginScene(); 

/* Do some amazing stuff */ 

// Exit rendering 
mDevice.EndScene(); 
mDevice.Present(); 

// Render the bitmap images 
GraphicsStream mGraphics = SurfaceLoader.SaveToStream(
     ImageFileFormat.Bmp, mSurface); 
Image mImage = new Bitmap(mGraphics, false); 
+0

我注意到Surface构造函数需要一个位图。如果我在内存中构造了一个带有位图的曲面,那么渲染到这个曲面还会更新所保存的位图吗? – Japtar 2010-12-09 18:46:05

+0

我想知道是否用相同的流信息构建表面和位图也会起作用... – Japtar 2010-12-09 19:55:04

回答

0

那么,如果你使用D3D进行屏幕最终渲染,那么你可以轻松地做你正在谈论的使用渲染到纹理的事情。