2

半導体ウェーハマップのカスタム コントロールを作成していますここに画像の説明を入力

これらの小さな長方形のそれぞれは、次の要件を満たす必要があります。1) インデックスを表示するツールチップ 2) クリックして、ウェーハマップ定義に含めたり除外したりできます。

1400 x 1450 ダイの場合、ウェーハマップ内のダイの数は 200 万を超える場合があります。

特定の時点で、すべてのダイをウィンドウに表示する必要があります (ほとんどのクリックはズーム ビューで行われます)。

現在、Rectangle シェイプを使用して各ダイを個別に追加し、ツールチップの座標情報 ((10,10) のようなインデックス) を添付プロパティとして保存しています。

各ダイに異なるスタイルを使用します。特定の計算とサイコロの位置に応じて。

DieStyle1 = new Style { TargetType = typeof(Rectangle) };
DieStyle1.Setters.Add(new Setter(Shape.FillProperty, Brushes.MediumSlateBlue));
DieStyle1.Setters.Add(new Setter(Shape.StrokeProperty, Brushes.White));
DieStyle1.Setters.Add(new EventSetter(MouseDownEvent, new MouseButtonEventHandler(DieStyle1_MouseDown)));

このアプローチは遅く、大量のメモリも使用します。WPFでこれを達成するためのより良い方法を提案しますか?

4

1 に答える 1

1

クリスマス ツリー ライトのデザイナーを作成する際に、同じ問題に遭遇しました。100 個以上の項目に到達すると、UIElement または Shapes の使用が遅すぎます。非常に多数のアイテムを処理するための最善の方法は、画像の独自のマネージド バッファーとクリックを処理するための構造でダブル バッファーを使用することです。私はあなたに良いスタートを与えるはずの私のプロジェクトを投稿しました。http://sourceforge.net/projects/xlightsdesigner/で入手できます。

Controls\ChannelitemsCanvas.cs に興味があります。これはニーズに合わせて変更でき、クアッド ツリーを使用して四角形を格納するため、クリック イベントをすばやく判断できます。

于 2013-04-13T14:13:40.587 に答える