Direct2D градиент вдоль геометрического пути - PullRequest
0 голосов
/ 22 марта 2012

В D2D, есть ли способ создать градиентную кисть, которая использует собственную геометрию траектории в качестве начальной / конечной точек?Я могу сделать тривиальный способ создания отдельной кисти для каждого шага пути и рендеринга ее как отдельного пути с помощью этой кисти, но я ищу что-то, что не снизит производительность.

Спасибо!

1 Ответ

1 голос
/ 10 апреля 2012

То, что вы хотите, эквивалентно GDI + PathGradient, которого просто нет в Direct2D.

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

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

...