一、Canvas与Paint:绘图世界的画笔与画布
在Android的绘图世界里,Canvas(画布) 和 Paint(画笔) 就像画家的画布和画笔一样,是绘制图形和文字的基础工具。
可以把Canvas想象成一块真实的画布,它提供了各种绘制方法:画直线、画矩形、画圆形,当然还有我们重点要讲的——画文字。而Paint则像是我们手中的画笔,决定了绘制内容的颜色、粗细、字体和样式等属性。
初始化画布和画笔很简单:
// 创建一个Bitmap作为绘图的载体
Bitmap bitmap = Bitmap.createBitmap(800, 600, Bitmap.Config.ARGB_8888);
// 创建Canvas并关联Bitmap
Canvas canvas = new Canvas(bitmap);
// 创建画笔
Paint paint = new Paint();
// 设置画笔颜色为黑色
paint.setColor(Color.BLACK);
// 设置文字大小
paint.setTextSize(30);
这里我们创建了一个800x600像素的Bitmap,然后将其与Canvas关联,这样所有在Canvas上的绘制操作都会体现在这个Bitmap上。Paint对象则用来控制绘制文本的样式和颜色。
二、绘制第一行文字:从drawText开始
掌握了基础的工具准备后,让我们来绘制第一行文字。Canvas类提供了drawText方法,这是最基本的文本绘制方法。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setTextSize(30);
canvas.drawText("Hello, Android!", 100, 50, paint);
}
这段代码将在画布的位置(100, 50)处绘制红色的"Hello, Android!"文字,文字大小为30像素。
但当你运行这段代码时,可能会发现文字的位置并不完全如你预期。这是因为drawText方法中的x和y参数并不是指文字的左上角,而是基线的起始位置。
三、理解文字测量的奥秘:基线、上下边界与精准定位
3.1 为什么文字定位这么难?
在Android中绘制文本时,你会遇到一个独特的概念——基线(Baseline)。这是文字绘制的基础线,大多数字母都"坐"在这条线上。
想象一下写英语字母的时候,有些字母如"g"、"p"、"q"会有向下的部分(降部),而有些字母如"b"、"d"、"f"则会有向上的部分(升部)。这就是为什么简单的从左上角定位不够准确的原因。
文字绘制时隐含了五条关键的线:
- Top线

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



