Android绘图之Paint的使用方法详解

简介

The Paint class holds the style and color information about how to draw geometries, text and bitmaps.

Paint:该类保存了绘制几何图形、文本和位图的样式和颜色信息。也就是说我们可以使用Paint保存的样式和颜色,来绘制图形、文本和bitmap,这就是Paint的强大之处。接下来我们使用Paint来绘图,并且看看该类有哪些样式和颜色

Paint的使用

使用Paint之前需要初始化

1
mPaint = new Paint();
设置画笔的样式:通过mPaint.setStyle()来设置样式。

总共有三种画笔的样式

FILL:填充内容;

STROKE:描边;

FILL_AND_STROKE:填充内容并描边。

设置画笔的宽度

?
1
mPaint.setStrokeWidth( 50 );

设置画笔的线帽

通过mPaint.setStrokeCap来设置线帽,总共有三种线帽

BUTT:没有线帽,默认模式

ROUND:圆形

SQUARE:方形


设置Join

使用setStrokeJoin方法来设置Join,Join有三种类型:

BEVEL:直线

ROUND:圆角

MITER:锐角

设置防锯齿

?
1
mPaint.setAntiAlias( true );

如果设置防锯齿,会损失一定的性能

抖动处理

使用mPaint.setDither()方法,设置是否使用图像抖动处理。会使绘制的图片等颜色更加的清晰以及饱满,也是损失性能。

点组成线,线组成面,这样Path可以绘制各种各样的图形,可以说是无所不能的了,但是Path也提供了很多方法,来绘制图形。

文本绘制

上文中,介绍了Paint画笔,和绘制了一些图形。但是介绍Paint的时候,我们知道它可以绘制图形,文本和bitmap,所以Paint是非常强大的了,我们看下Paint是如何绘制文本的。

设置字符之间的间距

?
1
setLetterSpacing

设置文本删除线

?
1
mPaint.setStrikeThruText( true );

是否设置下划线

?
1
mPaint.setUnderlineText( true );

设置文本大小

?
1
mPaint.setTextSize(textSize);

设置字体类型

?
1
2
3
4
5
6
mPaint.setTypeface(Typeface.BOLD);
// Style
public static final int NORMAL = 0 ; //常规
public static final int BOLD = 1 ; //粗体
public static final int ITALIC = 2 ; //斜体
public static final int BOLD_ITALIC = 3 ; //粗斜体

字体类型有以上四种类型可以设置。

加载自定义字体

?
1
Typeface.create(familyName, style)

文字倾斜

?
1
mPaint.setTextSkewX(- 0 .25f);

文字倾斜默认为0,官方推荐的-0.25f是斜体

文本对齐方式

?
1
mPaint.setTextAlign(Align.LEFT)

有三种:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public enum Align {
   /**
    * The text is drawn to the right of the x,y origin
    */
   LEFT ( 0 ), //左对齐
   /**
    * The text is drawn centered horizontally on the x,y origin
    */
   CENTER ( 1 ), //居中
   /**
    * The text is drawn to the left of the x,y origin
    */
   RIGHT ( 2 ); //右对齐
 
   private Align( int nativeInt) {
    this .nativeInt = nativeInt;
   }
   final int nativeInt;
  }

计算制定长度的字符串

?
1
int breadText = mPaint.breakText(text, measureForwards, maxWidth, measuredWidth)
设置完毕后

canvas.drawCircle(300,300,100,paint);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jonly_W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值