これが私の最初の質問です。
しかし、私の質問に対する本当の答えは見つかりませんでした。
私は視覚化プログラムに取り組んでおり、C# と WPF を使用しています。
ツリーマップを描画する必要があります。私は実際に Rectangle オブジェクトを作成し、Canvas に追加します。これは、これらの四角形にイベント ハンドラー (マウス クリック) も追加するため、非常にうまく機能し、非常に便利です。
ただ、演出に問題あり。四角形を追加して Stroke プロパティ (SolidColorBrush) を設定すると、プロセス全体が極端に遅くなります。それらのストロークが設定されていなくても、速度は問題ありません。
新しく作成した Canvas オブジェクトに Rectangle オブジェクトを追加してから、この新しい Canvas オブジェクトを元の Canvas オブジェクトに追加することで、パフォーマンスを少し改善しました (したがって、すべての四角形が元の Canvas の直接の子であるとは限らないため、高速化に役立ちます)。
したがって、私の質問は、速度を損なうことなく、これらすべての Rectangles に Stroke を追加する方法です。
リンクで、「ストロークなし」と「ストローク付き」のツリーマップ バージョンの比較を見つけることができます。
ご助力ありがとうございます!
編集:
わかりました、私は解決策を見つけました!
最初にここに書いて申し訳ありませんが、解決策を見つけるためにすでに何時間も検索しましたが、問題は使用しているSolidColorBrushであることがわかりました!
私はこのようなものを持っています:
public static SolidColorBrush TreeMapBorderBrush;
そして、この Brush を使用して、Canvas に追加する必要があるすべての Rectangle の Stroke プロパティを設定します。しかし、まさにそれが問題でした。
以前のコードは次のようになっていました。
rect.Stroke = Visualization_Helper.TreeMapBorderBrush;
私は今これに変更しました:
rect.Stroke = Visualization_Helper.TreeMapBorderBrush.Clone();
そのため、現在、各 Rectangle でそのブラシのコピーのみを使用しています。これにより、Stroke がないように処理が高速化されます (私の質問のように)。
ご参考まで!変!