1

に画像を追加したいMyCanvas

public class MyCanvas : Canvas
{
    private VisualCollection children;

    public MyCanvas()
    { this.children = new VisualCollection(this); }


    public void AddVisual(Visual visual)
    { this.children.Add(visual); }

    public void RemoveVisual(Visual visual)
    { this.children.Remove(visual); }

    public void ClearVisuals()
    { this.children.Clear(); }


    protected override int VisualChildrenCount
    {
        get
        { return this.children.Count; }
    }

    protected override Visual GetVisualChild(int index)
    { return this.children[index]; }
}

私は試した:

my_canvas.Children.Add(my_image);
// or also
my_canvas.AddVisual(my_image);

しかし、my_image表示されません。問題は何ですか?どのように修正する必要がありますか?ありがとう。

4

2 に答える 2

1

GetVisualChild をオーバーライドし、独自のビジュアルのみを返すため、画像はレンダリングされません。Canvas の子によって生成されたビジュアルは、単純に無視されます。

私はまだビジュアルを直接操作しているので、おそらくImageの代わりにDrawingVisualオブジェクトとImageSourceを使用する必要があります。DrawingVisual では、ImageSource をDrawingContext.DrawImageメソッドで簡単にレンダリングできます。

于 2012-05-18T08:21:56.100 に答える
0

あなたの子供はおそらく、幅と高さがゼロ以外であるなど、いくつかの重要なプロパティ値を欠いていますか?

デザイナでサンプルフォームを作成し、それが設定するプロパティを確認して、コードで同じことを行うことができます。

于 2012-05-17T16:40:05.600 に答える