如何在我的画布中插入图像?

时间:2012-05-17 16:16:44

标签: .net wpf image canvas

我想在MyCanvas中添加Image

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没有出现。有什么问题以及如何修复它? 感谢。

2 个答案:

答案 0 :(得分:1)

图像未呈现,因为我已覆盖GetVisualChild并且仅返回我自己的视觉效果。任何由Canvas的孩子生成的视觉效果都会被忽略。

由于我仍然直接使用视觉效果,我可能应该使用DrawingVisual对象和ImageSource而不是Image。在DrawingVisual中,我可以使用DrawingContext.DrawImage方法简单地渲染ImageSource。

答案 1 :(得分:0)

你的孩子可能缺少一些重要的属性值,比如它的宽度和高度是否为零?

您可能希望在设计器中创建一个示例表单,查看它设置的属性,并在代码中执行相同的操作。