C#92课的主要内容

来源:互联网 发布:ubuntu 12 万m光口 编辑:程序博客网 时间:2024/05/21 22:39

wpf图形呈现疑难解答

概述wpf可视化层,本主题重点讲述wpf模型中呈现支持的visual 类的角色

visual对象的角色

输出显示

转换

剪辑

命中测试

边界框计算

visual对象不包括对非呈现功能的支持

事件处理

布局

样式

数据绑定

全球化

viosual类的层次结构

drawingvisual 类

是一个用于呈现形状,图形或文本的轻量绘图类。此类之所以被视为轻量,是因为它不提供布局或事件处理功能,从而能夠改善运行時的性能。因此,绘图最适于背景和剪切画,

 containervisual类


如何使用可视化对象来生成控件

viewport3d dvisual类

containervisual 类

可视化对象中的绘图内容

visual对象將它的呈现数据另存為向量图形指令列表,指令列表中的每一项都以序列化格式表示一组低级别的图形数据及其相关资源,共有四种不同类型的呈现数据可以绘图内容

可视化对象的呈现行为

绝不能直接实例化,但可以通过某些方法获取绘图上下文,下面的实例从drawing visual 中检索drawing context并将其用于绘制矩形

visual treehelper类

如何使用可视化对象來生成控件

WPF 中的许多对象都由其他可视化对象组成,这意味着它们可以包含子代对象的各种层次结构。 WPF 中的许多用户界面元素(如控件)都由多个表示不同类型呈现元素的可视化对象组成

控件模版

將控件扩展為、控件层次结构的关键在于controltemplate,控件模版為控件指定默认的可视化层此结夠,当你显示引用某个控件時,会隐式引用它的可视化层次结构,你可以重写控件模版的默认值,一便為控件创建自定义的可视化外观,你可以修改button  控件的背景颜色值,一便它使用线性简便颜色值,而不使用纯色值,

用户界面元素包含几个向量图形指令列表,这些列表描述控件的全部呈现定义,下面的代码显示的是在标记中定义的button 控件

如果要枚举包含button控件的可视化对象和向量图形指令列表,则將发现如下所示的可视化对象层次结构:

可视化树

呈现顺序

通过可视化树,可以确定wpf 可视化对象和绘图对象的呈现顺序,將從位于可视化树中最顶层节点中的可视化元素根开始遍历,然后按照從左到右的顺序遍历可视化元素根的自己

可视化元素根

可视化元素根是可视化树层次结构中最顶层的元素,在大多数应用程序中,可视化元素根的基类是window或navigationwindowidow

于逻辑树的关系
wpf中的逻辑树表示应用程序在运行時的元素,你不直接操作该树,但是该应用程序视图对于了解属性继承和事件路由非常有用,于可视化树不同,逻辑树可以表示非可视化数据对象,则可视化元素根將是在win32窗口中承载的最顶层的可视化元素

欧诺个

与逻辑树的关系

wpf 中的逻辑树表示应用程序在运行時的元素,尽管你不直接操作该树,但是该应用程序视图对于了解属性继承和事件路由非常有用, 于可视化树不同,逻辑树可以表示非可视化数据对象。在许多情况下,逻辑树密切映射到应用程序的标记定义,下面的代码显示的是在标记中定义的dockpanel元素

于逻辑树的关系
wpf中的逻辑树表示应用程序在运行時的元素,尽管你不直接操作该树,但是该应用程序视图对于了解属性继承和事件路由非常有用,于可视化树不同,逻辑树可以表示非可视化数据对象,在许多情况下,逻辑树密切映射到应用程序的标记定义,下面的代码显示的是在标记中定义的dockpanel元素

使用xamlad查看可视化树

wpf工具提供了一个用来查看和浏览可视化树的选项,該树于当前所定义的xaml 内容相对应,单击菜单栏上的显示可视化树按钮可显示显示相应的可视化树。

分析可视化探查器显示输出

可视化对象的呈现行为

保留的模式图形

智能重绘

向量图形

关于分辨率和于设备无关的图形

可通过一下两个系统因子來确定屏幕上的文本和图形大小:分辨率和dpi,分辨率描述出现在屏幕上的像素数量,由于分辨率变大,因此像素会变小,从而导致所显示的图形和文本会变小,在將显示器的分辨率从1024*768更改為1600*1200時 显示器上显示的图形会小的多。



0 0