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)

适用于

另请参阅