Paint屬性簡(jiǎn)單了解

1.Paint 屬性

        mPaint.setColor(Color.RED)//設(shè)置顏色
        mPaint.isAntiAlias = true //是否抗鋸齒
        mPaint.setARGB(255, 255, 255, 0) //設(shè)置paint對(duì)象顏色 0-255
        mPaint.alpha = 200 //設(shè)置透明度
        mPaint.style = Paint.Style.STROKE // 描邊填充效果 1.STROKE 描邊 2.FIll 填充 3.FILL_AND_STROKE 描邊+填充
        mPaint.strokeWidth = 5F // 描邊寬度

        mPaint.strokeCap = Paint.Cap.SQUARE //圓角效果 1.STROKE 默認(rèn) 2.ROUND 在線條末尾加上半圓形 3.SQUARE 在線條末尾加上矩形
        mPaint.strokeJoin = Paint.Join.MITER // 拐角  1.MITER 尖角 2.BEVEL 去掉尖角 3.ROUND 圓形
        mPaint.setShader(SweepGradient(200F, 200F, Color.RED, Color.BLUE)) //渲染器
        mPaint.setXfermode(PorterDuffXfermode(PorterDuff.Mode.ADD))//設(shè)置圖層混合模式
        mPaint.setColorFilter(LightingColorFilter(0xffffff, 0x235545)) //顏色過濾器
        mPaint.isFilterBitmap = true //設(shè)置雙線性過濾(比圖一張很像馬賽克的圖片過濾后就柔和很多,馬賽克變成模糊的)
        mPaint.setMaskFilter(BlurMaskFilter(10F, BlurMaskFilter.Blur.INNER)) //畫筆遮罩濾鏡,傳入度數(shù)和濾鏡
        mPaint.textScaleX = 2F //文本縮放
        mPaint.textSize = 40F //文本大小
        mPaint.textAlign = Paint.Align.CENTER //文本對(duì)齊方式
        mPaint.isUnderlineText = true

        val str = "我的學(xué)習(xí)之路"
        var mRect = Rect()
        mPaint.getTextBounds(str, 0, str.length, mRect) //將文本放到rect區(qū)域中
        mPaint.measureText(str)//文本的寬度
        mPaint.fontMetrics //獲取字體的度量對(duì)象

2.屬性詳解

主要是用代碼實(shí)現(xiàn)那些屬性的效果

基本設(shè)置的代碼

    var mPaint = Paint()
    init {
        mPaint.setARGB(255, 255, 0, 0)
        mPaint.isAntiAlias = true //是否抗鋸齒
        mPaint.style = Paint.Style.STROKE // 描邊填充效果 1.STROKE 描邊 2.FIll 填充 3.FILL_AND_STROKE 描邊+填充
        mPaint.strokeWidth = 50F // 描邊寬度
    }

1.拐角

以下從左到右邊的效果是: 1.MITER 尖角 2.BEVEL 去掉尖角 3.ROUND 圓形

001.jpg
     override fun draw(canvas: Canvas?) {
        super.draw(canvas)
        strokeJoin(canvas)
    }
    fun strokeJoin(canvas: Canvas?){
        mPaint.strokeJoin = Paint.Join.MITER // 拐角  1.MITER 尖角 2.BEVEL 去掉尖角 3.ROUND 圓形
        canvas?.drawPath(strokeJoin(0),mPaint)
        mPaint.strokeJoin = Paint.Join.BEVEL // 拐角  1.MITER 尖角 2.BEVEL 去掉尖角 3.ROUND 圓形
        canvas?.drawPath(strokeJoin(1),mPaint)
        mPaint.strokeJoin = Paint.Join.ROUND // 拐角  1.MITER 尖角 2.BEVEL 去掉尖角 3.ROUND 圓形
        canvas?.drawPath(strokeJoin(2),mPaint)
    }
    fun strokeJoin(num:Int):Path{
        var path = Path()
        path.moveTo(300F*num+50F,50F)
        path.lineTo(300F*num+250F,50F)
        path.lineTo(300F*num+50F,200F)
        return path
    }

2.圓角

下圖從上到下分別是 圓角效果 1.BUTT 默認(rèn) 2.ROUND 在線條末尾加上半圓形 3.SQUARE 在線條末尾加

002.jpg
    override fun draw(canvas: Canvas?) {
        super.draw(canvas)
        strokeCap(canvas)
    }
    fun strokeCap(canvas: Canvas?){
        mPaint.strokeCap = Paint.Cap.BUTT//圓角效果 1.BUTT 默認(rèn) 2.ROUND 在線條末尾加上半圓形 3.SQUARE 在線條末尾加上矩形
        canvas?.drawLine(50F,50F,600F,50F,mPaint)
        mPaint.strokeCap = Paint.Cap.ROUND//圓角效果 1.BUTT 默認(rèn) 2.ROUND 在線條末尾加上半圓形 3.SQUARE 在線條末尾加上矩形
        canvas?.drawLine(50F,150F,600F,150F,mPaint)
        mPaint.strokeCap = Paint.Cap.SQUARE//圓角效果 1.BUTT 默認(rèn) 2.ROUND 在線條末尾加上半圓形 3.SQUARE 在線條末尾加上矩形
        canvas?.drawLine(50F,250F,600F,250F,mPaint)
    }

3.渲染器

注意:Shader后面會(huì)做一個(gè)詳細(xì)的講解 開啟傳送門

1.簡(jiǎn)介

Shader.TileMode 三個(gè)類型
1.CLAMP
當(dāng)填充區(qū)域大于填充物,會(huì)以填充物體最后一個(gè)像素水平或者垂直方向上的延申
2.REPEAT
以填充物水平和垂直方向上的復(fù)制平鋪填充
3.MIRROR(鏡像)
以填充物水平或者垂直方向上的翻轉(zhuǎn)平鋪填充

2.簡(jiǎn)單效果

setShader()這個(gè)方法后面還有個(gè)詳細(xì)講解


003.jpg
    override fun draw(canvas: Canvas?) {
        super.draw(canvas)
        setShader(canvas)
    }
    fun setShader(canvas: Canvas?){
        canvas?.drawLine(50F,50F,600F,50F,mPaint)
        mPaint.setShader(SweepGradient(200F, 200F, Color.RED, Color.YELLOW)) //環(huán)形渲染器
        canvas?.drawLine(50F,150F,600F,150F,mPaint)
    }

2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容