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库将它的很多工作交由操作系统来完成。
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的