Advertisement

汉字点阵生成源码 新手适用的两种生成方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文提供了两种适合编程新手使用的汉字点阵生成源码的方法,帮助初学者轻松掌握汉字在不同设备上的显示技术。 本例题采用两种方式列举了汉字取模方法,并用图像生动地展示出来,非常适合新手学习参考。 1. 以16点阵汉字取模方式进行详细讲解:通过定位读取HZK16文件(源码中已经包含此文件),说明具体实现步骤。 2. 使用GetGlyphOutline函数进行操作:用户可以选择Windows系统自带的字体,并根据所选字体生成相应的数组,最后绘制显示。 以上代码经过测试,在VC6.0环境下可以正常运行。尽管如此,这段代码仍存在一些不足之处,请大家在评论区指出并提出建议。 关键代码如下: ```cpp BOOL CPixFontTranDlg::GetGridFromHZK16(CString strFont, BYTE buffer[]) { // 字符串转换为内码,并计算汉字的区位码和索引位置。 AnsiCode[0] = strFont.GetAt(0); if (AnsiCode[0] < 160) { BYTE temp = AnsiCode[0]; AnsiCode[0] = HIBYTE(temp - 0x21 + 0xA3A1); // 偏移量计算 AnsiCode[1] = LOBYTE(temp - 0x21 + 0xA3A1); } else { AnsiCode[1] = strFont.GetAt(1); } qh = AnsiCode[0]-160; // 区码和位码 wh = AnsiCode[1]-160; location=(94*(qh-1)+(wh-1))*32; // HZK16 中的索引位置,每个汉字字模占用32个字节。 } BOOL CPixFontTranDlg::GetGridFormWinSDK(CString strFont, BYTE buffer[], CString strFontName) { CFont newfont; newfont.CreateFont(16, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET | OUT_CHARACTER_PRECIS | CLIP_CHARACTER_PRECIS | DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE,strFontName); // 根据字体大小和名称创建一个新字体。 nLen = ::GetGlyphOutline(pdc->GetSafeHdc(), chartemp, GGO_BITMAP, &glpm, 0, NULL, &mmat2); if ((signed)nLen > 0) { // 获取所需缓冲区大小后,再次调用函数获取实际数据。 nLentemp = ::GetGlyphOutline(pdc->GetSafeHdc(), chartemp, GGO_BITMAP,&glpm,nLen,pBuf, &mmat2); offset = 8 - rows / 2; // 计算从点阵第一行到字的第一行的偏移量 for (i=0;i

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 优质
    本文提供了两种适合编程新手使用的汉字点阵生成源码的方法,帮助初学者轻松掌握汉字在不同设备上的显示技术。 本例题采用两种方式列举了汉字取模方法,并用图像生动地展示出来,非常适合新手学习参考。 1. 以16点阵汉字取模方式进行详细讲解:通过定位读取HZK16文件(源码中已经包含此文件),说明具体实现步骤。 2. 使用GetGlyphOutline函数进行操作:用户可以选择Windows系统自带的字体,并根据所选字体生成相应的数组,最后绘制显示。 以上代码经过测试,在VC6.0环境下可以正常运行。尽管如此,这段代码仍存在一些不足之处,请大家在评论区指出并提出建议。 关键代码如下: ```cpp BOOL CPixFontTranDlg::GetGridFromHZK16(CString strFont, BYTE buffer[]) { // 字符串转换为内码,并计算汉字的区位码和索引位置。 AnsiCode[0] = strFont.GetAt(0); if (AnsiCode[0] < 160) { BYTE temp = AnsiCode[0]; AnsiCode[0] = HIBYTE(temp - 0x21 + 0xA3A1); // 偏移量计算 AnsiCode[1] = LOBYTE(temp - 0x21 + 0xA3A1); } else { AnsiCode[1] = strFont.GetAt(1); } qh = AnsiCode[0]-160; // 区码和位码 wh = AnsiCode[1]-160; location=(94*(qh-1)+(wh-1))*32; // HZK16 中的索引位置,每个汉字字模占用32个字节。 } BOOL CPixFontTranDlg::GetGridFormWinSDK(CString strFont, BYTE buffer[], CString strFontName) { CFont newfont; newfont.CreateFont(16, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET | OUT_CHARACTER_PRECIS | CLIP_CHARACTER_PRECIS | DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE,strFontName); // 根据字体大小和名称创建一个新字体。 nLen = ::GetGlyphOutline(pdc->GetSafeHdc(), chartemp, GGO_BITMAP, &glpm, 0, NULL, &mmat2); if ((signed)nLen > 0) { // 获取所需缓冲区大小后,再次调用函数获取实际数据。 nLentemp = ::GetGlyphOutline(pdc->GetSafeHdc(), chartemp, GGO_BITMAP,&glpm,nLen,pBuf, &mmat2); offset = 8 - rows / 2; // 计算从点阵第一行到字的第一行的偏移量 for (i=0;i
  • 16x16
    优质
    16x16汉字点阵生成器是一款便捷高效的工具软件,专为设计师和开发者设计。用户可以轻松地将汉字转换成16x16像素大小的点阵格式,适用于LED显示屏、嵌入式系统等场景。 16*16点阵转换:可以输入汉字智能转换成十六进制,方便快捷!
  • GB2312器及浏览器[C#]
    优质
    这是一个用C#编写的GB2312编码标准下的点阵汉字字库生成工具以及配套的浏览器程序,便于用户自定义提取和显示简体中文字符。 这段代码是我这几天编写的一个文件生成器,主要用于创建LED汉字显示设备所需的汉字字符库点阵数据。此外还有一个文件浏览器工具,方便对字库文件进行检查和审阅设计。
  • 优质
    点阵字体生成器是一款专业的工具软件,能够将矢量图形转换为点阵字体,适用于游戏开发、嵌入式系统等领域,帮助用户轻松创建和编辑高质量的点阵字体。 点阵字库生成器可以将字库中的字符转换为代码,驱动点阵式显示屏显示所需的文字。
  • 二维
    优质
    本文介绍了二维码生成的两种主要方法:在线生成和本地软件生成,并探讨了它们各自的优缺点及应用场景。 介绍使用Java生成二维码的两种方法,并附有源码、Java代码和JavaScript代码。
  • Unicode器(FontMaker)
    优质
    FontMaker是一款用于创建和编辑Unicode字体的高效工具。它为设计师提供了广泛的字符集支持与灵活的设计选项,助力打造个性化数字字体。 版本1.06(2012年4月10日): - FontMaker (点阵字库):增加了系统字体支持,使操作更加简单、快捷。 版本1.05(2012年3月24日): - 修正了字符对齐问题。 - 增加单个或多个字符输出成位图文件的设定功能。 - 完善阿拉伯文字库(适用于Unicode字库)。 - 添加自定义字符功能(仅限于Unicode字库有效)。 版本1.04 (2011年7月16日): - 新增字符串mbcs2unicode(内码转统一码)的功能,支持转换为U16-LE, U16-BE和UTF8格式。 版本1.03(2011年7月5日): - 修改了Example中的点阵字库解析源代码以利于移植。 - 修正内码(MBCS)字库读取错误问题。 - 增加多语言支持,包括简体中文和英语。 版本1.02 (2011年7月1日): - FontMaker V2.03: - 添加字符宽高比调节(HorR & VerR)功能 - 支持*.ttc字库格式。 - 增加bdf(*.bdf)文件到Simple Unicode编码的bin文件转换。 版本1.01 (2011年6月29日): - FontMaker V2.02: - 添加 Simple Unicode功能(适合小字库) - 新增“扫描方向及反显”设置。 版本1.00(2011年6月27日): - 继承了FontMaker V2.01的所有特性。 - 增加 Multi-Languge V1.00 的打包转换功能。 基本功能包括:支持所有 Windows 字符集,非等宽字库,BIN,TXT,BMP和BDF 文件输出,Unicode字库输出以实现多国语言显示。同时具备单个字符编辑与预览、记忆字体文件及路径等功能,并可从bdf格式转换为自定义的bin文件格式。
  • C语言数组工具
    优质
    C语言汉字点阵数组生成工具是一款专为程序员设计的应用程序,能够自动生成适用于C语言项目的汉字点阵数据。这款工具简化了将中文字符转化为图形显示的过程,支持用户调整字体大小和样式,提高开发效率与灵活性。 本工具适用于单板单片机(如STM32、C51)开发过程中常用的点阵数组自动生成需求。由于发现网上许多制作汉字点阵的工具常被某些杀毒软件误报为木马病毒,感到有些担心,因此利用自己熟悉的Windows编程技术,并基于字模提取原理创建了一个可以将Windows系统中的各种字体转化为常用24*24或33*32点阵数组的小工具。现在把这个小工具分享出来供其他人下载使用,感觉比之前的版本更好用一些。由于个人水平有限,错误在所难免,如果大家发现任何问题或者有改进的建议,请随时留言反馈,以便于不断优化和完善这个工具。
  • Java随机数
    优质
    本文介绍了在Java编程语言中生成随机数的两种常见方法,包括使用Math.random()和java.util.Random类,帮助读者掌握随机数生成技巧。 在Java编程语言中生成随机数是一种常见的需求,适用于模拟、测试以及加密等多种场景。本段落将详细介绍两种主要的生成随机数的方法:`java.lang.Math.random()`静态方法和`java.util.Random`类。 首先来看一下`java.lang.Math.random()`方法。这是一个可以直接调用的静态方法,无需创建对象实例化即可使用。该方法返回一个0.0到1.0之间的双精度浮点型随机数值(不包括1.0)。如果需要生成其他范围内的随机数,则可以通过适当的数学运算来实现转换。例如: ```java int i = (int) (Math.random() * 1000); //产生从0到999的整数随机值。 ``` 在上述代码中,`Math.random()`方法产生的双精度浮点数值乘以1000后被截断为一个整型值,因此返回的是介于[0, 999]之间的随机整数。 接下来是`java.util.Random`类。这个类提供了更加丰富的生成随机数的功能选项。通过实例化Random对象,可以获取不同类型的随机数值,包括但不限于整数、浮点数、双精度类型甚至布尔值等。以下是一些使用示例: ```java Random random = new Random(); int intNumber = random.nextInt(); // 获取一个范围在 [Integer.MIN_VALUE, Integer.MAX_VALUE) 的整型随机值。 float floatNumber = random.nextFloat(); //获取0.0f到1.0f之间的浮点数 double doubleNumber = random.nextDouble(); // 获取从0.0至1.0的双精度随机数值 boolean booleanNumber = random.nextBoolean(); //产生true或false的布尔值。 ``` 值得注意的是,`Random`类还允许用户自定义生成随机序列时所用到的种子(seed)。通常情况下,系统默认使用当前时间作为种子来保证每次运行程序时产生的随机数序列都是不同的。然而,如果提供一个特定的种子值给构造函数如 `new Random(100)` ,那么由这个固定的种子创建出的所有Random对象将生成一致的随机数值序列。这在某些需要重复相同随机序列的情况下非常有用,例如测试环境中的使用场景。 通过上述代码示例可以验证,在每次初始化时都采用相同的种子值(比如都是`new Random(100)`)的话,则所得到的两个不同的Random实例将会产生完全一致的随机数列: ```java Random random1 = new Random(100); Random random2 = new Random(100); for (int i = 0; i < 5; i++) { System.out.print(random1.nextInt() + ); System.out.println(random2.nextInt()); } ``` 总的来说,Java提供了简洁易用的`Math.random()`方法和更加灵活多变的`Random`类来满足不同的随机数生成需求。对于简单的应用场景来说使用前者即可;而对于需要多样化类型的随机值或者特定序列重复性的场合,则推荐采用后者。在实际开发过程中选择合适的实现方式能够有效地提高代码的质量与可维护性。
  • FontMaker工具V1.2.1
    优质
    FontMaker点阵字库生成工具源码V1.2.1是一款专为开发者设计的开源软件,支持高效创建和自定义点阵字体。该版本优化了多项功能并修复已知问题,旨在提供更加便捷的字库开发体验。 资源是笔者基于博友“星沉地动”公开的点阵字库生成工具源代码进行二次开发后的版本,支持从Excel中读取字符进行编码。最新更新详情请参阅相关博文。最近一次更新为2020年12月6日发布的V1.2.2版。