上篇说了屏幕的文本显示原理:ASCII编码。计算机内部文字其实是排列组合的数组,屏幕就是打印出来相关数组地址里的文字。那本期就认识屏幕是如何显示的,不仅仅是文字,还有图像图片图形。

计算机基础知识识图(接地气系列认识计算机)(1)

RGB这个概念大家都懂,红绿蓝三原色嘛。三个原色混合,可以获取成百上千种颜色。那就容易了不是,如果我们想让一个方块变化颜色,简单啊,用三原色混呗。下面这个图自己看。如何显示一副图像呢,用红绿蓝的小像素混合成一个大像素,表示一张图的话需要很多大像素,这就是分辨率,很容易理解是吧。那让图像动起来咋办?就每秒刷新24张不同的图片,快速PPT,通过人眼暂留达到动态效果,这就是刷新率,也很容易理解对吧?

计算机基础知识识图(接地气系列认识计算机)(2)

那屏幕驱动的工作,就是让几百万个像素,通过RGB变化不停实现颜色变化。计算机发送显示指令,每个区的像素可以几乎同一时间显示不同的内容。但是还是不讨论太复杂的问题。我们去认识计算机里屏幕的所有图形显示。

坐标的概念大家都懂。windows体系下,例如经典的CMD界面,或者说DOS界面,纯黑界面,屏幕坐标是从左上方开始的,地位为(0,0)。右边地址就是(0,1),下边地址就是(1,0)。因为屏幕其实是个2D显示,坐标系只有纵横轴。这是只有一层窗口平铺的简单设计。

计算机基础知识识图(接地气系列认识计算机)(3)

windows体系下,每个像素用坐标表示,这个谁都理解。每个像素的颜色呢,用红绿蓝三原色的不同亮度表示,给固定的数字,每个颜色从0到255表示总共是256个位。那就容易了,白色就是三原色默认值嘛,表示为(0,0,0),或者用16进制表示为#FFFFFF,因为一般的驱动都是用16进制表示数的,没别的理由,习惯罢了。那纯黑色很容易理解,RGB(0,0,0),三原色亮度都是0,那就是黑,对吧。

RGB(255,0,0)就是红,RGB(0,255,0)就是绿,这都很容易理解。这个知识就过了吧。

计算机基础知识识图(接地气系列认识计算机)(4)

win的每个像素显示颜色,而颜色组合,形成界面。每个任务运行在单独的窗口下,win体系是这样。塞班系统只有全屏幕,安卓可以根据指定分辨率全屏,这俩系统都不能拖动窗口。win因为是为大屏幕设计,窗口套窗口,就很直观。

而层层叠叠的窗口,跟全屏没别的窗口,还是不一样的,复杂一些。win体系,就在坐标系上动脑筋,在性能损失小的前提下实现了多层窗口界面。

计算机基础知识识图(接地气系列认识计算机)(5)

反正,程序里的图形变化,都是以窗口坐标为基准。你拖动框体,是windows系统的功劳。程序显示只要关心你相对屏幕左上角的坐标位置就好了。程序框架内显示,只要计算屏幕坐标 距离框架的位置,刷新时候,坐标 固定数字就可以了。就算三层,5层套在一起,都是简单的加减法计算。绘图,就是显示卡的负担了。这种硬件剥离,让windows在90年代,2000年代初,对各种老式服务器,游戏机的概念,具备碾压性优势。

win的坐标系三层,分别是Client Coordinate就是你操作的界面坐标,Form Coordinate,就是你拖动的框架坐标,Screen Coordinate就是屏幕左上角开始的坐标。通过这一套设计,win的框架内,鼠标拖拖动动基本都是简单的加减法计算,基本不依赖CPU,可谓异常节省性能。以至于,程序员基本不考虑拖框体这些优化。所以,本期看看就好,了解就好,编程根本用不到。

计算机基础知识识图(接地气系列认识计算机)(6)

至于缩放分辨率,那是win另外的绝活了,90年代就做到了如此,可谓良心。

本期结束吧。下期走近硬盘跟文件体系,看看windows下,硬盘速度到底烂在哪里。

,