【发布时间】:2012-04-06 10:21:49
【问题描述】:
在 D2D 中,有没有一种方法可以创建使用自定义路径几何图形作为起点/终点的渐变画笔?我可以用简单的方法为路径的每一步创建一个不同的画笔,并使用该画笔将其渲染为单独的路径,但我正在寻找不会影响性能的东西。
谢谢!
【问题讨论】:
标签: graphics gradient direct2d
在 D2D 中,有没有一种方法可以创建使用自定义路径几何图形作为起点/终点的渐变画笔?我可以用简单的方法为路径的每一步创建一个不同的画笔,并使用该画笔将其渲染为单独的路径,但我正在寻找不会影响性能的东西。
谢谢!
【问题讨论】:
标签: graphics gradient direct2d
您想要的是与 GDI+ 的 PathGradient 等效的,而 Direct2D 中根本不存在。
作为一种解决方法,您可以尝试使用 GDI+ 将您需要的内容呈现到位图中,然后使用 Direct2D 进行绘制。这不会是硬件加速的,而且 GDI+ 和 Direct2D 之间的位图共享有点笨拙,但至少可以工作。您将使用ID2D1RenderTarget::CreateBitmap() 创建一个 ID2D1Bitmap,然后锁定 GDI+ 位图,然后将 ID2D1Bitmap::CopyFromMemory() 与来自 GDI+ BitmapData 的值一起使用。
如果您使用的是软件渲染目标,您还可以使用ID2D1RenderTarget::CreateSharedBitmap(),这样您就可以跳过内存复制。它需要您首先使用您自己的 IWICBitmapLock 实现来包装 GDI+ BitmapData(又名“锁定的 GDI+ 位图”)(这并不难,但肯定很笨拙)。
【讨论】: