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。请有人帮我解决这个问题。谢谢。 –