Android将文本绘制到位图上

时间:2014-09-19 13:47:20

标签: android android-canvas

我试图在Android中的位图上写一些文字。我已经关注了几个指南并尝试了几种不同的代码变体,但我要么得到一些模糊的东西,一个空白的屏幕或未改变的位图。这是我一直在玩的基本想法。

public Bitmap writeOnDrawable(Context gContext, String path, String text) {

    Bitmap bitmap = BitmapFactory.decodeFile(path);

    Bitmap bmOverlay = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_4444);

    Canvas canvas = new Canvas(bmOverlay);

    Paint paint = new Paint();
    paint.setColor(Color.CYAN);
    paint.setTextSize(20);
    paint.setFlags(Paint.ANTI_ALIAS_FLAG);

    canvas.drawBitmap(bitmap, 0, 0, null);
    canvas.drawPoint(30, 50, paint);
    canvas.drawText("Text", 33, 53, paint);

    return bmOverlay;
}

我将此函数传递给变量,然后使用返回的位图将其转换为BitmapDrawable并使其成为布局的背景。该函数的这个特定版本只返回我的初始未改变的位图,没有" Text"横跨它的文字。

我尝试过诸如复制原始图片之类的变体:

Bitmap drawableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

将原始图像绘制到画布上:

canvas.drawBitmap(drawableBitmap, screenHeight, screenWidth, paint);

1 个答案:

答案 0 :(得分:2)

我使用android-maps-util库解决了这个问题 添加
编译'com.google.maps.android:android-maps-utils:0.4'
依赖于您的gradle文件。
使用IconGenerator创建包含文本的位图,并在BitmapDescriptor中使用它来在地图上创建标记。