3

我是 android 新手,我的小组目前正在使用 opengl es 2.0 使用 GlSurfaceView 创建一个图形应用程序。

我们最近在绘图上显示了网格和刻度线,现在我被分配了实现数字刻度并将 x 和 y 轴标记为“X”和“Y”的任务。

在此处输入图像描述

经过大量研究后,我决定通过将一串字符渲染为位图来实现这一点。我在实现这一目标时遇到了很多问题。我了解基本概念。我知道我需要字母数字字符“0123456789”和“XY”和“-”(用于 -x 和 -y 刻度)。我已经看到了许多不同的例子,并在这里广泛尝试遵循 JVitella 的例子

我开始掌握这个概念,但就我的字符串而言,我知道我有 13 个字符,那么我的位图应该有多大?

同样在 Jvitelas 示例中,我对代码感到目瞪口呆:

Drawable background = context.getResources().getDrawable(R.drawable.background);

我不明白到底发生了什么,当我编写代码时,我在上下文中收到语法错误。

对于我的应用程序,我知道我需要将字符串保存到一个位图中,就像这样。我会创建一个位图,但它应该有多大?然后我从位图和 canvas.drawText 创建一个画布到位图中。

  [ 0 1 2 3 4 ]
  | 5 6 7 8 9 |
  [ X Y Z     ]

基本上我在问:

  • 如何实现上面的以下位图?
  • 我将如何从位图中绘制单个数字?
  • 我将如何绘制多于一位的数字?
4

1 回答 1

2

你问了很多问题,但我会试着回答几个:

  • 那么我的位图应该有多大?

    这完全取决于您,具体取决于您希望文本的清晰程度。您可以为每个可以很好缩放的字符分配一个具有数百个像素的巨大位图,或者分配一个分辨率有限的非常小的位图。我会说你想要的任何“字体大小”,为每个字符分配至少那么多像素的高度。因此,如果您想绘制字体大小为“20”的东西,那么您可能需要一个 5x20 x 3x20 或 100x60 的位图。

  • 我将如何从位图中绘制单个数字?

    您将在要绘制字母的地方使用 opengl 绘制一个四边形,然后使用该四边形的纹理坐标来选择一个字母。

    例如,如果我想画一个 X,那么你在屏幕上画一个四边形,并将它的 texcoords 从 (0,0) 分配到 (0.2, 0.33),它选择纹理的左 1/5 和底部纹理的 1/3。您将看到像这样的框如何与纹理中“X”的位置对齐。

  • 我将如何绘制多于一位的数字?

    您只需在彼此旁边绘制两个独立的个位数。


如果您在这里的唯一目标是在 Android 中绘制文本,那么只使用FrameLayout, 并TextViewsGLSurfaceView. OpenGL 不是为文本设计的,这使得它有些麻烦。

于 2012-12-01T00:23:34.873 回答