android paint cap join 理解 图示

本文详细解析了Paint类中的Cap和Join枚举类型,通过源码解读和对比图例,帮助读者理解不同设置下线条端点和连接处的表现形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



 

网上查了很多资料,对paint的里面的枚举类cap join讲的不是很透彻。在这里自己做一个比较深入的研究。

首先说Cap,比较形象的解释就是 用来控制我们的画笔在离开画板时候留下的最后一点图形,比如矩形,圆形等。不懂?那接着往下看。

先看看源码

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
  * The Cap specifies the treatment for the beginning and ending of
  * stroked lines and paths. The default is BUTT.
  */
public enum Cap {
     /**
      * The stroke ends with the path, and does not project beyond it.
      */
     BUTT    ( 0 ),
     /**
      * The stroke projects out as a semicircle, with the center at the
      * end of the path.
      */
     ROUND   ( 1 ),
     /**
      * The stroke projects out as a square, with the center at the end
      * of the path.
      */
     SQUARE  ( 2 );
     
     private Cap( int nativeInt) {
         this .nativeInt = nativeInt;
     }
     final int nativeInt;
}

这是cap的源码,从源码我们看到BUTT是默认的设置,但是我们看不出BUTT、ROUND、SQUARE的区别。

 

下面看几张图片,我想足以理解Cap的用途。

 

BUTT\
ROUND\
SQUARE\

 

上表就是三种样式的区别,竖线处即为画笔结束处,图中区别明显,在此不再赘述。

 

接着我们看Join,Join的理解也很容易,他是用来控制画的图形接触时候的样式的。

看源码:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
  * The Join specifies the treatment where lines and curve segments
  * join on a stroked path. The default is MITER.
  */
public enum Join {
     /**
      * The outer edges of a join meet at a sharp angle
      */
     MITER   ( 0 ),
     /**
      * The outer edges of a join meet in a circular arc.
      */
     ROUND   ( 1 ),
     /**
      * The outer edges of a join meet with a straight line
      */
     BEVEL   ( 2 );
     
     private Join( int nativeInt) {
         this .nativeInt = nativeInt;
     }
     final int nativeInt;
}

和Cap类似,看源码也就看出了默认是MITER,其他具体形状还是难以理解。接着看图:

 

 

MITER\
ROUND\
BEVEL\

 

上表就是三种样式的区别,区别明显,在此不再赘述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值