raynadofan 2023-12-15 16:18 采纳率: 0%
浏览 3

关于DrawingVisual

关于DrawingVisual的问题。
我尝试在WPF中使用DrawingVisual绘制内容。根据微软的示例代码,写了第一版的代码。它工作正常。
但是DrawingVisual类是继承自ContainerVisual的,它有一个Children属性用于存储Visual,于是我想用DrawingVisual对象来存储visual集合,就写了第二个版本的代码。但是它只有在改变窗体大小的时候才会显示绘制的内容。这是为什么?

(这是版本1的代码)

img

(这是版本2的代码)

img

  • 写回答

1条回答 默认 最新

  • 港湾泊 2023-12-20 16:44
    关注

    在WPF中,当你使用DrawingVisual时,它是为了提供一个轻量级的可视元素,以便可以直接通过代码进行图形绘制。在你的第一版本代码中,你使用了一个VisualCollection来管理你的DrawingVisual对象。这是正确的做法。

    但是,在你的第二个版本代码中,你试图直接访问DrawingVisual的Children属性。这里的问题是,尽管DrawingVisual确实从ContainerVisual继承并具有Children属性,但在DrawingVisual的上下文中,这个属性并不像你预期的那样工作。

    DrawingVisual的Children属性主要是为ContainerVisual的子类所设计的,而不是为DrawingVisual自身所设计的。因此,直接访问DrawingVisual的Children属性不会像你预期的那样工作。

    为了解决你的问题,你应该继续使用VisualCollection来管理你的DrawingVisual对象。如果你希望组合多个DrawingVisual对象,你可以在同一个VisualCollection中添加多个DrawingVisual。

    VisualCollection vcollection;
    DrawingVisual dv1 = new();
    DrawingVisual dv2 = new();
    // 在VisualCollection中添加DrawingVisual
    vcollection.Add(dv1);
    vcollection.Add(dv2);
    
    

    然后,你可以通过遍历VisualCollection来获取和操作每个DrawingVisual。

    总之,直接访问DrawingVisual的Children属性不会工作,因为它不是为DrawingVisual所设计的。你应该继续使用VisualCollection来管理你的DrawingVisual对象。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月15日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭