Odpovědět na komentář

Android - How to draw text on a bitmap

This short article shows you how to draw text on bitmap loaded from resources.

First we read bitmap from resources. This bitmap is immutable, so we create mutable copy. Then we create Paint object and set them text size, color, shadow, etc.

Now we are ready to draw! But where? We need to calculate postion of bottom left corner of drawed text. That's all. Enjoy!

public Bitmap drawTextToBitmap(Context gContext, 
  int gResId, 
  String gText) {
  Resources resources = gContext.getResources();
  float scale = resources.getDisplayMetrics().density;
  Bitmap bitmap = 
      BitmapFactory.decodeResource(resources, gResId);
 
  android.graphics.Bitmap.Config bitmapConfig =
      bitmap.getConfig();
  // set default bitmap config if none
  if(bitmapConfig == null) {
    bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
  }
  // resource bitmaps are imutable, 
  // so we need to convert it to mutable one
  bitmap = bitmap.copy(bitmapConfig, true);
 
  Canvas canvas = new Canvas(bitmap);
  // new antialised Paint
  Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  // text color - #3D3D3D
  paint.setColor(Color.rgb(61, 61, 61));
  // text size in pixels
  paint.setTextSize((int) (14 * scale));
  // text shadow
  paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);
 
  // draw text to the Canvas center
  Rect bounds = new Rect();
  paint.getTextBounds(gText, 0, gText.length(), bounds);
  int x = (bitmap.getWidth() - bounds.width())/2;
  int y = (bitmap.getHeight() + bounds.height())/2;
 
  canvas.drawText(gText, x * scale, y * scale, paint);
 
  return bitmap;
}

Odpovědět

  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <h2> <h3> <h4>
  • You can enable syntax highlighting of source code with the following tags: <code>, <c>, <cpp>, <csharp>, <css>, <drupal5>, <drupal6>, <html>, <java>, <javascript>, <latex>, <mysql>, <php>, <postgresql>, <python>, <ruby>, <sql>, <xml>. The supported tag styles are: <foo>, [foo].
  • Řádky a odstavce se zalomí automaticky.

Více informací o možnostech formátování

CAPTCHA
Tato otázka testuje, jestli jste člověk.
Image CAPTCHA
Vložte znaky z obrázku (bez mezer).

© 2012 Vladislav Skoumal |
Webmail Domů Zpět nahoru