クラスを継承するInkCanvas
クラスがあります。VisualChildrenCount
プロパティとGetVisualChild
メソッドをオーバーライドしました。
Visual GetVisualChild(int index)
{
if (index == 0)
{
return InkCanvas.GetVisualChild(index);
}
return visuals[index - 1].Visual;
}
int VisualChildrenCount
{
get { return visuals.Count + InkCanvas.VisualChildrenCount; }
}
ここで、ビジュアルはコレクション ビジュアル オブジェクトであり、Visual
プロパティはオブジェクトを返しDrawingVisual
ます。このクラスを使用して、オブジェクトを追加および表示しDrawingVisual
ます (パフォーマンス上の理由)。
void AddVisual(MyVisual visual)
{
if (visual == null)
throw new ArgumentNullException("visual");
visuals.Add(visual);
AddVisualChild(visual->Visual);
AddLogicalChild(visual->Visual);
}
問題は次のとおりです。Stroke
(マウスを使用した自由な描画で) 新しいものを描画すると、このストロークは InkCancas に追加されますが、前の DrawingVisual (Z オーダー) の下に追加されるため、たとえば、大きな四角形の下にストロークを描画するとします。ストロークが隠れているので何も見えません。
この卑劣な問題を解決するにはどうすればよいですか?