Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将文本渲染为位图并绘制它_Java_Android_Opengl Es_Drawtext_Text Rendering - Fatal编程技术网

Java 如何将文本渲染为位图并绘制它

Java 如何将文本渲染为位图并绘制它,java,android,opengl-es,drawtext,text-rendering,Java,Android,Opengl Es,Drawtext,Text Rendering,我是android新手,我的团队目前正在使用opengl es 2.0创建一个使用GlSurfaceView的图形应用程序 我们最近在绘图上显示了网格和记号,现在我被分配了执行数字刻度的任务,并将x和y轴标记为“x”和“y” 在做了大量研究之后,我决定通过将字符串渲染到位图来实现这一点。我在实现这一目标时遇到了许多问题。我理解基本概念。我知道我需要字母数字字符“0123456789”和“XY”以及“-”(用于-x和-y刻度)。我已经看到了许多不同的例子,并在这里广泛地尝试着效仿JVitella

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

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

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

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

同样在JVitellas的例子中,代码让我目瞪口呆:

Drawable background = context.getResources().getDrawable(R.drawable.background);
我不明白到底发生了什么,当我编写这段代码时,我在上下文中收到了一个语法错误

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

  [ 0 1 2 3 4 ]
  | 5 6 7 8 9 |
  [ X Y Z     ]
基本上,我是在问:

  • 如何实现上面的以下位图
  • 如何从位图中绘制一位数
  • 我如何用一个以上的数字绘制数字

你问了很多问题,但我将尝试回答几个问题:

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

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

  • 如何从位图中绘制一位数

    将在要绘制字母的位置使用opengl绘制四边形,并使用该四边形的纹理坐标拾取字母

    例如,如果我想绘制一个X,那么您可以在屏幕上绘制一个四边形,并将其texcoords从(0,0)指定到(0.2,0.33),这将选择纹理的左1/5和底部1/3。您将看到这样的长方体如何与纹理中“X”的位置对齐

  • 我如何用一个以上的数字绘制数字

    你只要把两个独立的一位数画在一起就行了



如果您在这里的唯一目标是在Android中绘制文本,那么只需使用
FrameLayout
,以及
GLSurfaceView
的图层
TextViews
就可以了。OpenGL不是为文本而设计的,这使得它有点麻烦。

我感谢您为回答所有这些问题所做的努力!我想我现在明白位图的概念了。我对GLSURFACHEVIEW顶部的文本视图感兴趣。我记得读过这篇文章,对于这个应用,我希望用户能够向左或向右、向上或向下平移。应用程序已重新渲染GLSurfaceView,以根据运动事件进行更新。这意味着,如果我从(-10到10)X域向右平移5个缩放单位,新的GLSURFACHEVIEW将显示X域(-5到15)的渲染图。TextView能否有效地更新GLSURFACHEVIEW的ontop?我只画整数的标量单位,即(-5到5)域,我会画=-5-4-3-2-10012345。文本视图是否比位图实现更简单、更有效。再次感谢你,蒂姆,给你一个很棒的+1