我想在我的j2me应用程序中使用自定义字体。所以我创建了一个png文件,其中包含所有需要的字形和一个字形宽度数组,另一个用于PNG文件中的字形偏移。
现在,我想在gameCanvas类中使用上面的字体在我的应用中呈现文本。但是当我使用以下代码时,在真实设备中渲染文本非常慢。
注意:文本被编码(出于某些目的)为字节并存储在this.text变量中。 242 = [空格],241 = [\ n]和243 = [\ r]。
int textIndex = 0;
while(textIndex < this.text.length)
{
int index = this.text[textIndex] & 0xFF;
if(index > 243)
{
continue;
}
else if(index == 242) lineLeft += 3;
else if(index == 241 || index == 243)
{
top += font.getHeight();
lineLeft = 0;
continue;
}
else
{
lineLeft += widths[index];
if(lineLeft <= getWidth())
lineLeft = 0;
int left = starts[index];
int charWidth = widths[index];
try{
bg.drawRegion(font, left, 0, charWidth, font.getHeight(), 0, lineLeft, top, Graphics.LEFT|Graphics.TOP);
}catch(Exception ee)
{
}
}
textIndex++;
}
有人可以帮助我提高代码的性能和速度吗?
最后抱歉我的英语不好,并感谢先进。:)
编辑:我改变了行
bg.drawRegion(font, left, 0, charWidth, font.getHeight(), 0, lineLeft, top, Graphics.LEFT|Graphics.TOP);
要:
bg.clipRect(left, top, charWidth, font.getHeight());
bg.drawImage(font, lineLeft - left, top,0)
bg.setClip(0, 0, getWidth(), getHeight());
但速度没有差异!!
任何帮助请!!
任何人都可以帮助我改进我的应用程序吗?
文本将在真实设备中2-3秒后出现此代码,我希望将此时间减少到毫秒。这对我来说非常重要。
我可以使用线程吗?如果是,怎么样?
答案 0 :(得分:2)
我无法确定为什么您的代码在真实设备中的性能不佳。 但是,如何引用一些众所周知的开源J2ME库来检查它的文本绘图实现,例如LWUIT。
您可以从上面的链接中找到它的字体绘图实现。它使用drawImage而不是drawRegion。
答案 1 :(得分:0)
我建议你研究this库。实施非常好,并使用行业标准设计模式(主要是Flyweight模式)和健壮。