C++程序设计:原理与实践(进阶篇)17.2 一个基本显示模型

17.2 一个基本显示模型


iostream库是面向字符的输入输出流,用于处理数值序列或者书籍文本最为适合。其中,直接支持图形位置概念的仅有newline和tab控制字符。版面设计(排版、“标注”)语言,如Troff、TeX、Word、HTTP、XML(及其配套的图形包),允许在一维字符流中嵌入颜色和二维位置等概念。例如:

 

这段HTML代码指定了一个文档头(<h2>…</h2>)、一个包含若干列表项(<il>…</il>)的列表(<ul>…</ul>)和一个段落(<p>)。这里,我们省略了很多无关的代码。这类语言的关键点是,你可以在普通文本中表示版面的概念,但代码与屏幕上的显示内容之间不是直接关联的,而是由解释这些“标注”命令的程序来控制屏幕上的显示内容。这种技术极为简单,又极为有效(现在你所阅读的所有文档等基本都是这样生成的),但也有其缺点。

本章和之后四章介绍另外一种技术:一种直接在屏幕显示的图形及图形用户界面的概念。其基本概念先天就是图形化的(而且都是二维的,适应计算机屏幕的矩形区域),这些基本概念包括坐标、线、矩形和圆等。从编程的角度看,其目的是建立内存中的对象和屏幕图像的直接对应关系。

其基本模型如下:我们利用图形系统提供的基本对象(如线)组合出更复杂的对象;然后将这些对象“添加”到一个表示物理屏幕的窗口对象中;最后,用一个程序将我们添加到窗口上的对象显示在屏幕上。我们可以将这个程序看作屏幕显示本身,或者是一个“显示引擎”,或者是“我们的图形库”,或是“GUI库”,甚至(幽默地)将其看作“在屏幕背后进行画图工作的小矮人”。

 

“显示引擎”负责在屏幕上绘制线,将文本串放置在屏幕上,为屏幕区域着色,等等。简单起见,我们将使用“我们的GUI库”甚至“系统”来表示显示引擎,虽然GUI库的功能不只是绘制对象。与我们的代码调用GUI库实现大部分图形功能一样,GUI库将它的很多工作交由操作系统来完成。

时间: 2024-09-15 09:04:47

C++程序设计:原理与实践(进阶篇)17.2 一个基本显示模型的相关文章

c++-关于《C++程序设计原理与实践》第3章例子的一个问题

问题描述 关于<C++程序设计原理与实践>第3章例子的一个问题 本人菜鸟,现正在学习C++.<C++程序设计原理与实践>第3章有一个例子,代码如下: #include #include #include #include #include using namespace std; inline void keep_window_open(){ char ch; cin >> ch; } int main() //C++ Programs start by executi

源代码-C++程序设计原理与实践

问题描述 C++程序设计原理与实践 #include "std_lib_facilities.h" int main() { cout<<"Hello,world!n"; return 0; } 我下了源代码,放到那里才能猜VC98编译时不出错?最好详细点,带有图解 解决方案 ...大哥,都什么年代了还用98

《 C++程序设计:原理与实践(进阶篇.》导读

本节书摘来自华章出版社< C++程序设计:原理与实践(进阶篇)>一书中作者[美] 本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) 著 刘晓光 李忠伟 王刚 译     前 言 Programming: Principles and Practice Using C++, Second Edition 该死的鱼雷!全速前进. --Admiral Farragut 程序设计是这样一门艺术,它将问题求解方案描述成计算机可以执行的形式.程序设计中很多工作都花费在寻找求解方案以及对其求精上

《网络安全原理与实践》一1.5 构建网络安全策略

1.5 构建网络安全策略 网络安全原理与实践网络安全策略定义了一个框架,它基于风险评估分析以保护连接在网络上的资产.网络安全策略对访问连接在网络上的不同资产定义了访问限制和访问规则.它还是用户和管理员在建立.使用和审计网络时的信息来源. 网络安全策略在范围上应该是全面和广泛的.这也就意味着当我们要基于这个策略做安全方案的时候,它应该提供一些摘要性的原则,而不是这个策略的实现的具体细节等内容.这些细节可能一晚上就变了,但是这些细节所反映的一般性原则是保持不变的. S.Garfinkel和G.Spa

C++程序设计:原理与实践(进阶篇)17.1 为什么要使用图形

摘要 Programming: Principles and Practice Using C++, Second Edition 一个显示模型 直到20世纪30年代,世界才从黑白变成彩色的. --Calvin's dad 本章描述了一个显示模型(GUI的输出部分),并给出了使用方法和一些基本概念,如屏幕坐标.线和颜色等.Line.Lines.Polygon.Axis和Text都是Shape的实例.Shape是内存中的一个对象,我们可以将其显示在屏幕上并进行适当的操作.后面两章将进一步探讨这些类

C++程序设计:原理与实践(进阶篇)15.10 容器概览

15.10 容器概览 STL提供了一些容器: 标准容器 vector 连续存储的元素序列:应用作默认容器 list 双向链表:当你希望在不移动现有元素的情况下完成对元素的插入和删除时使用 deque list和vector的交叉:除非你对算法和计算机体系结构知识非常精通,否则不要使用它 map 平衡有序树:当你需要按值访问元素时使用它(参见16.6.1-16.6.3节) multimap 平衡有序树,可以包含同一个key的多个拷贝:当你需要按值访问元素时使用它(参见16.6.1-16.6.3节)

100分求java语言程序设计进阶篇pdf

问题描述 求java语言程序设计进阶篇pdf 解决方案 解决方案二:同求啊!!!解决方案三:这个网上是没有的,我也在网上找过,我建议你去网上找java核心技术<上下卷>pdf这本书写的也是不错的,,这个网上有电子书的,,这两本书配合着java编程思想,相当的不错的解决方案四:真正的进阶是需要项目练习的,纸上得来终觉浅解决方案五:引用2楼xinzailiulei的回复: 这个网上是没有的,我也在网上找过,我建议你去网上找java核心技术<上下卷>pdf这本书写的也是不错的,,这个网上

学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一点Git--20分钟git快速上手 里的踊跃发言.这里再次分享干货, 简单介绍mysql双机,多机异地热备简单原理实战. 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一 致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到另一个. 2. 可以做负载均衡,可以将请求分摊到其中任何一台上

Node.js Stream - 进阶篇

上篇(基础篇)主要介绍了Stream的基本概念和用法,本篇将深入剖析背后工作原理,重点是如何实现流式数据处理和 back pressure 机制. 目录 本篇介绍 stream 是如何实现流式数据处理的. 数据生产和消耗的媒介 为什么使用流取数据 下面是一个读取文件内容的例子: const fs = require('fs') fs.readFile(file, function (err, body) { console.log(body) console.log(body.toString(