Android 游戏 - 在图片上绘制文字
Android Game - Drawing text on top of image
我正在构建一个 Android 游戏,其中包含一张卡片作为背景。
我需要做的是在运行时(每秒或发生特殊事件时)在图像顶部绘制文本。
但是我需要在图像的特定位置绘制文本,比方说:如果图像是 123x245,让我们在 (2, 3) 绘制文本。
到目前为止我所做的是将文本写入图像(作为位图)并将新位图分配给 ImageView
,但性能非常糟糕。
那么,为了做到这一点,您建议采用什么解决方案:CustomView
、SurfaceView
等?
谢谢。
试试这个:
private Bitmap addTextToBitmap(Bitmap b) {
Canvas c = new Canvas(b);
Paint p = new Paint();
p.setTextSize(100); // textSize
p.setColor(getResources().getColor(android.R.color.black)); // textColor
c.drawText("Your Text", POS_X, POS_Y, p); // textPosition
b = b.copy(Bitmap.Config.RGB_565, true);
return b;
}
例如:
imageView.setImageBitmap(addTextToBitmap(imageView.getDrawable().getBitmap()));
扩展你 ImageView
并使用 onDraw
中的 Canvas.drawText
方法将文本绘制在任何图像集上方 ImageView
中。不要忘记在 super.onDraw
调用之后调用 drawText
,否则您的文本将绘制在 ImageView
的图像下方。
我正在构建一个 Android 游戏,其中包含一张卡片作为背景。
我需要做的是在运行时(每秒或发生特殊事件时)在图像顶部绘制文本。
但是我需要在图像的特定位置绘制文本,比方说:如果图像是 123x245,让我们在 (2, 3) 绘制文本。
到目前为止我所做的是将文本写入图像(作为位图)并将新位图分配给 ImageView
,但性能非常糟糕。
那么,为了做到这一点,您建议采用什么解决方案:CustomView
、SurfaceView
等?
谢谢。
试试这个:
private Bitmap addTextToBitmap(Bitmap b) {
Canvas c = new Canvas(b);
Paint p = new Paint();
p.setTextSize(100); // textSize
p.setColor(getResources().getColor(android.R.color.black)); // textColor
c.drawText("Your Text", POS_X, POS_Y, p); // textPosition
b = b.copy(Bitmap.Config.RGB_565, true);
return b;
}
例如:
imageView.setImageBitmap(addTextToBitmap(imageView.getDrawable().getBitmap()));
扩展你 ImageView
并使用 onDraw
中的 Canvas.drawText
方法将文本绘制在任何图像集上方 ImageView
中。不要忘记在 super.onDraw
调用之后调用 drawText
,否则您的文本将绘制在 ImageView
的图像下方。