【发布时间】:2019-07-19 23:30:10
【问题描述】:
我正在尝试使用下面的代码在位图上绘制两个文本,一切正常,但是如果文本的位置变小,我会遇到位图大小的问题,例如
1080x1920
250x268
代码:
public Bitmap drawTextToBitmapVHS(Context gContext,
Bitmap bitmap) {
String PLAY = "PLAY ►";
String DATE = getDate(Calendar.getInstance());
android.graphics.Bitmap.Config bitmapConfig =
bitmap.getConfig();
if (bitmapConfig == null) {
bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
}
bitmap = bitmap.copy(bitmapConfig, true);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.WHITE);
double relation = Math.sqrt(canvas.getWidth() * canvas.getHeight()) / 250;
paint.setTextSize((float) (12 * relation));
paint.setTypeface(Typeface.create(Typeface.createFromAsset(getAssets(), "fonts/VCR.ttf"), Typeface.BOLD));
Rect bounds = new Rect();
paint.getTextBounds(DATE, 0, DATE.length(), bounds);
int horizontalSpacing = 24;
int verticalSpacing = 36;
int x = horizontalSpacing;
int y = bitmap.getHeight() - verticalSpacing;
canvas.drawText(PLAY,
x, bounds.height() + verticalSpacing, paint);
canvas.drawText(getHours(Calendar.getInstance()), x, y - 50, paint);
canvas.drawText(DATE, x, y, paint);
return bitmap;
}
尽管位图的大小与第一张图像 (1080x1920) 完全相同,但我如何才能修复文本,谢谢。
【问题讨论】:
标签: java android canvas android-bitmap drawtext