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