我想在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
没有出现。有什么问题以及如何修复它?
感谢。
答案 0 :(得分:1)
图像未呈现,因为我已覆盖GetVisualChild并且仅返回我自己的视觉效果。任何由Canvas的孩子生成的视觉效果都会被忽略。
由于我仍然直接使用视觉效果,我可能应该使用DrawingVisual对象和ImageSource而不是Image。在DrawingVisual中,我可以使用DrawingContext.DrawImage方法简单地渲染ImageSource。
答案 1 :(得分:0)
你的孩子可能缺少一些重要的属性值,比如它的宽度和高度是否为零?
您可能希望在设计器中创建一个示例表单,查看它设置的属性,并在代码中执行相同的操作。