《Programming WPF》翻译 第7章 5.可视化层编程

形状元素能提供一种便利的方式与图形一起工作,在一些情形中,添加表示绘图的元素到UI树中,可 能是比它的价值更加麻烦。你的数据可能被构造以一种易于编写代码的方式——简单地表现一系列基于数 据的绘图操作,而不是构造一棵对象树。

WPF提供一个“可视化层”API,作为一个对形状元素较低级别的折中。(实际上,形状元素全都在可 视化层得顶部被实现。)这个API使我们编写按需生成的代码。

可视化是一个可见的对象。WPF应用程序的外观是将它所有的可视化组合到屏幕上形成的。由于WPF生 成在在可视化层的顶级,每个元素都是可视化的。FrameworkElement基类间接派生于Visual。在可视化层 编程,简单地解决了创建一个可视化和编写代码告诉WPF我们想要在可视化中显示什么。

即使在这个低的级别,WPF的表现非常不同于Win32。图形加速的方式是托管的,这意味着你的按需生 成的代码很少被调用——少于在经典Windows应用程序中。

7.5.1 按需生成

按需生成的关键定制为OnRender方法。这个方法被WPF调用在它需要你的组件生成它的外观时。(这是 内嵌形状的类生成它们自身的方式。)

OnRender虚方法定义在OnDemandVisual类。大多数元素都间接的通过FrameworkElement派生于此,这 就增加了核心样式如外观和输入处理。

示例7-47显示了一个字定义的元素,覆写了OnRender。

示例7-47

public class CustomRender : FrameworkElement
{
    protected override void OnRender(DrawingContext drawingContext)
    {
        Debug.WriteLine("OnRender");

        base.OnRender (drawingContext);

        drawingContext.DrawRectangle(Brushes.Red, null, new Rect(0, 0, 100, 50));

        FormattedText text = new FormattedText("Hello, world",
            CultureInfo.CurrentUICulture, FlowDirection.LeftToRightThenTopToBottom,
            new Typeface("Verdana"), 24, Brushes.Black);
        drawingContext.DrawText(text, new Point(3, 3));
    }

}

时间: 2024-12-30 20:53:25

《Programming WPF》翻译 第7章 5.可视化层编程的相关文章

《Programming WPF》翻译 目录

原文:<Programming WPF>翻译 目录 注:第1.2章我只做了笔记,没有翻译,请大家阅读时注意. 还有就是,这本书的英文版本下载:[O'Reilly] Programming Windows Presentation Foundation (2005) - BBL 以下是这本书的目录: 1.Hello, WPF     1.1 WPF from Scratch 基础     1.2 Navigation 导航     1.3 属性元素     1.4 布局     1.6 数据绑定

《TensorFlow技术解析与实战》——第3章 可视化TensorFlow 3.1PlayGround

第3章 可视化TensorFlow 可视化是认识程序的最直观方式.在做数据分析时,可视化一般是数据分析最后一步的结果呈现.把可视化放到"基础篇",是为了让读者在安装完成后,就能先看一下TensorFlow到底有哪些功能,直观感受一下深度学习的学习成果,让学习目标一目了然. 3.1  PlayGround PlayGround[1]是一个用于教学目的的简单神经网络的在线演示.实验的图形化平台,非常强大地可视化了神经网络的训练过程.使用它可以在浏览器里训练神经网络,对Tensorflow有

《TensorFlow技术解析与实战》——第3章 可视化TensorFlow

第3章 可视化TensorFlow TensorFlow技术解析与实战可视化是认识程序的最直观方式.在做数据分析时,可视化一般是数据分析最后一步的结果呈现.把可视化放到"基础篇",是为了让读者在安装完成后,就能先看一下TensorFlow到底有哪些功能,直观感受一下深度学习的学习成果,让学习目标一目了然.

《深入理解OSGi:Equinox原理、应用与最佳实践》一第2章 模块层规范与原理

第2章 模块层规范与原理 从本章开始,我们将为读者讲解OSGi中最常用和最重要的内容."最常用和最重要"意味着并不会涵盖OSGi规范的所有方面."讲解"也不是对OSGi规范的直接翻译,笔者简化了OSGi规范中一些近乎于数学公式的严谨描述,改用尽可能通俗的语言进行介绍,并添加了目前业界在实际应用中使用规范中定义的内容的例子. 如果要学习Java语言,相信没有人会推荐从<Java语言规范>和<Java虚拟机规范>学起,因为刚开始接触Java的人没

【c++】涉及到MFC的可视化界面编程,如何设计高效率的类?有什么基本原则?

问题描述 [c++]涉及到MFC的可视化界面编程,如何设计高效率的类?有什么基本原则? 如题.用MFC编写有可视化界面的程序,如何设计类?可以谈自己的体会,也可以贴给我相关资源,谢谢! 解决方案 其实不需要多设计,mfc都替你封装好了,你需要的就是熟悉它的提供的各种控件组合,"来组装你的界面. 等你熟悉了,自然就知道怎么设计界面库了. 解决方案二: 纯 MFC 实现,还是借助于第三方一些库吧 不用太复杂的设计,贴图 + 简单的处理逻辑.将基本的控件设计成类就行! 解决方案三: 想要高效率就别用M

《OpenACC并行程序设计:性能优化实践指南》一 第1章 从串行编程到并行编程

第1章 从串行编程到并行编程 Rob Farber TechEnablement.com CEO/创始人 本章主要向读者介绍OpenACC,演示如何使用OpenACC编写运行在多核CPU和类似GPU加速器上的可移植并行程序,并展示如何在CPU和GPU上编译和运行OpenACC程序. 阅读本章后,读者将会理解以下内容: 如何创建.编译和运行OpenACC应用程序. 高性能OpenACC编程的三个准则. 数据并行和任务并行编程的基本概念. 理解大O表示法和Amdahl定律. 竞争条件.原子操作,以及

python 教程 第十九章、 图形界面编程

第十九章. 图形界面编程 import Tkinter top = Tkinter.Tk() hello = Tkinter.Label(top, text='Hello World!') hello.pack() quit = Tkinter.Button(top, text='QUIT',command=top.quit) quit.pack(fill=Tkinter.X, expand=1) Tkinter.mainloop()

《易学Python》——第6章 类与面向对象编程 6.1 类是什么

第6章 类与面向对象编程 本章介绍如下内容: 一种看待类的更简单方式: 如何使用类来设计程序. 在本书前面,始终未涉及Python中组织程序的基本方式之一:类.类和面向对象编程通常被认为是一个庞大而吓人的主题,仅供真正的程序员用来编写程序,因此您可能认为,要正确地使用它们,需要大量的理论知识.没有比这种看法更离谱的了.在Python中,使用类和面向编程易如反掌. 在本章中,您将首先复习第2章为游戏Hunt the Wumpus编写的洞穴生成代码,并了解到使用类编写这些代码容易得多:然后,您将以此

vBot 0.2发布 可视化的编程游戏

vBot是一个可视化的编程游戏.玩家使用一个小的命令拼贴来建立一个程序控制VBOT,并使可以激活每一个目标,使用有限的命令集. vBot 0.2这个版本大多数动画可以立即开始运行.增加了一个新的级别.通过双击可以将一个命令拼贴移动到下一个开放的空间.现在不允许调用F1到F1或F2到F2,以防止循环. 下载地址: https://bitbucket.org/leeharr/vbot/downloads/vbot-0.2.zip https://bitbucket.org/leeharr/vbot/