我想在我的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秒的文字,我想把這段時間縮短到毫秒。這對我來說非常重要。
我可以使用線程嗎?如果是,如何?
也許,你的問題與雙緩衝有關?繪製字體後,您是否嘗試刷新畫布或遊戲畫布?你用計數器檢查了這個函數的性能嗎?或者,只需用眼睛檢查一下? – Wonil
首先,我創建了一個尺寸爲screen.then的圖像,然後從該圖像中獲取圖形(Graphics bg = bufferImage.getGraphics();),併爲該圖像繪製字形。然後在paint()方法中,我只繪製了bufferImage(對不起英語!!) –
我用眼睛檢查了性能!!!完成繪製字形到緩衝區圖像需要很長時間。 –