android - 使用 Canvas Android 在填充的矩形内绘制文本

标签 android canvas view drawing

如何使用 Canvas Android 绘制具有指定边界的填充矩形以及要在该矩形内绘制的文本?我试过了

mPaint.setColor(Color.GREEN);
canvas.drawText(mText, x, y, mPaint);
mPaint.setColor(Color.BLACK);
canvas.drawRect(x, y, x + w, y + h, mPaint);

但文本不在该矩形内。哪位大侠能告诉我如何在指定文本的周围画一个矩形,同时考虑到文本的大小??

最佳答案

这里我有硬编码的 x 和 y 值。你可以改变它们

        mpaint= new Paint();
        mpaint.setColor(Color.RED);
        mpaint.setStyle(Style.FILL);
        paint2= new Paint();
        paint2.setColor(Color.GREEN);
        paint2.setTextSize(50);  //set text size
        float w = paint2.measureText(s)/2;
        float textSize = paint2.getTextSize();


        @Override
        protected void onDraw(Canvas canvas) {
            paint2.setTextAlign(Paint.Align.CENTER);
            canvas.drawRect(300-w, 300 - textsize, 300 + w, 300, mpaint);
            canvas.drawText(s, 300, 300 ,paint2); //x=300,y=300    
        }

编辑:

onDraw 中调用measureText 是个坏主意。您可以在 onDraw 之外执行此操作。

还有一个关于性能的视频,以及为什么您应该避免在 onDraw 中进行分配。 https://www.youtube.com/watch?v=HAK5acHQ53E

生成快照

enter image description here

关于android - 使用 Canvas Android 在填充的矩形内绘制文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15609426/

相关文章:

android - 升级试用版到完整版

javascript - 从网络浏览器拍照

javascript - 单击按钮保存多个图像

javascript - 在 JavaScript Canvas 上创建文本轮廓

ios - 尝试从 super View 中删除对象时 Objective-c 程序崩溃

ruby-on-rails - View 在浏览器中正确呈现,但在辅助方法上测试失败?

android - 设计 BottomNavigationView - 在代码中设置背景颜色

PHP - 正则表达式匹配带或不带国家代码的电话号码

javascript - jquery 旋转图像并用同名文件保存它们(覆盖)?

android - 将位图的大小调整为固定值但不更改纵横比