[英]Create Bitmap using a String
我想使用String
創建一個Bitmap
。 問題是當我將Paint和String分配給Canvas
。 所有我看到的是創建的點/黑色像素是我使用的配置有問題嗎? 這是我的代碼如下:
private void createBitmap(){
int textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getApplicationContext().getResources().getDisplayMetrics());
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setSubpixelText(true);
paint.setStyle(Paint.Style.FILL);
paint.setTextSize(textSize);
paint.setColor(Color.BLACK);
int w = 500, h = 200;
Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
Bitmap myBitmap = Bitmap.createBitmap(w, h, conf);
Canvas myCanvas = new Canvas(myBitmap);
myCanvas.drawColor(Color.WHITE, PorterDuff.Mode.CLEAR);
myCanvas.drawText("Just a string", 0, 0, paint);
imageView = new ImageView(this);
imageView.setImageBitmap(myBitmap);
}
y
參數實際上是文本的基線,因此您不會真正看到y == 0
任何內容。 你看到的點可能是“字符串”中“g”的下降。
嘗試改為
myCanvas.drawText("Just a string", 0, 100, paint);
所以至少你可以看到一些東西。
注意:您正在根據密度設置文本大小,但是您要使位圖成為絕對像素大小,因此您將不得不進行一些計算以獲得所需的外觀。
配置完Paint
,可以通過在Paint
上調用getFontMetrics()
,然后查看FontMetrics
值來確定文本的高度(以像素為getFontMetrics()
。 ascent
將是負面的,因為它向上測量,所以你可以通過fm.descent - fm.ascent
大致了解高度。
這是一種在位圖頂部邊緣下方繪制文本的方法:
Paint.FontMetrics fm = paint.getFontMetrics();
int baseline = (int) - fm.ascent; // also fm.top instead of fm.ascent
myCanvas.drawText("Just a string", 0, baseline, paint);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.