2012-03-21 20 views
0

D2Dでは、カスタムパスジオメトリを開始/停止ポイントとして使用するグラデーションブラシを作成する方法はありますか?私は、パスの各ステップごとに異なるブラシを作成し、そのブラシと別のパスとしてレンダリングするという簡単な方法を実行できますが、パフォーマンスを低下させないものを探しています。ジオメトリパスに沿ったDirect2Dグラジエント

ありがとうございます!

答えて

1

GDI +のPathGradientに相当するものは、単にDirect2Dには存在しません。

回避策として、GDI +を使用して、必要なものをビットマップにレンダリングし、Direct2Dで描画することがあります。これはハードウェアアクセラレーションではなく、GDI +とDirect2D間のビットマップ共有は少し不器用ですが、少なくとも動作するはずです。 ID2D1RenderTarget::CreateBitmap()でID2D1Bitmapを作成し、GDI +ビットマップをロックしてから、ID2D1Bitmap::CopyFromMemory()にGDI + BitmapDataの値を使用します。

ソフトウェアレンダーターゲットを使用している場合は、ID2D1RenderTarget::CreateSharedBitmap()を使用して、メモロイのコピーをスキップできます。 GDI + BitmapData(「ロックされたGDI +ビットマップ」とも呼ばれます)を自分のIWICBitmapLock実装でラップする必要があります(これは難しくありませんが、確かに不器用です)。

+0

残念ながら、これはおそらくこれを行うための唯一の方法です... – user1181950

+0

PathGradientが何らかの慰めであれば、WPFとXPSにも存在しません。 Direct2Dに加えて、これら3つの言語はまったく同じ「描画言語」を共有しています。彼らのAPIを比較してみてください! –

関連する問題