gpt4 book ai didi

android - 在 Canvas 中缩放位图时应用程序挂起

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:07 27 4
gpt4 key购买 nike

位图上绘制文本

public Bitmap textAsBitmap(String text, float textSize, int textColor) {
m_paint.setTextSize(textSize);
m_paint.setColor(textColor);
m_paint.setTextAlign(Paint.Align.LEFT);
int width = (int) ( m_paint.measureText(text) + 0.5f); // round
float baseline = (int) (- m_paint.ascent() + 0.5f); // ascent() is negative
int height = (int) (baseline + m_paint.descent() + 0.5f);
final Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);
canvas1.setBitmap(image);
canvas1.drawText(text, 0, baseline, m_paint);
return image;
}

第 2 步 - 绘制 Canvas

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();

if (CustomTextview.GetDB().size() != 0) {
for (CustomTextview textview : CustomTextview.GetDB()) {
scale = textview.GETSCALE();
final Bitmap bitmap= textAsBitmap(textview.text,textview.size*scale,textview.color);
if (bitmap!=null)
canvas.drawBitmap(bitmap, textview.X, textview.Y, textview.paint);
}
}
canvas.restore();

}

我正在使用缩放监听器来缩放位图。但是在缩放时,它会在 5 到 10 分钟后挂起。

最佳答案

您可以直接在 Canvas 上简单地绘制文本,而无需先创建位图。

为此,创建一个具有正确配置的 Paint,计算绘制文本时的大小,然后将文本本身直接绘制到 Canvas 上。

Paint textPaint = new Paint();
textPaint.setColor(Color.WHITE);
textPaint.setAntiAlias(true);
textPaint.setFakeBoldText(true);
textPaint.setStyle(Paint.Style.FILL);
textPaint.setTextAlign(Paint.Align.CENTER);
textPaint.setTextSize(30f);


String myText = "This is a test";
Rect textBounds = new Rect();
textPaint.getTextBounds(myText, 0, myText.length(), bounds);

canvas.drawText(myText, 0, myText.length() rect.width()/2, rect.height()/2, textPaint);

上面的代码会将文本居中绘制,但您可以轻松更改它以满足您自己的需要。

关于android - 在 Canvas 中缩放位图时应用程序挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764451/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com