`
wuhua
  • 浏览: 2114329 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于drawChar 与 drawString 的性能比较

阅读更多

下面来看看我对这方面的实际应用的结果对比

一。首先明确下,什么时候用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毫秒,而且是字符串不长的情况,如果是很长,那就太慢了。

分享到:
评论

相关推荐

    UCGUI使用汉字的源程序

    4. **UCGUI的文本绘制函数**:使用`LCD_DrawChar()`函数可以绘制单个字符,但汉字通常由多个字节组成,因此需要使用`LCD_DrawUnicodeChar()`来绘制。如果要绘制字符串,可以使用`LCD_DrawString()`,但要注意处理多...

    ti 图形库中文实现源码

    4. **图形API**:图形库通常会提供一套API接口,如`DrawChar`、`DrawString`等,供开发者调用来在屏幕上绘制文字。 5. **内存管理**:在嵌入式系统中,内存管理是至关重要的。库可能包含内存分配和释放的策略,以...

    ucgui font解析

    UCGUI提供了一系列函数,如`LCD_SetFont()`用于设置当前字体,`LCD_DrawChar()`用于绘制单个字符,`LCD_DrawString()`则用于绘制字符串。 在“Font”这个压缩包文件中,可能包含了多种字体资源,如不同大小、不同...

    Java与图形.ppt

    而`drawChar`方法则用于显示单个字符,它接受一个字符数组、偏移量、长度以及字符的x和y坐标。 2. 画直线: `drawLine`方法用于绘制直线,参数包括起点(x1, y1)和终点(x2, y2)的坐标。例如,`g.drawLine(0, 0, 100...

    LCD图片显示 C语言 程序代码.rar

    在电子工程领域,单片机(Microcontroller)是不可或缺的一部分,它们被广泛应用于各种设备的控制,例如智能家居、工业自动化、汽车电子等。C语言作为单片机编程的常用语言,以其高效、灵活和可移植性深受工程师们的...

    UCGUI 汉字显示(外部FLASH)_ucgui汉字显示在外部FLASH_

    总之,将UCGUI与外部FLASH结合,实现汉字在STM32F103上的显示,是一项涉及到硬件接口配置、字库管理、图形库集成以及性能优化的综合任务。理解并掌握这些知识点,对于进行复杂的嵌入式UI设计大有裨益。

    18.4 LCD显示ASCII字符.rar

    GD32F303是一款基于ARM Cortex-M3内核的高性能单片机,广泛应用于各种嵌入式系统设计。本教程主要讲解如何在GD32F303上通过编程实现LCD显示ASCII字符的功能。 首先,我们需要了解LCD的基本工作原理。LCD显示器通常...

    基于STM32F4的uC/GUI的移植程序

    7. **优化与调试**:在实现基本功能后,对性能进行优化,如减少不必要的计算,优化内存访问等。同时,利用开发工具进行调试,确保程序稳定可靠。 总之,将uCGUI移植到STM32F4微控制器上是一项涉及硬件驱动编程、...

    SimLCD.zip

    我们还需要实现一些方法来更新LCD显示,比如ClearDisplay()用于清屏,DrawPixel(x, y, color)用于画点,以及可能的DrawChar(x, y, char)和DrawString(x, y, str)等方法,用于字符和字符串的绘制。 在嵌入式系统中,...

    stm8l15x液晶屏显示函数

    对照表还可能包含关于特殊功能,如点阵显示或闪烁效果的说明。 总结来说,STM8L15x LCD显示函数涉及的知识点包括: 1. STM8L15x微控制器的LCD驱动库及其基本函数。 2. LCD显示屏的初始化和控制,包括设置时序、打开...

    STM32F767实现LCD显示汉字【支持STM32F7系列单片机_HAL库驱动】.zip

    STM32F767是意法半导体(STMicroelectronics)推出的一款高性能微控制器,属于Cortex-M7内核的STM32F7系列。它拥有高速处理能力、丰富的外设接口以及大容量的存储空间,是嵌入式系统设计的理想选择。在本项目中,...

    Adafruit-GFX显示中文详细教程

    - **字符映射**: 了解如何将GBK编码或其他编码与实际的字符对应起来,以便正确地传递给`drawChar()`函数。 通过以上步骤和注意事项,你应该能够成功地在Adafruit-GFX支持的显示屏上显示中文字符。这为你的项目提供...

    程序员为什么还要刷题-apple2_hgr_font_tutorial:Apple][//eHGR字体教程

    DrawChar() 版本 1 X 光标位置 CursorCol() 优化简介 回顾 - 清单 5 DrawChar() 版本 2 DrawChar() 版本 3 性格检查员 字符检查器版本 2 字符检查器版本 3 Y 光标位置 自然参数 SetCursorColRow() 拉绳() 将文本...

    使用STM32CubeMX配置1.3寸OLED显示屏12864带字库(HAL库)

    它是STM32系列中的一个成员,具有高性能、低功耗的特点,内含32位ARM Cortex-M3处理器,适用于各种嵌入式应用。在配置OLED显示屏之前,我们需要在STM32CubeMX中选择合适的芯片型号,并设置其工作频率、内存分配以及...

    适用于J2ME的图片字

    FontExporter:将指定文件包含的文本,用指定的字体和大小导出到字库。 &lt;br&gt;PicFont:在另一个系统显示字库,可以...画图片字用drawChar()方法。 &lt;br&gt;目前图片字支持各种字体,大小是1~32像素,渐变、阴影特效。

    用于单片机1.44寸液晶显示函数的相关代码.rar

    例如,可能有一个`drawPixel(x, y, color)`函数用于在指定位置画点,一个`drawLine(x1, y1, x2, y2, color)`函数用于画线,以及`drawChar(x, y, ch, font, color, backColor)`函数用于显示字符。 3. **文本输出函数...

    stm32的oled显示屏代码

    void OLED_DrawChar(uint8_t Xpos, uint8_t Ypos, uint8_t Ascii); ``` 此外,OLED显示库通常支持16x16或8x8像素的单色字体,但也可以扩展支持更大的字体或彩色显示。显示图片则需要将图片数据转换为适合OLED显示的...

    TM1638控制共阳数码管显示的相关函数代码

    `Display.c`中的`Display_ShowNumber()`函数可能用于显示整数,而`Display_DrawChar()`则可能用于显示ASCII字符。 `TM1638_V1.3.pdf`是TM1638的数据手册,其中包含了详细的硬件接口、引脚功能、操作指令和通信协议...

    OLED底层驱动代码CC2530版本

    `XMF_OLED_Font.h`可能包含各种字体的定义,以及与之相关的绘制和加载函数,比如`DrawChar()`和`SetFont()`。而`XMF_OLED_BMP.h`则可能处理BMP图像格式,用于加载和显示静态图片。 最后,我们看到一个名为`文字取模...

Global site tag (gtag.js) - Google Analytics