当然,WPF 中的 Freezable 类和 Visual 类具有完全不同的目的。我的问题更多地集中在实现 Visual 类或 Freezable 类的对象之间的区别。因为它们通常都与图形问题有关,所以我很困惑。
那么,以图形表示和视觉方式的 Freezable 的目的到底是什么?
当然,WPF 中的 Freezable 类和 Visual 类具有完全不同的目的。我的问题更多地集中在实现 Visual 类或 Freezable 类的对象之间的区别。因为它们通常都与图形问题有关,所以我很困惑。
那么,以图形表示和视觉方式的 Freezable 的目的到底是什么?
Visual 实现了 2D 对象的概念,该概念通常需要在大致矩形区域中进行视觉呈现。Visual 的实际呈现发生在其他类中(它不是自包含的),但 Visual 类提供了一种已知类型,供各个级别的呈现进程使用。Visual 实现命中测试,但它不公开报告命中测试阳性的事件(这些在 UIElement 中)。有关详细信息,请参阅可视层编程。
http://msdn.microsoft.com/en-us/library/ms753209(v=vs.110).aspx
Freezable 通过在出于性能原因需要或需要不可变对象时提供生成对象副本的方法来模拟可变对象中的不可变性。Freezable 类型为某些图形元素(例如几何图形和画笔以及动画)提供了通用基础。值得注意的是,Freezable 不是 Visual;当应用 Freezable 填充另一个对象的属性值时,它可以保存成为子属性的属性,并且这些子属性可能会影响渲染。有关详细信息,请参阅可冻结对象概述。
http://msdn.microsoft.com/en-us/library/ms750509(v=vs.110).aspx