我已经从文本中创建了位图。但我想更改位图中使用的字体类型。但它保持原生字体无法制作。所以字体的类型不能改变。
这是我的代码
public void textAsBitmap(String text, float textSize) {
Paint paint = new Paint();
try
{
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/PROGGY.TTF");
paint.setTypeface(tf);
}
catch(Exception e)
{
Log.d("your tag", "typeface error: ", e);
}
paint.setTextSize(textSize);
paint.setColor(Color.WHITE);
paint.setTextAlign(Paint.Align.LEFT);
int width = (int) (paint.measureText(text) + 0.20f); // round 0.5f
float baseline = (int) (-paint.ascent() + 0.5f); // ascent() is negative
int height = (int) (baseline + paint.descent() + 0.50f); //0.5f
Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(image);
canvas.drawText(text, 0, baseline, paint);
printBitmap(image);
}
我将proggy.ttf存储在这里
答案 0 :(得分:1)
探索之后,尝试和错误,集思广益,并尝试外向。然后我发现了这些..
当我使用此代码时。我不能改变我的字体。它保持原生字体无法制作。
Paint paint = new Paint();
所以我使用这段代码解决了我的问题
TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG
| Paint.LINEAR_TEXT_FLAG);
textPaint.setStyle(Paint.Style.FILL);
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(textSize);
try
{
Typeface tf =Typeface.createFromAsset(getAssets(),"fonts/proggy.ttf");
textPaint.setTypeface(tf);
}
catch(Exception e)
{
Log.d("your tag", "typeface error: ", e);
}
然后是" fonts / proggy.ttf "需要是小写的。当我尝试大写时,它不能保持原生字体。所以使用小写,然后字体的类型可以随意改变。问题解决了
感谢反馈M D:)