Java me j2me:使用自定义字体(位图)性能
Java me j2me:使用自定义字体(位图)性能,java-me,fonts,Java Me,Fonts,我想在j2me应用程序中使用自定义字体。所以我创建了一个png文件,其中包含所有需要的字形和字形宽度数组,以及png文件中字形偏移的另一个数组 现在,我想在gameCanvas类中使用上述字体在我的应用程序中呈现文本。但当我使用下面的代码时,在真实设备中呈现文本的速度非常慢 注意:文本(出于某些目的)编码为字节,并存储在此.text变量中。242=[space],241=[\n]和243=[\r] int textIndex = 0; while(textIndex < this.text
我想在j2me应用程序中使用自定义字体。所以我创建了一个png文件,其中包含所有需要的字形和字形宽度数组,以及png文件中字形偏移的另一个数组 现在,我想在gameCanvas类中使用上述字体在我的应用程序中呈现文本。但当我使用下面的代码时,在真实设备中呈现文本的速度非常慢 注意:文本(出于某些目的)编码为字节,并存储在此.text变量中。242=[space],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++;
}
致:
但是速度没有差别
请帮忙
有人能帮我改进我的应用程序吗 文本将在2-3秒后出现在真实设备上,我想把这个时间减少到毫秒。这对我来说非常重要
我能用线吗?如果是,怎么做?我不能确定为什么您的代码在实际设备中的性能不好。 但是,可以参考一些著名的开源J2ME库来检查它的文本绘制实现,例如LWiit
您可以从上面的链接中找到它的字体绘制实现。它使用drawImage而不是drawRegion。我建议您查看该库。该实现非常好,使用了行业标准的设计模式(主要是Flyweight模式)并且非常健壮。谢谢,我将看到上面的链接,并在几个小时后报告结果。通过从lwuit源代码中获取想法编辑了我的问题。但是没有区别。(我不能使用lwuit库,我必须使用我自己的文本呈现方法。)也许,您的问题与双缓冲有关?绘制字体后是否尝试刷新画布或游戏画布?您是否使用计数器检查此功能的性能?或者,只是用眼睛检查一下?首先我创建了一个屏幕大小的图像。然后我从该图像中获取图形(graphics bg=bufferImage.getGraphics();)并为该图像绘制字形。然后在paint()方法中,我只绘制了bufferImage。(很抱歉英语不好!!)我用眼睛检查了性能!!!。完成将图示符绘制到bufferImage需要很多时间。我建议使用计数器(时间)检查性能。如果真的需要2秒来运行,那么用时间测量来测试你的函数怎么样。而且,如果不是这样的话,应该还有其他导致性能低下的原因。谢谢,我测试了这个库。但是它也很重。而且它不支持RTL语言。
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());