То, что вы хотите, эквивалентно GDI + PathGradient, которого просто нет в Direct2D.
В качестве обходного пути вы можете попробовать использовать GDI + для рендеринга того, что вам нужно, в растровое изображение, а затем нарисовать это с помощью Direct2D. Это не будет аппаратно ускорено, а совместное использование растровых изображений между GDI + и Direct2D немного неуклюже, но, по крайней мере, сработает. Вы должны создать ID2D1Bitmap с ID2D1RenderTarget::CreateBitmap()
, затем заблокировать GDI + Bitmap, а затем использовать ID2D1Bitmap::CopyFromMemory()
со значениями из GDI + BitmapData.
Если вы используете программный объект рендеринга, вы также можете использовать ID2D1RenderTarget::CreateSharedBitmap()
, который позволит вам пропустить копирование памяти. Для этого потребуется сначала обернуть GDI + BitmapData (иначе говоря, «заблокированный GDI + Bitmap») собственной реализацией IWICBitmapLock (это не сложно, но, безусловно, неуклюже).