0
Canvasから継承し、Visual Basicをcanvasbaseに追加できるクラスを作成する必要があります。CanvasにVisualChildを追加すると機能しない - 表示されない
だから私はこのコードを書いた:
class TestCanvas : Canvas
{
VisualCollection visuals;
public TestCanvas()
{
visuals = new VisualCollection(this);
}
protected override void OnMouseDown(MouseButtonEventArgs e)
{
Rectangle rect = new Rectangle
{
Width = 200,
Height = 200,
Stroke = Brushes.Red,
StrokeThickness = 5,
Fill = Brushes.Black
};
visuals.Add(rect);
base.OnMouseDown(e);
}
protected override int VisualChildrenCount
{
get
{
return visuals.Count;
}
}
protected override Visual GetVisualChild(int index)
{
if (index < 0 || index > visuals.Count)
throw new ArgumentOutOfRangeException("index");
return visuals[index];
}
}
をしかし、私はそれをクリックして、私はそれが表示されていないこのRectangleを追加した場合。 これはなぜ動作しないのでしょうか?
hmmmもう質問がある場合はもう一度やり直してみてください...悪いそれを試してください –
問題は私が視覚的な層に下がる必要があります。私はキャンバスが必要です。私の英語はあなたのことを説明するほど良くはありません。しかし私はある種の描画ツールを作成しようとしています。このアイデアに基づいています:http://www.codeproject.com/Articles/22776/WPF-DrawTools ここでは、コンテナとビジュアルコレクションとしてCanvasのベースクラスを使用します。そして、私はこれがかなりきれいだと思います。 –
あなたが参照しているプロジェクトを調べていない。しかし、ここでコンセプトをミックスしています。あなたは間違いなく[ContainerVisual](http://msdn.microsoft.com/en-us/library/system.windows.media.containervisual.aspx)の子**または** [Panel](http:// msdn Microsoft.com/jp/en/US/library/ system.windows.controls.panel.aspx)(例:Canvas)の両方の子ではありません。 – Clemens