SharpDX绘制Direct2D Bitmap不同的Direct2D工厂

时间:2014-01-22 14:00:15

标签: c# direct2d sharpdx

我已创建绘制到SharpDX.Direct2D1.BitmapRenderTarget所需的所有内容。

我可以使用目标.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();

但是这会在EndDraw()中抛出一个“UNKOWN_FACTORY”异常。

我如何实现我想做的事?

我使用以下链接中的代码创建WIC输出所需的所有内容: https://github.com/sharpdx/SharpDX/blob/master/Samples/Direct2D1/RenderToWicApp/Program.cs

我没有编写几何图形,而是想编写我的bitmaprendertarget位图。

1 个答案:

答案 0 :(得分:1)

您无法绘制由其他D2D工厂创建的位图。使用您的工厂创建它。 如果您不控制其他位图的创建方式,请通过GetFactory方法将其设置为工厂并使用它来创建对象。

有关可在渲染目标或工厂内共享的内容的更多信息,请参阅Resources Overview