android paint cap join 理解 图示

来源:互联网 发布:linux windows双系统 编辑:程序博客网 时间:2024/05/29 11:20



网上查了很多资料,对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.
 */
publicenum 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);
     
    privateCap(intnativeInt) {
        this.nativeInt = nativeInt;
    }
    finalint 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.
 */
publicenum 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);
     
    privateJoin(intnativeInt) {
        this.nativeInt = nativeInt;
    }
    finalint nativeInt;
}

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

 

 

MITER\ROUND\BEVEL\

 

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


0 0
原创粉丝点击