Visual 类

定义

为 WPF 中的呈现提供支持,其中包括命中测试、坐标转换和边界框计算。

public ref class Visual abstract : System::Windows::DependencyObject
public abstract class Visual : System.Windows.DependencyObject
type Visual = class
    inherit DependencyObject
    interface DUCE.IResource
type Visual = class
    inherit DependencyObject
Public MustInherit Class Visual
Inherits DependencyObject
继承
派生

注解

Visual 是每个 FrameworkElement 对象从中派生的基本抽象。 它还充当在 WPF 中编写新控件的入口点,在 Win32 应用程序模型中,可以将其视为与窗口句柄等效的窗口句柄 (HWND) 。

Visual 对象是核心 WPF 对象,其主要角色是提供呈现支持。 用户界面控件(如 ButtonTextBox)派生自 Visual 类,并使用 Visual 定义的属性来保存其呈现数据。 该 Visual 对象提供对以下内容的支持:

  • 输出显示:呈现视觉对象的持久、序列化的绘图内容。

  • 转换:针对视觉对象执行转换。

  • 剪裁:为视觉对象提供剪裁区域支持。

  • 命中测试:确定指定的坐标 (点) 还是几何图形包含在视觉对象的边界内。

  • 边框计算:确定视觉对象的边框。

从体系结构上看,该 Visual 对象不包括对其他应用程序开发要求/WPF 功能的支持,这些功能不会立即与其呈现相关,例如:

  • 事件处理

  • Layout

  • 样式

  • 数据绑定

  • 全球化

Visual 作为公共抽象类提供,可从中派生进一步的类。 下图显示了 WPF 体系结构中定义的现有视觉对象的层次结构。

从 Visual 对象派生的类的示意图
视觉对象类层次结构

在某些情况下,定义为受保护的 Visual 成员公开为派生 UIElement 类中具有类似名称的更易于访问的成员。

有关详细信息,请参阅 WPF 图形呈现概述

级别 Visual 有限。 在以前版本的.NET Framework中,此最大深度为 255。 对于在可视化树中具有多个级别的某些布局,此限制不足。

在 .NET Framework 4 中,最大Visual深度为 2047,这可实现更深的视觉树。 在大多数应用程序中,没有足够的堆栈空间遍历这么多级别,结果是 StackOverflowException 布局期间的结果。 对于默认堆栈大小,当树深度约为 800(对应于大约 190 个嵌套 TreeViewItem 对象)时,通常会引发此异常。

如果应用程序引发此异常,并且需要有更深层的可视化树,则可以增加应用程序的堆栈大小。 可以在编译时使用 /STACK 选项或使用 EDITBIN 实用工具来增加堆栈的大小。 增加堆栈大小可能会影响应用程序的性能。 有关详细信息,请参阅 堆栈分配EDITBIN 选项

构造函数

Visual()

为从 Visual 类派生的对象提供基本初始化。

属性

DependencyObjectType

获取包装 DependencyObjectType 此实例的 CLR 类型。

(继承自 DependencyObject)
Dispatcher

获取与此 Dispatcher 关联的 DispatcherObject

(继承自 DispatcherObject)
IsSealed

获取一个值,该值指示此实例当前是否为密封的(只读)。

(继承自 DependencyObject)
VisualBitmapEffect
已过时。
已过时。

获取或设置 BitmapEffectVisual 值。

VisualBitmapEffectInput
已过时。
已过时。

获取或设置 BitmapEffectInputVisual 值。

VisualBitmapScalingMode

获取或设置 BitmapScalingModeVisual

VisualCacheMode

获取或设置 Visual 的缓存表示形式。

VisualChildrenCount

获取 Visual 的子元素数量。

VisualClearTypeHint

获取或设置 ClearTypeHint,它确定在 Visual 中呈现 ClearType 的方式。

VisualClip

获取或设置 Visual 的剪辑区域作为 Geometry 值。

VisualEdgeMode

获取或设置 Visual 的边缘模式作为 EdgeMode 值。

VisualEffect

获取或设置要应用于 Visual 的位图效果。

VisualOffset

获取或设置可视对象的偏移量值。

VisualOpacity

获取或设置 Visual 的不透明度。

VisualOpacityMask

获取或设置 Brush 值,该值表示 Visual 的不透明蒙板。

VisualParent

获取可视对象的可视化树父级。

VisualScrollableAreaClip

获取或设置 Visual 的剪辑的可滚动区域。

VisualTextHintingMode

获取或设置 VisualTextHintingMode

VisualTextRenderingMode

获取或设置 VisualTextRenderingMode

VisualTransform

获取或设置 TransformVisual 值。

VisualXSnappingGuidelines

获取或设置 x 坐标(垂直)准线集合。

VisualYSnappingGuidelines

获取或设置 Y 坐标(水平)准线集合。

方法

AddVisualChild(Visual)

定义两个可视对象之间的父子关系。

CheckAccess()

确定调用线程是否可以访问此 DispatcherObject

(继承自 DispatcherObject)
ClearValue(DependencyProperty)

清除属性的本地值。 要清除的属性由 DependencyProperty 标识符指定。

(继承自 DependencyObject)
ClearValue(DependencyPropertyKey)

清除只读属性的本地值。 要清除的属性由 DependencyPropertyKey 指定。

(继承自 DependencyObject)
CoerceValue(DependencyProperty)

对指定依赖属性的值进行强制。 通过对调用方 DependencyObject 上存在的依赖属性的属性元数据中所指定的任何 CoerceValueCallback 函数进行调用来完成此操作。

(继承自 DependencyObject)
Equals(Object)

确定提供的 DependencyObject 是否等效于当前 DependencyObject

(继承自 DependencyObject)
FindCommonVisualAncestor(DependencyObject)

返回两个可视对象的公共上级。

GetHashCode()

获取此 DependencyObject 的哈希代码。

(继承自 DependencyObject)
GetLocalValueEnumerator()

创建一个专用的枚举数,用于确定哪些依赖项属性在此 DependencyObject 上具有以本地方式设置的值。

(继承自 DependencyObject)
GetType()

获取当前实例的 Type

(继承自 Object)
GetValue(DependencyProperty)

DependencyObject 的此实例返回依赖属性的当前有效值。

(继承自 DependencyObject)
GetVisualChild(Int32)

返回父级 Visual 中的指定 VisualCollection

HitTestCore(GeometryHitTestParameters)

确定可视对象的边界中是否存在几何图形值。

HitTestCore(PointHitTestParameters)

确定点坐标值是否在可视对象的边界内。

InvalidateProperty(DependencyProperty)

重新评估指定依赖属性的有效值。

(继承自 DependencyObject)
IsAncestorOf(DependencyObject)

确定可视对象是否为后代可视对象的上级。

IsDescendantOf(DependencyObject)

确定可视对象是否为上级可视对象的后代。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OnDpiChanged(DpiScale, DpiScale)

呈现此视图时所使用的 DPI 发生变化时进行调用。

OnPropertyChanged(DependencyPropertyChangedEventArgs)

每当更新此 DependencyObject 的任何依赖属性的有效值时调用。 更改的特定依赖属性将在事件数据中报告。

(继承自 DependencyObject)
OnVisualChildrenChanged(DependencyObject, DependencyObject)

修改可视对象的 VisualCollection 时调用。

OnVisualParentChanged(DependencyObject)

当可视对象的父级更改时调用。

PointFromScreen(Point)

将屏幕坐标中的 Point 转换为表示 Point 的当前坐标系的 Visual

PointToScreen(Point)

将表示 Point 的当前坐标系的 Visual 转换为屏幕坐标中的 Point

ReadLocalValue(DependencyProperty)

如果存在,则返回依赖属性的本地值。

(继承自 DependencyObject)
RemoveVisualChild(Visual)

移除两个可视对象之间的父子关系。

SetCurrentValue(DependencyProperty, Object)

设置依赖属性的值而不更改其值源。

(继承自 DependencyObject)
SetValue(DependencyProperty, Object)

设置依赖属性的本地值,该值由其依赖属性标识符指定。

(继承自 DependencyObject)
SetValue(DependencyPropertyKey, Object)

设置一个只读依赖属性的本地值,该值由依赖属性的 DependencyPropertyKey 标识符指定。

(继承自 DependencyObject)
ShouldSerializeProperty(DependencyProperty)

返回一个值,该值指示序列化进程是否应序列化所提供的依赖属性的值。

(继承自 DependencyObject)
ToString()

返回表示当前对象的字符串。

(继承自 Object)
TransformToAncestor(Visual)

返回一个转换,该转换可用于将 Visual 中的坐标转换为可视对象的指定 Visual 上级。

TransformToAncestor(Visual3D)

返回一个转换,该转换可用于将 Visual 中的坐标转换为可视对象的指定 Visual3D 上级。

TransformToDescendant(Visual)

返回一个转换,该转换可用于将 Visual 中的坐标转换为指定的可视对象后代。

TransformToVisual(Visual)

返回一个转换,该转换可用于将 Visual 中的坐标转换为指定的可视对象。

VerifyAccess()

强制调用线程具有此 DispatcherObject 的访问权限。

(继承自 DispatcherObject)

适用于

另请参阅