2010-12-07 59 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進行屏幕最終渲染,那麼你可以輕鬆地做你正在談論的使用渲染到紋理的事情。