zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

C++原理 一个 实践 模型 显示 基本 程序设计
2023-09-11 14:16:05 时间


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

 

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

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

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

 

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


C++ 中的内存对齐——实践篇 本文为《C++ 中的内存对齐》系列之下篇,[上篇](https://ata.alibaba-inc.com/articles/243681)介绍内存对齐的理论基础,建议优先食用~ ### TL;DR - 编译器可能会在结构体中填充字节,以满足所有成员的对齐要求; - 可以通过预处理指令 `#pragma pack` 及 `alignas` 标识符自定义内存对齐; - 对于栈上及静态变量,编
客户端单元测试实践——C++篇 我们团队在手淘中主要负责BehaviX模块,代码主要是一些逻辑功能,很少涉及到UI,为了减少双端不一致问题、提高性能,我们采用了将核心代码C++化的策略。由于团队项目偏底层,测试同学难以完全覆盖,回归成本较高,部分功能依赖研发同学自测,为了提高系统的稳定性,我们在团队中实行了单元测试,同时由于集团客户端C++单元测试相关经验沉淀较少,所以在此分享下团队在做单元测试中遇到的问题与解决思路,希望能对大家所有帮助。
Linux C++ 应用二进制兼容实践 本文将介绍一些在开发多 Linux 平台 C++ 应用时可能遇到的兼容性问题和相关的解法。虽然是以 C++ 为讲述对象,但兼容性这个问题,在没有 VM 帮你做这些脏活累活的情况下,是所有 C-like 语言(比如 Go、Rust 等)都可能遇到的。
带你读《C++代码整洁之道:C++17 可持续软件开发模式实践》之三:原则 如果想用C++语言编写出易维护的、扩展性良好的以及生命力强的软件,那么,对于所有的软件开发人员、软件设计人员、对现代C++代码感兴趣或想降低开发成本的项目领导者来说,本书都是必需品。如果你想自学编写整洁的C++代码,那么本书也是你需要的。本书旨在通过一些示例帮助各个技术层次的开发人员编写出易懂的、灵活的、可维护的和高效的C++代码。即使你是一名资深的开发工程师,在本书中也可以找到有价值的知识点。
带你读《C++代码整洁之道:C++17 可持续软件开发模式实践》之二:构建安全体系 如果想用C++语言编写出易维护的、扩展性良好的以及生命力强的软件,那么,对于所有的软件开发人员、软件设计人员、对现代C++代码感兴趣或想降低开发成本的项目领导者来说,本书都是必需品。如果你想自学编写整洁的C++代码,那么本书也是你需要的。本书旨在通过一些示例帮助各个技术层次的开发人员编写出易懂的、灵活的、可维护的和高效的C++代码。即使你是一名资深的开发工程师,在本书中也可以找到有价值的知识点。