在屏幕上显示字符的原理

简介: 只描述在IA-32e模式下的字符显示首先要有一个字符库(包含这每一个字符的像素信息, 空白的地方时0x00, 一个字符一个8x16的矩阵)每一个像素点就是一个int类型4bytes大小的整数, 该整数的每一个字节都有特定的属性用来配置显示出来的字符的样式要想实现, 需要在定义一个二维数组, ...

只描述在IA-32e模式下的字符显示

  • 首先要有一个字符库(包含这每一个字符的像素信息, 空白的地方时0x00, 一个字符一个8x16的矩阵)
  • 每一个像素点就是一个int类型4bytes大小的整数, 该整数的每一个字节都有特定的属性用来配置显示出来的字符的样式
  • 要想实现, 需要在定义一个二维数组, 在二维数组中定义每一个字符对应的8x16矩阵的像素信息(像素值)
  • 通过printk函数实现在屏幕上显示字符串
  • 需要定义一个结构体Position, 定义在printk.h文件中

struct Position{
    // 保存着当前屏幕的分辨率
    int XResolution;
    int YResolution;

    // 保存着当前光标的位置
    int XPosition;
    int YPosition;

    // 保存着字符像素矩阵的尺寸
    int XCharSize;
    int YCharSize;

    // 保存着帧缓存区的起始地址和容量大小, 我们需要将字符像素信息写到该FrameBuffer中
    unsigned int *FB\_addr;
    unsigned long FB\_Length;
} Pos;
  • 在GNU编译器中内置了头文件stdarg.h, 我们只需要使用#include <stdarg.h>包含即可使用可变参数了
  • 在printk函数中主要处理的就是在fmt字符串中出现的\n, \b, \t, %s等参数
  • 其中\n, \b等转移字符都会修改在printk.h中定义的Pos结构体实例中的XPosition和YPosition, 比如遇到了\n, 则Pos.XPosition = 0; --Pos.YPosition;
目录
相关文章
|
7月前
|
存储
46.编写程序在屏幕上显示如下图形
46.编写程序在屏幕上显示如下图形
49 2
|
7月前
|
编解码 定位技术 Windows
电脑多个不同分辨率屏幕鼠标移动时出现偏移、错位情况的解决方法
电脑多个不同分辨率屏幕鼠标移动时出现偏移、错位情况的解决方法
317 1
|
7月前
|
机器学习/深度学习 索引
【Three.js入门】处理动画、尺寸自适应、双击进入/退出全屏(Clock跟踪时间,Gsap动画库,自适应画面,进入/退出全屏)
【Three.js入门】处理动画、尺寸自适应、双击进入/退出全屏(Clock跟踪时间,Gsap动画库,自适应画面,进入/退出全屏)
166 0
|
计算机视觉
一个窗口显示多个画面【附代码】
在有些项目中需要在一个窗口画面中显示多个子画面【这里说的不是plt.subplot()】,比如像下面这种,可以将狗头在画面的右下角进行显示。比如你是做目标检测或者跟踪等,你现在想要将检测后的目标在画面右下角显示或要进一步处理,那么这篇文章可以帮到你
176 0
一个窗口显示多个画面【附代码】
一篇文章帮助你理解跑马灯的滚动原理
一篇文章帮助你理解跑马灯的滚动原理
168 0
一篇文章帮助你理解跑马灯的滚动原理
屏幕缩放功能的研究
屏幕缩放功能的研究
139 0
简单的手指绘图并保存所绘图片【源码】
简单的手指绘图并保存所绘图片【源码】
75 0
|
前端开发 C++
QML学习笔记(四)-Canva画板画图功能-跟随鼠标位置进行随笔画
参考博主文章进行整理了代码,实现功能参考:https://blog.csdn.net/UbuntuTouch/article/details/46375697 源码:https://github.com/sueRimn/QML-ExampleDemos 更多的鼠标实时画图-画直线画圆画矩形等看下...
2493 0
|
机器学习/深度学习 存储 前端开发
WEBGL学习【十三】鼠标点击立方体改变颜色的原理与实现
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/79035437 // PickFace.
1199 0