在D2D中,是否有創建使用自定義路徑幾何作爲其開始/停止點的漸變刷的方法?我可以爲路徑的每一步創建一個不同的筆刷,並將其作爲一個單獨的筆刷路徑進行渲染,但我正在尋找一些不會導致性能下降的方法。沿幾何路徑的Direct2D漸變
謝謝!
在D2D中,是否有創建使用自定義路徑幾何作爲其開始/停止點的漸變刷的方法?我可以爲路徑的每一步創建一個不同的筆刷,並將其作爲一個單獨的筆刷路徑進行渲染,但我正在尋找一些不會導致性能下降的方法。沿幾何路徑的Direct2D漸變
謝謝!
你想要的是相當於GDI +的PathGradient,它在Direct2D中根本不存在。
作爲一種解決方法,您可以嘗試使用GDI +將您需要的內容呈現到位圖中,然後使用Direct2D進行繪製。這不會被硬件加速,GDI +和Direct2D之間的位圖共享有點笨拙,但至少可以工作。您可以使用ID2D1RenderTarget::CreateBitmap()
創建一個ID2D1Bitmap,然後鎖定GDI +位圖,然後使用ID2D1Bitmap::CopyFromMemory()
和來自GDI + BitmapData的值。
如果您使用的是軟件渲染目標,您還可以使用ID2D1RenderTarget::CreateSharedBitmap()
這可以讓您跳過memoroy複製。它需要你首先用自己的IWICBitmapLock實現包裝GDI + BitmapData(又名「鎖定的GDI +位圖」)(這並不困難,但肯定笨拙)。
不幸的是,這可能是這樣做的唯一方法... – user1181950 2012-04-25 20:08:06
如果它有任何安慰,PathGradient也從WPF和XPS中丟失。隨着Direct2D,這三個共享完全相同的「繪圖語言」;去比較他們的API,你會看到! – 2012-04-27 03:22:17