下面来看看我对这方面的实际应用的结果对比
一。首先明确下,什么时候用drawChar,什么时候用drawString
当String 的内容不多的时候,drawChar跟drawString是差不多的。下面看看代码吧。
//看看这段代码跟下面那段代码的性能比较,发现如果采用这段代码性能比下面那段代码要搞3倍
IR!V \CRp?-A3 StringBuffer sb = new StringBuffer();
!pa r8fPX5w%[2u o3 for(int i=0; i<chars.length; i++){
l@-s$n.Z9J3 int fontWidth = font.charWidth(chars[i]);3G视线 y x(aV1c,?,|7zu
width += font.charWidth(chars[i]);
G yc\W,Jw3 if(width >= Platform.WIDTH - font.charWidth(chars[i]) - 6){3G视线 }.A D[Q\u(P
width = 0;3G视线R5Ay)ou9Vj]
startX = 0;
L1lg Wf O{&p$?3 startY += this.font.getHeight() + Part.SPACE;3G视线)u?v6z0s;s` g^
sb.append(chars[i]);3G视线2e_p;|#p%r(J*T]i
g.drawString(sb.toString(), startX, startY, Graphics.TOP|Graphics.LEFT);
sb = null; sb = new StringBuffer();
2b Ou{l$f5?5@3 }else{
n__*?dhN3 sb.append(chars[i]);3G视线t3|||Sb
startX += fontWidth;
z9Y$mXA)]C`)f3 }
3G视线$j{UNV,T qI;_
}
//这段代码有很大的性能问题啊,一个一个字的描绘出来是很消耗时间跟内存的
Q4x Jf5G%~g2x%R3 // for(int i=0; i<chars.length; i++){3G视线+E5\)j1t/X*D$c
// g.drawChar(chars[i], startX, startY, Graphics.TOP|Graphics.LEFT);
c#b.Dc7w3// int fontWidth = font.charWidth(chars[i]);3G视线BF,[@Fu]$zl
// width += font.charWidth(chars[i]);3G视线/x XC+wh }.gv
// if(width >= Platform.WIDTH - font.charWidth(chars[i]) - 4){3G视线4PI\8ut Qz E
// width = 0;3G视线*S?0A-Hk@r[n s+?
// startX = 0;3G视线l}y*W,B {4WD
// startY += this.font.getHeight() + Part.SPACE;3G视线k^W"Ii0S
// }else
&q(b#azR3F3// startX += fontWidth ;
&z ex]!vm4d [~3//
X'fm Fi2`3// }
'EF(f1~#BQ#s6B9f3这两段代码,,屏蔽的一段代码执行时间是400毫秒,上面的一段是170毫秒,而且是字符串不长的情况,如果是很长,那就太慢了。
分享到:
相关推荐
4. **UCGUI的文本绘制函数**:使用`LCD_DrawChar()`函数可以绘制单个字符,但汉字通常由多个字节组成,因此需要使用`LCD_DrawUnicodeChar()`来绘制。如果要绘制字符串,可以使用`LCD_DrawString()`,但要注意处理多...
4. **图形API**:图形库通常会提供一套API接口,如`DrawChar`、`DrawString`等,供开发者调用来在屏幕上绘制文字。 5. **内存管理**:在嵌入式系统中,内存管理是至关重要的。库可能包含内存分配和释放的策略,以...
UCGUI提供了一系列函数,如`LCD_SetFont()`用于设置当前字体,`LCD_DrawChar()`用于绘制单个字符,`LCD_DrawString()`则用于绘制字符串。 在“Font”这个压缩包文件中,可能包含了多种字体资源,如不同大小、不同...
而`drawChar`方法则用于显示单个字符,它接受一个字符数组、偏移量、长度以及字符的x和y坐标。 2. 画直线: `drawLine`方法用于绘制直线,参数包括起点(x1, y1)和终点(x2, y2)的坐标。例如,`g.drawLine(0, 0, 100...
在电子工程领域,单片机(Microcontroller)是不可或缺的一部分,它们被广泛应用于各种设备的控制,例如智能家居、工业自动化、汽车电子等。C语言作为单片机编程的常用语言,以其高效、灵活和可移植性深受工程师们的...
总之,将UCGUI与外部FLASH结合,实现汉字在STM32F103上的显示,是一项涉及到硬件接口配置、字库管理、图形库集成以及性能优化的综合任务。理解并掌握这些知识点,对于进行复杂的嵌入式UI设计大有裨益。
GD32F303是一款基于ARM Cortex-M3内核的高性能单片机,广泛应用于各种嵌入式系统设计。本教程主要讲解如何在GD32F303上通过编程实现LCD显示ASCII字符的功能。 首先,我们需要了解LCD的基本工作原理。LCD显示器通常...
7. **优化与调试**:在实现基本功能后,对性能进行优化,如减少不必要的计算,优化内存访问等。同时,利用开发工具进行调试,确保程序稳定可靠。 总之,将uCGUI移植到STM32F4微控制器上是一项涉及硬件驱动编程、...
我们还需要实现一些方法来更新LCD显示,比如ClearDisplay()用于清屏,DrawPixel(x, y, color)用于画点,以及可能的DrawChar(x, y, char)和DrawString(x, y, str)等方法,用于字符和字符串的绘制。 在嵌入式系统中,...
对照表还可能包含关于特殊功能,如点阵显示或闪烁效果的说明。 总结来说,STM8L15x LCD显示函数涉及的知识点包括: 1. STM8L15x微控制器的LCD驱动库及其基本函数。 2. LCD显示屏的初始化和控制,包括设置时序、打开...
STM32F767是意法半导体(STMicroelectronics)推出的一款高性能微控制器,属于Cortex-M7内核的STM32F7系列。它拥有高速处理能力、丰富的外设接口以及大容量的存储空间,是嵌入式系统设计的理想选择。在本项目中,...
- **字符映射**: 了解如何将GBK编码或其他编码与实际的字符对应起来,以便正确地传递给`drawChar()`函数。 通过以上步骤和注意事项,你应该能够成功地在Adafruit-GFX支持的显示屏上显示中文字符。这为你的项目提供...
DrawChar() 版本 1 X 光标位置 CursorCol() 优化简介 回顾 - 清单 5 DrawChar() 版本 2 DrawChar() 版本 3 性格检查员 字符检查器版本 2 字符检查器版本 3 Y 光标位置 自然参数 SetCursorColRow() 拉绳() 将文本...
它是STM32系列中的一个成员,具有高性能、低功耗的特点,内含32位ARM Cortex-M3处理器,适用于各种嵌入式应用。在配置OLED显示屏之前,我们需要在STM32CubeMX中选择合适的芯片型号,并设置其工作频率、内存分配以及...
FontExporter:将指定文件包含的文本,用指定的字体和大小导出到字库。 <br>PicFont:在另一个系统显示字库,可以...画图片字用drawChar()方法。 <br>目前图片字支持各种字体,大小是1~32像素,渐变、阴影特效。
例如,可能有一个`drawPixel(x, y, color)`函数用于在指定位置画点,一个`drawLine(x1, y1, x2, y2, color)`函数用于画线,以及`drawChar(x, y, ch, font, color, backColor)`函数用于显示字符。 3. **文本输出函数...
void OLED_DrawChar(uint8_t Xpos, uint8_t Ypos, uint8_t Ascii); ``` 此外,OLED显示库通常支持16x16或8x8像素的单色字体,但也可以扩展支持更大的字体或彩色显示。显示图片则需要将图片数据转换为适合OLED显示的...
`Display.c`中的`Display_ShowNumber()`函数可能用于显示整数,而`Display_DrawChar()`则可能用于显示ASCII字符。 `TM1638_V1.3.pdf`是TM1638的数据手册,其中包含了详细的硬件接口、引脚功能、操作指令和通信协议...
`XMF_OLED_Font.h`可能包含各种字体的定义,以及与之相关的绘制和加载函数,比如`DrawChar()`和`SetFont()`。而`XMF_OLED_BMP.h`则可能处理BMP图像格式,用于加载和显示静态图片。 最后,我们看到一个名为`文字取模...