-
2022-01-14 13:18:33
Pygame Font文本和字体(含示例)
文本是任何一款游戏中不可或缺的重要要素之一,Pygame 通过pygame.font模块来创建一个字体对象,从而实现绘制文本的目的。该模块的常用方法如下所示:
方法 说明
pygame.font.init() 初始化字体模块
pygame.font.quit() 取消初始化字体模块
pygame.font.get_init() 检查字体模块是否被初始化,返回一个布尔值。
pygame.font.get_default_font() 获得默认字体的文件名。返回系统中字体的文件名
pygame.font.get_fonts() 获取所有可使用的字体,返回值是所有可用的字体列表
pygame.font.match_font() 从系统的字体库中匹配字体文件,返回值是完整的字体文件路径
pygame.font.SysFont() 从系统的字体库中创建一个 Font 对象
pygame.font.Font() 从一个字体文件创建一个 Font 对象
Font 模块提供了两种创建字体(Font)对象的方法,分别是:
SysFont(从系统中加载字体文件创建字体对象)
Font(通过文件路径创建字体对象)
下面对这两种方法分分别进行介绍:
1) font.SysFont()
直接从系统中加载字体使用如下方法:
pygame.font.SysFont(name, size, bold=False, italic=False)
name:列表参数值,表示要从系统中加载的字体名称,它会按照列表中的元素顺序依次搜索,如果系统中没有列表中的字体,将使用 Pygame
默认的字体。
size:表示字体的大小;
bold:字体是否加粗;
italic:字体是否为斜体。使用示例如下:
print("获取系统中所有可用字体",pygame.font.get_fonts()) my_font = pygame.font.SysFont(['方正粗黑宋简体','microsoftsansserif'],50)
上述方法将优先使用“方正粗黑宋简体”。
注意,如果要显示中文,那么一定要使用中文字体文件,比如“方正粗黑宋简体”,否则会出现文字乱码的现象(编程帮三个字无法显示)。如下所示:
2) font.Font()
当我们想要在游戏中引入比较炫酷的字体,而系统中又不存在时,我们可以使用另外一种方法,从外部加载字体文件来绘制文本。其语法格式如下:
my_font = pygame.font.Font(filename, size)
参数说明如下:
filename:字符串格式,表示字体文件的所在路径;
size:设置字体的大小。使用示例如下:
f = pygame.font.Font('C:/Users/Administrator/Desktop/willhar_.ttf',50) 从桌面加载了一个字体文件来创建字体对象,并设置字体大小为 50。注意,上述字体文件是在网上下载的,您也可以任意下载(点击网址前往),或者使用系统库中的字体文件。
3) 字体对象方法
Pygame 为处理字体对象提供了一些常用方法,如下所示:
方法 说明
pygame.font.Font.render() 该函数创建一个渲染了文本的 Surface 对象
pygame.font.Font.size() 该函数返回渲染文本所需的尺寸大小,返回值
是一个一元组 (width,height)pygame.font.Font.set_underline() 是否为文本内容绘制下划线
pygame.font.Font.get_underline() 检查文本是否绘制了下划线
pygame.font.Font.set_bold() 启动粗体字渲染
pygame.font.Font.get_bold() 检查文本是否使用粗体渲染
pygame.font.Font.set_italic() 启动斜体字渲染
pygame.font.Font.metrics() 获取字符串中每一个字符的详细参数
pygame.font.Font.get_italic() 检查文本是否使用斜体渲染
pygame.font.Font.get_linesize() 获取字体文本的行高
pygame.font.Font.get_height() 获取字体的高度
pygame.font.Font.get_ascent() 获取字体顶端到基准线的距离
pygame.font.Font.get_descent() 获取字体底端到基准线的距离
使用上述方法,我们可以非常方便地对字体进行渲染,或者获取字体的相关信息,比如字体的高度、是否是粗体、斜体等信息。
上述方法中使用最多要数第一个方法,它是绘制文本内容的关键方法,其语法格式如下:
render(text, antialias, color, background=None)
参数说明如下所示:
text:要绘制的文本内容
antialias:布尔值参数,是否是平滑字体(抗锯齿)。
color:设置字体颜色;
background:可选参数,默认为 None,该参数用来设置字体的背景颜色。下面看一组简单的示例:
import sys import pygame # 初始化 pygame.init() screen = pygame.display.set_mode((600,400)) #填充主窗口的背景颜色 screen.fill((20,90,50)) #设置窗口标题 pygame.display.set_caption('c语言') # 字体文件路径 C:/Windows/Fonts/simhei.ttf f = pygame.font.Font('C:/Windows/Fonts/simhei.ttf',50) # render(text, antialias, color, background=None) -> Surface text = f.render("网址:c.biancheng.net",True,(255,0,0),(255,255,255)) #获得显示对象的 rect区域大小 textRect =text.get_rect() #设置显示对象居中 textRect.center = (300,200) screen.blit(text,textRect) while True: # 循环获取事件,监听事件 for event in pygame.event.get(): # 判断用户是否点了关闭按钮 if event.type == pygame.QUIT: #卸载所有pygame模块 pygame.quit() #终止程序 sys.exit() pygame.display.flip() #更新屏幕内容
除了使用上述方法之外,Pygame 为了增强字体模块的功能,在新的版本中又加入了另外一个字体模块,它就是 Freetype 模块。该模块属于 Pygame 的高级模块, 它能够完全可以取代 Font 模块,并且在 Font 模块的基础上又添加了许多新功能,比如调整字符间距离,字体垂直模式以及逆时针旋转文本等(详情可阅读官方文档)。
如果想 Freetype 模块,必须使用以下方式导包:
import pygame.freetype
下面使用 Freetype 模块来绘制文本内容,代码如下:
import sys,pygame import pygame.freetype pygame.init() # 设置位置变量 pos=[180,50] # 设置颜色变量 GOLD=255,251,0 BLACK=0,0,0 screen=pygame.display.set_mode((600,400)) pygame.display.set_caption("c语言中文网") f1=pygame.freetype.Font("C:/Users/Administrator/Desktop/willhar_.ttf",45) # 注意,这里使用render_to() 来绘制文本内容,与render 相比,该方法无返回值 # 参数说明: # pos 绘制文本开始的位置,fgcolor表示前景色,bgcolor表示背景色,rotation表示文本旋转的角度 freeRect = f1.render_to(screen, pos,"I love c.biancheng.net",fgcolor = GOLD,bgcolor = BLACK, rotation=35) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() pygame.display.update()
更多相关内容 -
php选项按钮动态命名,word2010开始选项卡字体组工具上B按钮的作用
2021-04-21 14:21:10在Word2010中,“开始”选项卡“字体”组中“B”图形按钮的作用是让选定对象变为粗体。任何地点访问您的文件。Word 2010 旨在向您提供最上乘的文档格式设置工具,利用它还可更轻松、高效地组织和编写文档,并使这些...在Word2010中,“开始”选项卡“字体”组中“B”图形按钮的作用是让选定对象变为粗体。
任何地点访问您的文件。Word 2010 旨在向您提供最上乘的文档格式设置工具,利用它还可更轻松、高效地组织和编写文档,并使这些文档唾手可得,无论何时何地灵感迸发,都可捕获这些灵感。
比以往更轻松地创建具有视觉冲击力的文档
Word 2010 提供了一系列新增和改进的工具,使您像设计专家一样并突出重要内容。
直接将令人印象深刻的格式效果(例如渐变填充和映像)添加到文档中的文本。您可以将许多相同效果应用于文本和可能已用于图片、图表和 SmartArt图形的形状。
使用新增和改进的图片编辑工具(包括通用的艺术效果和高级更正、颜色以及裁剪工具)可以微调您的文档中的各个图片,使其看起来效果更佳。
从许多可自定义的 Office 主题中进行选择,以调整文档中的颜色、字体和图形格式效果。自定义主题使用您自己的个人或业务品牌。
Microsoft PowerPoint 和 Excel 2010 可以使用相同的 Office 主题,以便方便地为所有文档赋予一致、专业的外观。
使用大量 SmartArt 图形(包括组织结构图和图片图表的许多新布局)进行美化, 使创建令人印象深刻的图形与键入项目符号列表一样简单。
SmartArt 图形自动与所选的文档主题协调一致,以便只需几次单击即可获得所有文档内容的精美外观格式。
更多Word 相关技术文章,请访问Word教程栏目进行学习!
-
实战案例1:实现单选按钮及在文本框中展示选中的按钮内容
2018-07-27 12:02:00案例1:实现单选按钮,并将单选按钮内容填充至文本框 (1)元件准备:三个单选按钮,一个button按钮,一个文本框 (2)分析:a.单选按钮的实现; b.将选中按钮的内容填充至文本框; c.在下一个选中按钮的...案例1:实现单选按钮,并将单选按钮内容填充至文本框
(1)元件准备:三个单选按钮,一个button按钮,一个文本框
(2)分析:a.单选按钮的实现;
b.将选中按钮的内容填充至文本框;
c.在下一个选中按钮的行为产生之前,对应的单选按钮还是处于选中的状态。
操作步骤:
1.首先在左下角的图形库里选择三个单选按钮(以三个按钮为例),并分别对三个按钮命名,命名方式是选中要命名的按钮,在属性上面的空白框里输入命名,操作如下所示:
2.选中按钮操作的实现:由于该页面存在三个按钮,要实现单选的效果,必须要使这几个按钮产生互斥,那么这时候我们需要利用交互中的添加用例,当我们选中其中一个按钮时(选中状态为true),其他两个按钮的选中状态就应该为false,这里我们以“man”这个单选按钮为例,即将man按钮的选中状态设置为true,同时其他两个按钮设置为false即可,具体操作如下所示:
由于woman及baomi按钮选中互斥的操作与man按钮操作类似,这里不多说。完成了单选按钮的设置,那么问题来了,我们要如何将选中按钮的内容可以显示在对应的文本框呢?与此同时,当内容显示在文本框时,对应的单选按钮还是处于选中的状态(在点击下一个按钮之前)?
3.将选中的单选按钮内容显示在对应的文本框中:首先需要在工作区域拖入一个文本框,为了后续便于区分,这里我们将文本框命名为“展示选中内容”,再添加一个button按钮来触发交互行为,以下所有设置都是在该按钮上设置的。
a.选中按钮的设置:选中按钮,选择交互行为中的添加用例,在弹出的用例编辑页面双击case1,弹出条件设立弹框,设置对应的状态,以man按钮为例,具体操作如下所示:
b.选择“设置文本”,双击中间模块的内容,右边会对应弹出配置动作相应的图形,勾选要显示内容的文本框,在右下角填入文本框中要显示的内容“男”,点击确定,预览就可以发现文本框中会显示选中按钮的内容,具体操作如下所示:
c.在内容显示在文本框时,选择下一个选中按钮之前,对应的单选按钮还是处于选中的状态的设置,具体操作如下所示:
三个按钮设置完成之后如下图所示:
4.按F5预览效果如下:
-
使用Windows中的字体生成点阵字库
2018-07-09 09:55:05所有的汉字或者英文都是下面的原理,由左至右,每8个点占用一个字节,最后不足8个字节的占用一个字节,而且从最高位向最低...以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H...所有的汉字或者英文都是下面的原理,
由左至右,每8个点占用一个字节,最后不足8个字节的占用一个字节,而且从最高位向最低位排列。
生成的字库说明:(以12×12例子)
一个汉字占用字节数:12÷8=1····4也就是占用了2×12=24个字节。
编码排序A0A0→A0FE A1A0→A2FE依次排列。
以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H=32H个。所以在12×12字库的起始位置就是[{FE-A0}*2EH+32H]*24=104976开始的24个字节就是我的点阵模。
其他的类推即可。
英文点阵也是如此推理。首先需要理解的是点阵字库是一个数据文件,在这个数据文件里面保存了所有文字的点阵数据.至于什么是点阵,我想我不讲大家都知道 的,使用过"文曲星"之类的电子辞典吧,那个的液晶显示器上面显示的汉子就能够明显的看出"点阵"的痕迹.在 PC 机上也是如此,文字也是由点阵来组成了,不同的是,PC机显示器的显示分辨率更高,高到了我们肉眼无法区分的地步,因此"点阵"的痕迹也就不那么明显了.
点阵、矩阵、位图这三个概念在本质上是有联系的,从某种程度上来讲,这三个就是同义词.点阵从本质上讲就是单色位图,他使用一个比特来表示一个点,如果这 个比特为0,表示某个位置没有点,如果为1表示某个位置有点.矩阵和位图有着密不可分的联系,矩阵其实是位图的数学抽象,是一个二维的阵列.位图就是这种 二维的阵列,这个阵列中的 (x,y) 位置上的数据代表的就是对原始图形进行采样量化后的颜色值.但是,另一方面,我们要面对的问题是,计算机中数据的存放都是一维的,线性的.因此,我们需要 将二维的数据线性化到一维里面去.通常的做法就是将二维数据按行顺序的存放,这样就线性化到了一维.
那么点阵字的数据存放细节到底是怎么样的呢.其实也十分的简单,举个例子最能说明问题.比如说 16*16 的点阵,也就是说每一行有16个点,由于一个点使用一个比特来表示,如果这个比特的值为1,则表示这个位置有点,如果这个比特的值为0,则表示这个位置没 有点,那么一行也就需要16个比特,而8个比特就是一个字节,也就是说,这个点阵中,一行的数据需要两个字节来存放.第一行的前八个点的数据存放在点阵数 据的第一个字节里面,第一行的后面八个点的数据存放在点阵数据的第二个字节里面,第二行的前八个点的数据存放在点阵数据的第三个字节里面,…,然后后 面的就以此类推了.这样我们可以计算出存放一个点阵总共需要32个字节.看看下面这个图形化的例子:
| |1| | | | | | | | | | |1| | | |
| | |1|1| |1|1|1|1|1|1|1|1|1| | |
| | | |1| | | | | | | | |1| | | |
|1| | | | | |1| | | | | |1| | | |
| |1|1| | | |1| | | | | |1| | | |
| | |1| | | |1| | | | |1| | | | |
| | | | |1| | |1| | | |1| | | | |
| | | |1| | | |1| | |1| | | | | |
| | |1| | | | | |1| |1| | | | | |
|1|1|1| | | | | | |1| | | | | | |
| | |1| | | | | |1| |1| | | | | |
| | |1| | | | |1| | | |1| | | | |
| | |1| | | |1| | | | | |1| | | |
| | |1| | |1| | | | | | |1|1|1| |
| | | | |1| | | | | | | | |1| | |
| | | | | | | | | | | | | | | | |
可以看出这是一个"汉"字的点阵,当然文本的方式效果不是很好.根据上面的原则,我们可以写出这个点阵的点阵数 据:0x40,0x08,0x37,0xfc,0x10,0x08,…, 当然写这个确实很麻烦所以我不再继续下去.我这样做,也只是为了向你说明,在点阵字库中,每一个点阵的数据就是按照这种方式存放的.
当然也存在着不规则的点阵,这里说的不规则,指的是点阵的宽度不是8的倍数,比如 12*12 的点阵,那么这样的点阵数据又是如何存放的呢?其实也很简单,每一行的前面8个点存放在一个字节里面,每一行的剩下的4点就使用一个字节来存放,也就是说 剩下的4个点将占用一个字节的高4位,而这个字节的低4位没有使用,全部都默认的为零.这样做当然显得有点浪费,不过却能够便于我们进行存放和寻址.对于 其他不规则的点阵,也是按照这个原则进行处理的.这样我们可以得出一个 m*n 的点阵所占用的字节数为 (m+7)/8*n.
在明白了以上所讲的以后,我们可以写出一个显示一个任意大小的点阵字模的函数,这个函数的功能是输出一个宽度为w,高度为h的字模到屏幕的 (x,y) 坐标出,文字的颜色为 color,文字的点阵数据为 pdata 所指:
/*输出字模的函数*/
void _draw_model(char *pdata, int w, int h, int x, int y, int color)
{
int i; /* 控制行 */
int j; /* 控制一行中的8个点 */
int k; /* 一行中的第几个"8个点"了 */
int nc; /* 到点阵数据的第几个字节了 */
int cols; /* 控制列 */
BYTE static mask[8]={128, 64, 32, 16, 8, 4, 2, 1}; /* 位屏蔽字 */
w = (w + 7) / 8 * 8; /* 重新计算w */
nc = 0;
for (i=0; i<h; i++)
{
cols = 0;
for (k=0; k<w/8; k++)
{
for (j=0; j<8; j++)
{
if (pdata[nc]&mask[j])
putpixel(x+cols, y+i, color);
cols++;
}
nc++;
}
}
}
代码很简单,不用怎么讲解就能看懂,代码可能不是最优化的,但是应该是最易读懂的.其中的 putpixel 函数,使用的是TC提供的 Graphics 中的画点函数.使用这个函数就可以完成点阵任意大小的点阵字模的输出.
接下来的问题就是如何在汉子库中寻址某个汉子的点阵数据了.要解决这个问题,首先需要了解汉字在计算机中是如何表示的.在计算机中英文可以使用 ASCII 码来表示,而汉字使用的是扩展 ASCII 码,并且使用两个扩展 ASCII 码来表示一个汉字.一个 ASCII 码使用一个字节表示,所谓扩展 ASCII 码,也就是 ASCII 码的最高位是1的 ASCII 码,简单的说就是码值大于等于 128 的 ASCII 码.一个汉字由两个扩展 ASCII 码组成,第一个扩展 ASCII 码用来存放区码,第二个扩展 ASCII 码用来存放位码.在 GB2312-80 标准中,将所有的汉字分为94个区,每个区有94个位可以存放94个汉字,形成了人们常说的区位码,这样总共就有 94*94=8836 个汉字.在点阵字库中,汉字点阵数据就是按照这个区位的顺序来存放的,也就是最先存放的是第一个区的汉字点阵数据,在每一个区中有是按照位的顺序来存放 的.在汉字的内码中,汉字区位码的存放实在扩展 ASCII 基础上存放的,并且将区码和位码都加上了32,然后存放在两个扩展 ASCII 码中.具体的说就是:
第一个扩展ASCII码 = 128+32 + 汉字区码
第二个扩展ASCII吗 = 128+32 + 汉字位码
如果用char hz[2]来表示一个汉字,那么我可以计算出这个汉字的区位码为:
区码 = hz[0] - 128 - 32 = hz[0] - 160
位码 = hz[1] - 128 - 32 = hz[1] - 160.
这样,我们可以根据区位码在文件中进行殉职了,寻址公式如下:
汉字点阵数据在字库文件中的偏移 = ((区码-1) * 94 + 位码) * 一个点阵字模占用的字节数
在寻址以后,即可读取汉字的点阵数据到缓冲区进行显示了.以下是实现代码:
/* 输出一个汉字的函数 */
void _draw_hz(char hz[2], FILE *fp, int x, int y, int w, int h, int color)
{
char fONtbuf[128]; /* 足够大的缓冲区,也可以动态分配 */
int ch0 = (BYTE)hz[0]-0xA0; /* 区码 */
int ch1 = (BYTE)hz[1]-0xA0; /* 位码 */
/* 计算偏移 */
long offset = (long)pf->_hz_buf_size * ((ch0 - 1) * 94 + ch1 - 1);
fseek(fp, offset, SEEK_SET); /* 进行寻址 */
fread(fontbuf, 1, (w + 7) / 8 * h, fp); /* 读入点阵数据 */
_draw_model(fontbuf, w, h, x, y, color); /* 绘制字模 */
}
以上介绍完了中文点阵字库的原理,当然还有英文点阵字库了.英文点阵字库中单个点阵字模数据的存放方式与中文是一模一样的,也就是对我们所写的 _draw_model 函数同样可以使用到英文字库中.唯一不同的是对点阵字库的寻址上.英文使用的就是 ASCII 码,其码值是0到127,寻址公式为:
英文点阵数据在英文点阵字库中的偏移 = 英文的ASCII码 * 一个英文字模占用的字节数
可以看到,区分中英文的关键就是,一个字符是 ASCII 码还是扩展 ASCII 码,如果是 ASCII 码,其范围是0到127,这样是使用的英文字库,如果是扩展 ASCII 码,则与其后的另一个扩展 ASCII 码组成汉字内码,使用中文字库进行显示.只要正确区分 ASCII 码的类型并进行分别的处理,也就能实现中英文字符串的混合输出了.
我们都只知道,各种字符在电脑屏幕上都是以一些点来表示的,因此也叫点阵.最早的字库就是直接把这些点存储起来,就是点阵字库.常见的汉字点阵字库有 16x16, 24x24 等.点阵字库也有很多种,主要区别在于其中存储编码的方式不同.点阵字库的最大缺点就是它是固定分辨率的,也就是每种字库都有固定的大小尺寸,在原始尺寸下使用,效果很好,但如果将其放大或缩小使用,效果就很糟糕了,就会出现我们通常说的锯齿现象.因为需要的字体大小组合有无数种,我们也不可能为每种大小都定义一个点阵字库.于是就出现了矢量字库.
矢量字库
矢量字库是把每个字符的笔划分解成各种直线和曲线,然后记下这些直线和曲线的参数,在显示的时候,再根据具体的尺寸大小,画出这些线条,就还原了原来的字符.它的好处就是可以随意放大缩小而不失真.而且所需存储量和字符大小无关.矢量字库有很多种,区别在于他们采用的不同数学模型来描述组成字符的线条.常见的矢量字库有 Type1字库和Truetype字库.
在点阵字库中,每个字符由一个位图表示(如图2.5所示),并把它用一个称为字符掩膜的矩阵来表示,其中的每个元素都是一位二进制数,如果该位为1表示字符的笔画经过此位,该像素置为字符颜色;如果该位为0,表示字符的笔画不经过此位,该像素置为背景颜色.点阵字符的显示分为两步:首先从字库中将它的位图检索出来,然后将检索到的位图写到帧缓冲器中.
在实际应用中,同一个字符有多种字体(如宋体、楷体等),每种字体又有多种大小型号,因此字库的存储空间十分庞大.为了减少存储空间,一般采用压缩技术.
矢量字符记录字符的笔画信息而不是整个位图,具有存储空间小,美观、变换方便等优点.例如:在AutoCAD中使用图形实体-形(Shape)-来定义矢量字符,其中,采用了直线和圆弧作为基本的笔画来对矢量字符进行描述. 对于字符的旋转、放大、缩小等几何变换,点阵字符需要对其位图中的每个象素进行变换,而矢量字符则只需要对其几何图素进行变换就可以了,例如:对直线笔画的两个端点进行变换,对圆弧的起点、终点、半径和圆心进行变换等等.
矢量字符的显示也分为两步.首先从字库中将它的字符信息.然后取出端点坐标,对其进行适当的几何变换,再根据各端点的标志显示出字符.
轮廓字形法是当今国际上最流行的一种字符表示方法,其压缩比大,且能保证字符质量.轮廓字形法采用直线、B样条/Bezier曲线的集合来描述一个字符的轮廓线.轮廓线构成一个或若干个封闭的平面区域.轮廓线定义加上一些指示横宽、竖宽、基点、基线等等控制信息就构成了字符的压缩数据.
我的程序现在只能预览一个汉字的不同字体的点阵表达.
界面很简单: 一个输出点阵大小的选择列表(8x8,16x16,24x24等),一个系统中已有的字体名称列表,一个预览按钮,一块画图显示区域.
得到字体列表的方法:(作者称这一段是用来取回系统的字体,然后添加到下拉框中)
//取字体名称列表的回调函数,使用前要声明一下该方法
int CALLBACK MyEnumFONtProc(ENUMLOGFONTEX* lpelf,NEWTEXTMETRICEX* lpntm,DWORD nFontType,long lParam)
{
CFontPeekerDlg* pWnd=(CFontPeekerDlg*) lParam;
if(pWnd)
{
if( pWnd->m_combo_sfont.FindSTring(0, lpelf->elfLogFont.lfFaceName) <0 )
pWnd->m_combo_sfont.AddString(lpelf->elfLogFont.lfFaceName);
return 1;
}
return 0;
}
//说明:CFontPeekerDlg 是我的dialog的类名, m_combo_sfont是列表名称下拉combobox关联的control变量
//调用的地方 (******问题1:下面那个&lf怎么得到呢……)
{
::EnumFontFamiliesEx((HDC) dc,&lf, (FONTENUMPROC)MyEnumFontProc,(LPARAM) this,0);
m_combo_sfont.SetCurSel(0);
}
字体预览:
如果点阵大小选择16,显示的时候就画出16x16个方格.自定义一个类CMyStatic继承自CStatic,用来画图.在CMyStatic的OnPaint()函数中计算并显示.
取得字体:
常用的方法:用CreateFont创建字体,把字TextOut再用GetPixel()取点存入数组. 缺点:必须把字TextOut出来,能在屏幕上看见,不爽.
我的方法,用这个函数:GetGlyphOutline(),可以得到一个字的轮廓矢量或者位图.可以不用textout到屏幕,直接取得字模信息
函数原型如下:
DWORD GetGlyphOutline(
HDC hdc, //画图设备句柄
UINT uChar, //将要读取的字符/汉字
UINT uFormat, //返回数据的格式(字的外形轮廓还是字的位图)
LPGLYPHMETRICS lpgm, // GLYPHMETRICS结构地址,输出参数
DWORD cbBuffer, //输出数据缓冲区的大小
LPVOID lpvBuffer, //输出数据缓冲区的地址
CONST MAT2 *lpmat2 //转置矩阵的地址
);
说明:
uChar字符需要判断是否是汉字还是英文字符.中文占2个字节长度.
lpgm是输出函数,调用GetGlyphOutline()是无须给lpgm 赋值.
lpmat2如果不需要转置,将 eM11.value=1; eM22.value=1; 即可.
cbBuffer缓冲区的大小,可以先通过调用GetGlyphOutline(……lpgm, 0, NULL, mat); 来取得,然后动态分配lpvBuffer,再一次调用GetGlyphOutline,将信息存到lpvBuffer. 使用完毕后再释放lpvBuffer.
程序示例:(***问题2:用这段程序,我获取的字符点阵总都是一样的,不管什么字……)
……前面部分省略……
GLYPHMETRICS glyph;
MAT2 m2;
memset(&m2, 0, sizeof(MAT2));
m2.eM11.value = 1;
m2.eM22.value = 1;
//取得buffer的大小
DWORD cbBuf = dc.GetGlyphOutline( nChar, GGO_BITMAP, &glyph, 0L, NULL, &m2);
BYTE* pBuf=NULL;
//返回GDI_ERROR表示失败.
if( cbBuf != GDI_ERROR )
{
pBuf = new BYTE[cbBuf];
//输出位图GGO_BITMAP 的信息.输出信息4字节(DWORD)对齐
dc.GetGlyphOutline( nChar, GGO_BITMAP, &glyph, cbBuf, pBuf, &m2);
}
else
{
if(m_pFont!=NULL)
delete m_pFont;
return;
}
编程中遇到问题:
一开始,GetGlyphOutline总是返回-1,getLastError显示是"无法完成的功能",后来发现是因为调用之前没有给hdc设置Font.
后来能取得pBuf信息后,又开始郁闷,因为不太明白bitmap的结果是按什么排列的.后来跟踪汉字"一"来调试(这个字简单),注意到了glyph.gmBlackBoxX 其实就是输出位图的宽度,glyph.gmBlackBoxY就是高度.如果gmBlackBoxX=15,glyph.gmBlackBoxY=2,表示输出的pBuf中有这些信息:位图有2行信息,每一行使用15 bit来存储信息.
例如:我读取"一":glyph.gmBlackBoxX = 0x0e,glyph.gmBlackBoxY=0x2; pBuf长度cbBuf=8 字节
pBuf信息: 00 08 00 00 ff fc 00 00
字符宽度 0x0e=14 则 第一行信息为: 0000 0000 0000 100 (只取到前14位)
第二行根据4字节对齐的规则,从0xff开始 1111 1111 1111 110
看出"一"字了吗?呵呵
直到他的存储之后就可以动手解析输出的信息了.
我定义了一个宏#define BIT(n) (1<<(n)) 用来比较每一个位信息时使用
后来又遇到了一个问题,就是小头和大头的问题了.在我的机器上是little endian的形式,如果我用
unsigned long *lptr = (unsigned long*)pBuf;
//j from 0 to 15
if( *lptr & BIT(j) )
{
//这时候如果想用j来表示写1的位数,就错了
}
因为从字节数组中转化成unsigned long型的时候,数值已经经过转化了,像上例中,实际上是0x0800 在同BIT(j)比较.
不多说了,比较之前转化一下就可以了if( htonl(*lptr) & BIT(j) )
点阵字库包含两部分信息.首先是点阵字库文件头信息,它包含点阵字库文字的字号、多少位表示一个像素,英文字母与符号的size、起始和结束unicode编码、在文件中的起始偏移,汉字的size、起始和结束unicode编码、在文件中的起始偏移.然后是真实的点阵数据,即一段段二进制串,每一串表示一个字母、符号或汉字的点阵信息.
要生成点阵字库必须有文字图形的来源,我的方法是使用ttf字体.ttf字体的显示采用的是SDL_ttf库,这是开源图形库SDL的一个扩展库,它使用的是libfreetype以读取和绘制ttf字体.
它提供了一个函数,通过传入一个Unicode编码便能输出相应的文字的带有alpha通道的位图.那么我们可以扫描这个位图以得到相应文字的点阵信息.由于带有alpha通道,我们可以在点阵信息中也加入权值,使得点阵字库也有反走样效果.我采用两位来表示一个点,这样会有三级灰度(还有一个表示透明).
点阵字库的显示首先需要将文件头信息读取出来,然后根据unicode编码判断在哪个区间内,然后用unicode编码减去此区间的起始unicode编码,算出相对偏移,并加上此区间的文件起始偏移得到文件的绝对偏移,然后读出相应位数的数据,最后通过扫描这段二进制串,在屏幕的相应位置输出点阵字型.
显示点阵字体需要频繁读取文件,因此最好做一个固定大小的缓存,采用LRU置换算法维护此缓存,以减少磁盘读取.
标准点阵字库芯片的特点:
1.内涵全国信标委授权的标准点阵字型数据、
2.支持国标字符集GB2312(6,763汉字),GB18030(27,484汉字).
3.支持多种点阵字型,包括11×12点,15×16点,24×24点,32×32点.
4.免除了字库烧录和测试工序,并节省了2%以上的烧录损耗.
5.价格相当于空白FLASH价格
我们历时数载,开发成"51单片机13×14点阵缩码汉卡",适用于目前国内外应用最为广泛的MCSX-51及其兼容系列单片机.
与此同时,还开发了13×14点阵汉字字模.13×14点阵字模,可完全与目前通用的16×16点阵汉字字模媲美,其在单片机和嵌入式系统的汉字显示应用中也具有明显的经济价值和实用意义.
1.单片机目前的汉字显示
信息交流的最主要方式之一即文字交流,但由于我国方块汉字数量繁多,构形迥异,使汉字显示一直是我国计算机普及的障碍.随着计算机技术的迅速发展,PC机的汉字显示已不成问题.但对于成本低、体积小、应用灵活且用量极为巨大的单片机而言,因其结构简单,硬件资源十分有限,其汉字显示仍面对着捉襟见肘,力不从心的窘境.
目前单片机的汉字显示有三种基本方法.
①采用标准字库法.即将国标汉字库固人ROM中,将单片机的硬件和软件进行特别扩展后以显示汉字.众所周知,即使是16×16点阵标准字库,也须占用200KB以上的单元内存,而就目前主流5l系列单片机而言,最大寻址范围仅64KB,即使程序区与数据区合起来也仅128KB内存.因此,若不加特别的扩展设计,不要说检字程序和用户空间,仅字库都装不下.这种方法虽然可以方便地使用现成标准字库,但却需占用大量的硬件和软件资源,增加很大一部分成本和设计难度,所以不经常使用.
②字模直接固化法.即将所显示的汉字,依先后顺序将其字模一一从标准字库中提取后,重新固化,予以显示.此法虽为简捷,但只适于显示少量汉字,且字模的制取繁琐,软件的修改维护都很困难.
③带索引小字库法.即将欲显示文件中的汉字字模,从标准字库中逐一提取固化,制成小型字库,并按其在小字库中的位置制成索引表,显示时从索引表查出其新的字模取码地址,取码显示.此方法虽比较灵活,可显示较多的汉字,但仍然局限于只能显示固定文件内容,且字模制取同样麻烦.
一种较新的单片机"汉字动态编码与显示方案"(见《单片机与嵌入式系统应用》杂志2003年第1期和第9期),实际上也是一种动态的"小字库"法,只是字库的制取,索引的编写及文件的改码皆由PC机自动完成,免去了繁琐的人工处理.
由上可见,目前单片机各种汉字显示方案均不理想.标准字库法,单片机不堪重负;而其它方法最大且又无法克服的缺点是,所显示文字皆有局限.显示内容也皆须专业人员设计而定,用户难于更改.这便极大地限制了单片机在各个领域的开拓和应用.究其原因,皆为单片机本身无汉卡,而这也正是我们致力于"51汉卡"开发的初衷.
2.13×14点阵汉字字模
为垫定"5l汉卡"的字型基础,首先开发成了l3×14点阵汉字字模.在目前通用的汉字字模中,最简单的是16×16点阵字模.在微型打字机中,也偶见有12×12点阵字模,但实用中不多见.字模点阵数直接决定着每一汉字所占单元内存值,能否在保证字模准确、美观的基础上,寻找一种较少的点阵字模呢?这便是我们最初的想法.于是我们经过反复选择比较,终于在国内首个推出了13×14点阵字模.此设计,一是基于我国汉字为方块字,故其行、列值需相近;二是汉字多有对称1生,故其列值宜奇不宜偶.设计实际表明,若行、列值很少,则难保证字模的准确性和美观性.?
13×14点阵字模,是以我国现行简化字为准,并在此基础上设计而成.与目前通用的汉字16×l6点阵字模相比,其准确性和美观性并不逊色.然而其单字所占内存却由32个单元降至26个单元;另外使得每个单字显示由原来的256个像素降至l82个像素,使显示成本和空间均减少近三分之一.100×200点阵LED字屏,可显示16×l6点阵汉字72个,而l3×14点阵汉字便可显示l05个,且显示效果并无太大差异.这无疑对单片机和嵌入式系统汉字显示产品的开发和应用,具有明显的经济价值和实用意义.
3.51单片机13×14点阵缩码汉卡
"51汉卡"依据我国的汉字特点和单片机的快速构字功能,在13×14点阵字模基础上,以缩码形式开发而成单片机汉卡的开发,应以目前通用的主流单片机为研发对象,还应在囊括国标一、二级汉字及常用字符的前提下,使内存占用必须降至主流单片机可寻址范围内,且需留有足够的检字程序和用户应用空间.另外,字模设计必须准确、美观.字模提取速度也必须满足实用要求."51汉卡"的开发正是依据原则,并达到了以上各项要求.
顾名思义,"51汉卡,即以MCS-51系列及其兼容单片机为研发对象.以51系列为代表的8位单片机,在过去、现在以及可以予见的将来,都将是嵌入式系统低端应用的主流机型.此乃业界专家的共识.
"51汉卡"囊括了"GB2312-80"国标字库的全部一、二级汉字,并增补汉字86个;同时包括了大、小英文字母、阿拉伯数字等160个常用字符和不到4KB的构字程序,却仅总共占用了不足66KB的内存.每字平均约占9.8个单元,相对于16×16点阵每字占32单兀内存而言,尚不到其三分之一.这对于具有相互独立的64KB程序区和64KB数据区的51系列单片机而言,若适当配置内存,可为检字程序和用户留出90%以上的程序空间及相当数量的数据空间,对于一般用户的应用,都将绰绰有余.
另外,为使"51汉卡''更便于使用和进一步节省内存,在上述基础上又开发成一套简化版本,删去了部分较偏僻的二级汉字.简化版本包括约5580个汉字,共占用内存58KB.实际上,按有关权威部门的统计,一般文本99%的文字是由2400个字写成的,因此使用简化版本,并配以简单的造字程序,一般亦可满足我们的使用要求.
"51汉卡"所用字模,即我们开发的完全可与16×16点阵字模媲美的I3×14点阵汉字字模.字模提取速度是我们最为关心的问题之一.经测试及实际使用表明,"51汉卡''的提模速度完全可满足单片机汉字显示的实用要求.
我们使用INTEL公司MCS-51经典系列87C51单片机在24MHz频率下测试,平均字模提取速度为2.1ms/字.因人的视觉暂留时间为0.1s,无论理论还是实际使用都表明,50字字模提取并显示,并无迟滞和待机之感.即使在1?2MHz频率下,20字取模,即点即出,在一般拼音检字和少量汉字显示中,完全可满足使用要求.随着单片机技术的迅速发展,目前,INTEL公司、Atmel公司、philips公司、我国台湾华邦等公司生产的MCS-51兼容单片机时钟频率可达33MHz,增强型可达40MHz,以至达60MHz;现市售的"STC89LE"系列单片机,最高频率可达90MHz.这些芯片都完全能与MCS-51芯片兼容,对于更高需求的场合,更新升级也十分简便.另外,在单片机和嵌入式系统中,文字显示速度要求并不高,只要满足换屏时的视觉要求即可.其汉字显示字数,一般也不太多.如用LCD显示屏,128×64点阵,才显示32个字;192×64点阵才显48个字;即使使用l3×14点阵字模,满屏也才56个汉字.
4."51汉卡"设计依据及说明
"51汉卡"设计依据是,我国汉字虽然数量繁多,字型各异,但其中复合结构者占大部分,并素有"偏旁取义,正字取音"之说.如"寸"字与不同偏旁可组成"村"、"付"、"讨"、"守"、"过"等字.因此"51汉卡"除单结构字基本以全码设计外,复台结构字多用相应的单体字及其偏旁,以结构代码写成.利用单片机快速的单元积木式构字程序,便可迅速生成字模代码.这既保证了提码速度,又节省了大量的汉卡内存.
有关"51汉卡"的几点说明如下:
①凡汉字库中简、繁体字都有的用简体.如"後"以"后"代,"馀"以"余"代等;
②《新华字典》未收入字,多未收入,如"酏"、"鼽"等字,但"婧"、"弪"等字仍收入;
③对于多体字,一般以常用字代,如"摺"以"折"代,"镟"以"旋,代等,但"吒"不以"咤"代,"雠"不以"仇"代等;
④对通常已由其它字取代的字,都以这些字代替,如"岽"以"东"代,"肛''以"船"代等;
⑤二级汉字中,不单独构成汉字的偏旁未收入;
⑥依据名篇名著,生活用语等,增补汉字86个;
⑦收编大、小写英文字母、阿拉伯数字、标点符号等各种常用字符160个.
5."51单片机汉卡"应用举例
利用"51单片机汉卡",将使51系列单片机的汉字显示轻而易举,并可大为降低成本、体积和设计开发的难度,为单片机在生产控制、信息通信、文化教育和日常生活等领域,特别是计算机终端和手持产品的开发提供极大的便利和支持.?
我们现已初步开发成"51汉卡"的"区位码输入法"和"拼音输入法,检字程序,并利用"51汉卡"成功地开发了带有廉价单片机控制器的LED汉字显示屏.这不仅大幅度降低了成本费用.而且用户可以通过单片机控制器,随心所欲地改变显示内容.
51硬件设计
程序存储器一1片EPROM?27C512.
数据存储器一1片EPROM?27C512;1片EEPROM28C64A;1片6116.
控制器显示屏一LCD?HY一19264B(深圳秋田视佳实业有限公司).
LED屏选240×16点阵.
本系统用标准小键盘检字,一次可予选4000字;控制器LCD满屏显示l3×14点阵汉字56个;LED屏满屏显示汉字19个.
地址分配及用途如表l所列.
5.2程序设计框图
程序设计流程如图1所示.本系统采用12MHz晶振,若LCD取满屏56字,换屏时有约0.1s的延时,这对人的实际视觉并无大影响.
1 概述
GT23L24M1W是一款内含24X24点阵的汉字库芯片,支持GB18030国标汉字(含有国家信标委合法授
权)及ASCII字符.排列格式为横置横排.用户通过字符内码,利用本手册提供的方法计算出该字符点阵
在芯片中的地址,可从该地址连续读出字符点阵信息.
1.1 芯片特点
PLII 精简地址并行总线接口
● 点阵排列方式:字节横置横排
访问速度:SPI 时钟频率:20MHz(max.)
PLII 访问速度:130ns(max.) @3.3V
● 工作电压:2.7V~3.6V
● 电流:工作电流:12mA
待机电流:10uA
● 封装:SO20W
● 尺寸(SO20W):12.80mmX10.30mm
● 工作温度:-20℃~85℃(SPI 模式下);-10℃~85℃(PLII 模式下)
1.2 字库内容
字型样张
2 引脚描述与接口连接
2.1 引脚名称
2.2 SPI 接口引脚描述
串行数据输出(SO):该信号用来把数据从芯片串行输出,数据在时钟的下降沿移出.
串行数据输入(SI):该信号用来把数据从串行输入芯片,数据在时钟的上升沿移入.
串行时钟输入(SCLK):数据在时钟上升沿移入,在下降沿移出.
片选输入(CS#):所有串行数据传输开始于CE#下降沿,CE#在传输期间必须保持为低电平,在两条
指令之间保持为高电平.
总线挂起输入(HOLD#):
2.3 SPI 接口与主机接口电路示意图
SPI 与主机接口电路连接可以参考下图(#HOLD管脚建议接 2K 电阻 3.3V 拉高).
若是采用系统电压为 5V的,则需要进行电平转换匹配连接 GT23 芯片,可以参考下图(#HOLD 管脚建议接 2K 电阻 3.3V 拉高).
2.4 PLII 接口引脚描述
2.5 PLII 接口与主机接口电路示意图
SPI/PLII_SEL(管脚内部有 100K 上拉电阻)接地,字库芯片选择 PLII 接口模式,与主机接口电路连接可以参考下图.
2.6 PLII 总线接口寻址说明
在 PLII 总线模式下,芯片内部有 3个地址寄存器,主机需要把要读取数据的地址写入这 3个地址寄存器,然后再从数据寄存器中读出数据.主机每读一次数据寄存器,芯片内部的地址寄存器会自动增一,从而使主机只写一次首地址,就可以连续读取数据.
3 字库调用方法
3.1 汉字点阵排列格式
每个汉字在芯片中是以汉字点阵字模的形式存储的,每个点用一个二进制位表示,存 1的点,当显示
时可以在屏幕上显示亮点,存 0的点,则在屏幕上不显示.点阵排列格式为横置横排:即一个字节的高位
表示左面的点,低位表示右面的点(如果用户按 word mode读取点阵数据,请注意高低字节的顺序),排
满一行的点后再排下一行.这样把点阵信息用来直接在显示器上按上述规则显示,则将出现对应的汉字.
3.1.1 24X24点汉字排列格式
24X24 点汉字的信息需要 72个字节(BYTE 0 – BYTE 71)来表示.该 24X24 点汉字的点阵数据是
横置横排的,其具体排列结构如下图:
命名规则:
最大字符集及字数
S:GB2312 6,763汉字
M:GB18030 27,484汉字
T:GB12345 6,866汉字
BIG5 5,401 / 13,060汉字
U:Unicode V3.0 27,484汉字
-
CSS字体样式设置、CSS文本样式设置
2019-10-22 18:23:54一、CSS字体样式设置 1.字体样式设置 字体样式大致有如下几种特征: 字体类型(风格)、字体粗细、字体大小、字体系列 (1)字体类型(风格) font-style 用于设置字体风格,可设置以下值: ① normal:普通字体 ② ... -
Android 自定义和可下载字体
2018-05-29 10:09:49Android 一开始的时候,没有使用自定义字体的开箱即用解决方案。设备上只能使用少部分预装字体。 你必须要做一些创新,并为这种小事情编写大量的代码。 最近,Google 为 Android 8.0 推出了自定义和可下载字体。... -
【CSS 字体 属性(Font)】
2019-11-24 01:25:26CSS 字体 属性(Font)CSS 字体属性font 属性font-family 属性font-size 属性font-size-adjust 属性font-stretch 属性font-style 属性font-variant 属性font-weight 属性 CSS 字体属性 (Font) 美 [fɑnt]... -
css之自定义字体
2019-10-11 10:30:38@font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,你们当中或许有许多人会不自然的问,这样的东西IE能... -
软件测试基础——功能测试
2021-09-22 15:39:501 测试团队中的角色 2 测试团队的基本责任 尽早地发现软件程序、系统或产品中所有的问题。 督促和协助开发人员尽快地解决程序中的缺陷。 帮助项目管理人员制定合理的开发和测试计划。 对缺陷进行跟踪、分析和分类... -
B端产品设计规范
2021-03-30 13:27:31开篇说: 上一篇,我写过一篇综合类的设计规范和适配。...在这个团队协作的过程中,团队包括产品经理、体验设计师及开发程序员等测试人员,都要积极的参与讨论,多方并行参与到最后形成一套可以落地执行,... -
字体及其制作
2017-03-27 10:40:02这种字体是针对特定的显示分辨率以不同大小存储的位图,用于Windows系统中屏幕上的菜单、按钮等处文字的显示。它并不是以矢量描述的,放大以后会出现锯齿,只适合屏幕描述。不过它的显示速度非常快,所以作为系统... -
win7操作系统练习题(带答案,有问题可直接在博客或公众号中问)
2020-01-29 15:42:361. 下列是切换已打开的应用...A、ctrl+Tab B、AIt+Esc C、Ait+space D、Ait+o 2. 打开程序属性对话框的组合键是( ) A、ctrl+O B、shift+O C、Ait+Enter D、ctrl+F6 3. 打开搜索窗口的快捷键是( ) A、F7 B、F... -
Markdown骚操作|字体颜色、字体背景、流程图一网打尽【建议收藏】
2021-08-31 11:11:34本文二哥带领大家来学习一下Markdown文档编辑的那些高端操作。 推荐MD编辑器:Typora 注:除最后一个图外,均可用于CSDN Markdown! 注:文中代码块中给出书写格式,下方给出效果展示。...二、字体 Markdow. -
Word2010专项试题(1)
2022-03-07 23:54:49一、单选题 1、Word具有的功能是__D__。 A.表格处理 B.绘制图形 C.自动更正 D.以上三项都是 ...2、通常情况下,下列选项中不能用于启动Word2010的操作是___D___。...A....B....C.在Windows资源管理器中双击Word... -
2016年计算机一级考试Word模拟试题
2021-07-07 03:50:43A、所选文字中第一种字体的名称B、显示所选文字中最后一种字体的名称C、显示所选文字中字数最多的那种字体的名称D、空白■26、在Word编辑状态下,选定一段文字后,若格式工具栏的“字号”框中显示的内容为空白,则... -
功能测试--part1
2022-02-26 21:30:24功能测试第一课 -
电脑也有隐藏功能, 你知道吗?
2021-06-23 10:47:03电脑的隐藏功能包括对文字,图片,文件,文件夹,菜单栏,功能区按钮的隐藏。隐藏的目的是为了保护个人隐私,保护个人的、集体单位的和国家的机密和情报。01隐藏“菜单栏”编辑某些文件或文件夹,需要“菜单栏”... -
计算机基础考试题附答案——《第伍篇》
2020-08-15 15:04:57一、判断题 1、对于插入的图片,只能是图在上,文在下,或文在上,图在下,不能产生环绕效果。 2、在WORD环境下,可以在编辑文件...6、WORD中采用了“磅”和“号”两种表示文字大小的单位。 7、在WORD环境下,用户不 -
2017职称计算机PowerPoint练习试题及答案(1)-中华考试网
2021-07-06 05:46:38在状态栏中没有显示都是 视图按钮。( D )A.普通 B.幻灯片浏览C.幻灯片放映 D.备注页28.powerpoint 2010演示文稿的扩展名是 。( A)A.pptx B.ppzx C.potx D.ppsx29.按住 键可以选择多张不连续的幻灯片。(B )A.shi... -
大学计算机考试word试题及答案
2021-07-15 04:29:34大学计算机考试word试题及答案 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便... A、常用字、次常用字、罕见字三个 B、简化字和繁体字两个 C、一级汉字、二级汉字两个... -
如何把“蚂蚁呀嘿”换脸特效用在前端 WebRTC 视频通话中
2021-03-15 12:04:13在 Github 上一番搜寻之后发现还真有办法,有一个开源的 Python 人工智能换脸的库,那正好趁着这个机会研究一下前端 WebRTC 实现视频通话功能,外加换脸操作。先看一下效果吧: 因为有涉及到一点点的后台,所以项目... -
功能测试的测试用例
2018-08-29 23:26:21一、登录、添加、删除、查询模块使我们经常遇到的,这些模块的测试点该如何考虑 1.登陆 (1)用户名和密码都符合要求(格式上的要求) (2)用户名和密码都符合要求(格式上的...(7)数据库中存在的用户名,错... -
2019年4月自考真题《00018计算机应用基础》(含答案)
2021-06-16 06:56:25【历年真题】2019年4月《00018计算机应用基础》...在计算机中,bit 的中文含义是A.位B,字C.单字节D.两字节3.为了区分数制,在书写十六进制数时后面加字母A.BB. DC. HD.O4.用高级语言编写的程序称为,A.编译程序B.... -
常见功能测试点的测试用例大全
2021-04-09 19:27:53c,一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空; up-down控件文本框的测试 a,直接输入数字或用上下箭头控制,如,在“数目”中直接输入10,或者单击向上的箭头,使数目变为10; b,... -
C++Builder的基本功能
2019-04-30 09:14:36C++Builder的基本功能 我们用高级语言写程序,我们很得意,因为高级语言比较接近人类的语言,使我们用起来得心应手,所以我们当然得意。但我们更得意的一定是让程序代码赶快变成可执行文件。 无论是在写代码的过程... -
VS2017中自用部分插件的设置的翻译或功能介绍——Supercharger
2019-04-16 23:06:59功能大集合,例如CodeMap、CodeFlowLIne、Name Emphasis等 -
Word中查找和替换功能详细介绍
2011-03-22 22:33:00在Word中查找和替换功能很多人都会使用,最通常是用它来查找和替换文字,但实际上还可用查找和替换格式、段落标记、分页符和其他项目,并且还可以使用通配符和代码来扩展搜索。 -
python自学篇——PyGame模块的所有功能函数详解
2020-02-16 19:32:33PyGame是SDL多媒体库的Python包装器模块。...关于游戏的基本信息:它是什么,涉及到谁,在哪里找到它。 安装 在多个平台上编译游戏所需的步骤。还可以帮助您为系统查找和安装预构建的二进制文件。 ... -
2019 年天津科技大学电子设计竞赛:算法与策略-----B题
2019-03-21 09:19:15B题简直堪称弱智题目… 分两类说明一下:正规做法、非正规做法。 这里强调一下,看官方提供的材料清单中并没有RTC模块 ,可见并不是想让用正规的方法做呀! 一、正规做法: 1、说明:首先说明下这题到底是什么... -
B/S系统期末复习宝典——选择填空判断部分(一)
2021-01-09 10:50:47在CSS中,用于定义字体风格,如设置斜体、倾斜或正常字体的属性是【 】。 内嵌式是将CSS代码集中写在HTML文档的【 】标记中,并且用【 】标记定义。 <input />标记有多个属性,其中【 】属性为其最基本的属性...