首页 > 代码库 > android paint cap join 理解 图示

android paint cap join 理解 图示

Lee出品,本文属个人所有,转载请声明出处。

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

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

先看看源码:

    /**
     * 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的理解也很容易,他是用来控制画的图形接触时候的样式的。

看源码:

    /**
     * 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技术分享

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

android paint cap join 理解 图示