前言
在最近的一個項目中做了一個涂鴉的效果,手指快速移動,會出現(xiàn)折線,這篇文章記錄筆觸優(yōu)化。下面話不多說了,來一起看看詳細的介紹吧。
優(yōu)化前

優(yōu)化
設計到的類:Paint,Path
Path類記錄了坐標點集合決定線條軌跡,Paint決定怎么畫
Paint處理
//連接的外邊緣以圓弧的方式相交paint.setStrokeJoin(Paint.Join.ROUND); //線條結束處繪制一個半圓paint.setStrokeCap(Paint.Cap.ROUND);
Path處理
這里用的到有個叫貝塞爾曲線的概念。關于貝塞爾曲線公式,它是依據(jù)幾個位置任意的點坐標繪制出的一條光滑曲線。
在Path添加點坐標的時候,使用Path#quadTo(float,float,float,float) 代替 Path#lineTo(float,float) 。
lineTo(float,float) 從上一個點到某個指定的點新增一條線
quadTo(float,float,float,float) 從上一個點到某個指定的點新增一條二次方的貝塞爾曲線
項目中用的時候,又小優(yōu)化了一下,代碼如下:
if (Math.abs(lastX - x) < 3 && Math.abs(lastY - y) < 3) { } else { mPath.quadTo(lastX, lastY, (x + lastX) / 2, (y + lastY) / 2); lastX = x ; lastY = y ; }效果

線條拐彎處是不是平滑了很多,仔細的童鞋可能會發(fā)現(xiàn)整個線條有參差不齊的感覺,這個是抖動導致的,這個我們以后再說。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網(wǎng)的支持。
新聞熱點
疑難解答
圖片精選