沿着几何路径的Direct2D渐变

时间:2012-03-21 20:36:28

标签: graphics gradient direct2d

在D2D中,有没有办法创建一个使用自定义路径几何作为其起点/终点的渐变画笔?我可以通过简单的方法为路径的每个步骤创建一个不同的画笔,并将其作为一个单独的路径渲染,但我正在寻找一些不会破坏性能的东西。

谢谢!

1 个答案:

答案 0 :(得分:1)

你想要的是相当于GDI +的PathGradient,它在Direct2D中根本不存在。

作为一种解决方法,您可以尝试使用GDI +将所需内容呈现到位图中,然后使用Direct2D绘制它。这不会是硬件加速,GDI +和Direct2D之间的位图共享有点笨拙,但它至少会起作用。您将使用ID2D1RenderTarget::CreateBitmap()创建ID2D1Bitmap,然后锁定GDI +位图,然后将ID2D1Bitmap::CopyFromMemory()与GDI + BitmapData中的值一起使用。

如果您使用的是软件渲染目标,也可以使用ID2D1RenderTarget::CreateSharedBitmap()来跳过memoroy复制。它需要你首先使用你自己的IWICBitmapLock实现包装GDI + BitmapData(也就是“锁定的GDI + Bitmap”)(这并不困难,但肯定是笨拙的)。