国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現Path平滑的涂鴉效果實例

2019-12-12 01:53:01
字體:
來源:轉載
供稿:網友

前言

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

優化前


優化

設計到的類:Paint,Path

Path類記錄了坐標點集合決定線條軌跡,Paint決定怎么畫

Paint處理

//連接的外邊緣以圓弧的方式相交paint.setStrokeJoin(Paint.Join.ROUND); //線條結束處繪制一個半圓paint.setStrokeCap(Paint.Cap.ROUND);

Path處理

這里用的到有個叫貝塞爾曲線的概念。關于貝塞爾曲線公式,它是依據幾個位置任意的點坐標繪制出的一條光滑曲線。
在Path添加點坐標的時候,使用Path#quadTo(float,float,float,float) 代替 Path#lineTo(float,float) 

lineTo(float,float) 從上一個點到某個指定的點新增一條線

quadTo(float,float,float,float) 從上一個點到某個指定的點新增一條二次方的貝塞爾曲線

項目中用的時候,又小優化了一下,代碼如下:

 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 ; }

效果


線條拐彎處是不是平滑了很多,仔細的童鞋可能會發現整個線條有參差不齊的感覺,這個是抖動導致的,這個我們以后再說。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 朝阳区| 古蔺县| 太谷县| 石门县| 武川县| 北安市| 滨州市| 广州市| 岱山县| 景宁| 出国| 永吉县| 贞丰县| 二连浩特市| 南充市| 通河县| 萨迦县| 香港 | 弥渡县| 布尔津县| 神木县| 涡阳县| 张家口市| 登封市| 永修县| 靖安县| 泊头市| 呼和浩特市| 漯河市| 新安县| 扎兰屯市| 花莲县| 绥化市| 安顺市| 宁蒗| 大姚县| 黎平县| 新巴尔虎左旗| 苍梧县| 濉溪县| 达拉特旗|