Visual Layer Overview(1)--Role of the Visual Object

翻译 2006年06月09日 16:51:00

     Visual objectWindows Presentation Foundation的核心对象,它的主要作用就是对渲染的支持。UI controls,例如:ButtonTextBox Visual class继承,并使用Visual class保存它们的数据。Visual object提供了如下的支持:

  • Output display: 渲染永久化的,序列化的描画内容

  • Transformations: visual上执行变换

  • Clipping: visual提供裁减的支持.

  • Hit testing: 决定一个坐标或者几何图形时候是否包含在visual 的区域内.

  • Bounding box calculations: 决定visual的包围的矩形.

然而,Visual object没有提供非渲染得特性,例如:

  • 事件处理: Handling system and user-input events.

  • 布局: Positioning elements on containing surfaces.

  • 样式: Applying common set of properties to set of elements.

  • 数据绑定: Binding data to elements, such as grids and list boxes.

  • 全球化: Adapting UI to different cultures.

 

   理解Visual object角色的关键是理解immediate mode retained mode图形系统之间的不同。标准的基于GDI 或者 GDI+Win32应用程序使用immediate mode图形系统,也就是说应用程序负责重画客户区域的无效部分,由于window大小改变或者对象外观的改变等动作会造成客户区无效。

   

    相反的是,Windows Presentation Foundation使用retained mode (保留模式)system,也就是说,应用程序的对象定义了一系列的描画数据来显示。一旦描画数据被定义,之后由系统在渲染应用对象时负责重画。甚至在运行时,可以修改或者创建应用对象,仍然由系统来负责重画请求。retained mode graphics system的强大之处在于描画数据序列化的保存在应用程序的状态中,但是渲染的责任留给了系统

 

 Vector Graphics

Windows Presentation Foundation使用vector graphics作为它的渲染数据的格式。Vector graphics—包含Scalable Vector Graphics (SVG), Windows metafiles (.wmf), TrueType fonts

 Controls as Composite Visual Objects

Windows Presentation Foundation 中的许多UI elements,例如:controls 可以扩张为一个visual objects的层次树

"XAML"

<Button Click="OnClick">OK</Button>

如果想枚举组成默认的 Button control visual objects,可以发现下图所示

                                

Button 控件包含一个ClassicBorderDecorator 元素,ClassicBorderDecorator又包含一个ContentPresenter元素。ClassicBorderDecorator元素负责描画ButtonborderbackgroundContentPresenter元素显示Button内容,在本例的情况下,因为我们要显示文本,ContentPresenter元素包含一个TextBlock元素。实际上Button控件使用ContentPresenter 意味着content可以被表示成其他元素,例如:Image 或者a geometry.

Control Templates

Control的展开成层次的控件的关键是ControlTemplate. ControlTemplate指定了一个控件的默认层次。当明确的引用一个控件时,实际上是在引用它的可视化层次。可以重写控件模版的默认值来创建一个自定义外观的控件。

Drawing Content in Visual Objects

Visual object 使用 vector graphics instruction list来保存它的渲染数据. instruction list中的每一项代表一个序列格式中的一个低级的图形数据,有四种类型的图形数据可以被包含在drawing content中:

 

Drawing content type

Description

Geometry

Draws a geometry using a specified Brush and Pen.

Image

Draws an image within a region defined by a Rect.

Glyph

Represents a drawing that renders a GlyphRun, which is a sequence of glyphs from a specified font resource. This is how text is represented.

Video

Represents a drawing that renders video.

 

一个UI元素例如 Button控件,包含一些vector graphics instruction lists来描述控件的全部渲染定义。

"XAML" 

<Button Click="OnClick">

  <Image Source="images/greenlight.jpg"></Image>

</Button>

 

Button控件的层次对象如下图所示:

 

Button 控件包含一个ClassicBorderDecorator 元素, ClassicBorderDecorator又包含一个ContentPresenter 元素. The ClassicBorderDecorator 元素负责描画组成Buttonborder background的所有的离散的元素。ContentPresenter 元素负责显示Button的内容. 在这个例子中, 因为要显示的是一个图片, ContentPresenter 元素包含一个Image 元素.

还有一些关于显示对象的层级和vector graphics instruction lists相关的问题:

  • 层次中的顺序表现了渲染顺序的信息。从根元素开始,遍历孩子元素,从上到下,从左到右。如果一个元素有可见的孩子元素,孩子元素将比兄弟元素先被访问。

  • 层次中的非叶子节点元素,例如:ContentPresenter被用来包含孩子元素-他们不包含instruction lists

  • 如果一个可视化元素既包含vector graphics instruction list,又包含可视化的孩子节点,instruction list将在孩子节点之前被渲染。

vector graphics instruction list中的元素从左到右被渲染。

 

 

Visual Layer Overview(4)--Other Visual Object Classes

      Other Visual Object Classes 在Windows Presentation Foundation中还有其他三种visual objects:DrawingVisua...
  • Net_Ghost
  • Net_Ghost
  • 2006年06月11日 00:06
  • 1047

Visual Layer Overview(2)--Visual Tree

visual tree包含一个应用UI中所有的可视化的元素(visual elements)。既然一个可视化元素中包含永久化的描画信息,可以认为visual tree是一个包含组成显示设备上输出的所有...
  • Net_Ghost
  • Net_Ghost
  • 2006年06月09日 17:36
  • 1192

Visual Layer Overview(5)Hit Testing in the Visual Layer

Hit Testing in the Visual Layer 这部分介绍了Windows Presentation Foundation中visual layer.使用VisualTreeHelpe...
  • Net_Ghost
  • Net_Ghost
  • 2006年06月13日 00:49
  • 1424

【PASCALVOC】The Pascal Visual Object Classes Challenge: A Retrospective

这篇文章PASCALVOC官方发表在IJCV2015上的一篇文章,主要是对之前的2008-2012challenge的回顾....
  • u014451076
  • u014451076
  • 2017年04月19日 23:31
  • 733

深度学习tracking学习笔记(1):Visual Tracking with Fully Convolutional Networks

reference:http://blog.csdn.net/carrierlxksuper/article/details/48918297 两个属性 1)不同层上的CNN特征可以针对不同的...
  • u011534057
  • u011534057
  • 2016年06月23日 00:06
  • 3573

Visual Studio 2010 架构图之三—层图(Layer Diagram)

使用Visual Studio 2010可以在项目中添加架构图,项目可以是ASP.NET、Windows Forms、...,也可以创建单独的Modeling Projects。...
  • lightsouthg
  • lightsouthg
  • 2011年01月23日 20:58
  • 278

Visual Paradigm(三)Working with Diagrams

第三章 Working with Diagrams本章将向你展示怎样用VP-UML完成各项工作,如画图表元素(图形和连接器),定制连接器,编辑图表和输出图表为图片文件。本章主要有以下内容:一、创建图表...
  • chszs
  • chszs
  • 2006年10月12日 13:54
  • 5892

Correlation Filter in Visual Tracking系列一:Visual Object Tracking using Adaptive Correlation Filters 论

转载自:http://www.cnblogs.com/hanhuili/p/4266990.html Visual Object Tracking using Adaptive Correl...
  • qq_26898461
  • qq_26898461
  • 2016年09月09日 11:06
  • 1027

Visual Layer Overview(6)Using DrawingVisual Objects

Using DrawingVisual Objects这部分提供了怎样使用DrawingVisual对象的概要说明1.        DrawingVisual ObjectDrawingVisual...
  • Net_Ghost
  • Net_Ghost
  • 2006年06月14日 21:43
  • 1625

Visual Layer Overview(3)--VisualTreeHelper Class

                   VisualTreeHelper class 是一个 static helper class ,它提供了在运行环境管理Visual和 Visual3D objec...
  • Net_Ghost
  • Net_Ghost
  • 2006年06月10日 23:53
  • 1738
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Visual Layer Overview(1)--Role of the Visual Object
举报原因:
原因补充:

(最多只允许输入30个字)