2014-01-22 67 views
0

我已經創建了繪製到SharpDX.Direct2D1.BitmapRenderTarget所需的一切。SharpDX繪製Direct2D位圖不同的Direct2D工廠

我可以通過使用目標.bitmap屬性來訪問位圖本身。

我現在的問題是,如何使用另一個WicRenderTarget繪製該位圖?

喜歡的東西:

var wicFactory = new ImagingFactory(); 
var d2dFactory = new SharpDX.Direct2D1.Factory(); 
var wicBitmap = new Bitmap(wicFactory, width, height, SharpDX.WIC.PixelFormat.Format32bppBGR, BitmapCreateCacheOption.CacheOnLoad); 
var d2dRenderTarget = new WicRenderTarget(d2dFactory, wicBitmap, renderTargetProperties); 

d2dRenderTarget.BeginDraw(); 
d2dRenderTarget.Clear(SharpDX.Color.Black); 
d2dRenderTarget.FillGeometry(rectangleGeometry, solidColorBrush, null); 
d2dRenderTarget.DrawBitmap(MY BITMAPRENDERTARGET.BITMAP_FROM OTHER D2D FACTORY); 
d2dRenderTarget.EndDraw(); 

但是,這將引發我一個 「UNKOWN_FACTORY」 異常的EndDraw()。

我該如何達到我想要的目標?

我使用的代碼從以下鏈接創建所需WIC輸出的一切: https://github.com/sharpdx/SharpDX/blob/master/Samples/Direct2D1/RenderToWicApp/Program.cs

而不是寫一個幾何我想寫我bitmaprendertarget位圖。

回答

1

您不能繪製由另一個D2D工廠創建的位圖。使用您的工廠創建它。 如果您不控制如何創建其他位圖,請通過GetFactory方法獲取它的工廠並使用它創建對象。

請參閱Resources Overview瞭解可以在渲染目標或工廠內共享的更多信息。

+0

我會查看該鏈接。我現在使用相同的工廠來創建WicRenderTarget。但是現在我在EndDraw()中得到了一個WrongResourceDomain異常。爲什麼是這樣? – user2799180

+0

這意味着一些資源限制仍然受到侵犯。查看「資源概覽」鏈接。 –