0
我一直在用這個撕掉我的頭髮。我正在嘗試製作Pong應用程序(因爲我們需要其中一個,不是嗎?),其中一切都看起來是矩形和復古的。由於矩形化,在我決定添加當前分數的文本通知之前,我設法對應用程序的開發進行了很深入的研究。這樣做後,我注意到畫布(或至少是文本)的繪製分辨率低於我的設備(Nexus 4)原生畫面的分辨率。繪製到SurfaceView是低分辨率
我試過使用反別名標誌,雖然這給文本更平滑的外觀,但我仍然可以看到它不像應該的那樣尖銳。爲了在某種程度上隔離問題,我嘗試在畫布上繪製一些測試圈(其中一個帶有抗鋸齒,另一個沒有)。瞧,這些圈子也是低分辨率的。
到目前爲止,我所知道的,我已經正確地實現了表面視圖。任何需要的代碼部分都可以給出。
謝謝。
下面是文本樣式的代碼和文本的繪圖:
textStyle = new Paint(Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
textStyle.setColor(0xffffffff);
textStyle.setAntiAlias(true);
textStyle.setSubpixelText(true);
// draw from the bottom left up (lowest most recent)
Rect textBoundingRect = new Rect();
textStyle.getTextBounds(message, 0, message.length(), textBoundingRect);
// draw the text at the bottom of the screen
int top = (int) Math.round((c.getHeight() - (textBoundingRect.height() + 10) * i));
// c is just the canvas that was returned from locking
c.drawText(m.getMessage(), 10, top, textStyle);
圓的半徑是多少?如果它很小並且顯着放大,那麼你會看到這個。同樣,如果您將文本呈現爲小點並放大,它會顯得鋸齒狀。 – fadden
我使用Canvas.drawText和Canvas.drawCircle將圓圈和文本直接繪製到畫布上。在任何時候,我都可以擴大規模。我已經爲OP中的文本添加了適當的代碼。 –
這個人有沒有人得到任何東西?我發現了一些奇怪的東西。首先,我發現如果我在onCreate函數中打印表面寬度的值,我會得到320的值。這很奇怪,考慮到我的手機屏幕寬度像素爲720.其次,如果我強制SurfaceHolder具有720 x 1080的分辨率,然後它看起來好多了,但是觸摸事件仍然搞砸了,因爲當我的手指在屏幕的最右側部分時,我得到的觸摸的x值爲320。請有人幫我解決這個問題。謝謝。 –