任何畫線的程式,都是先在介面上獲取若干不連續的點,然後將這些點連成線。
一些常見的筆型比較好實現,比如說鉛筆、鋼筆等等,這類筆型的線條的寬度和線條的顏色是固定的,只需要將點連線成固定顏色和固定寬度的線即可。
毛筆是比較特殊的筆型,要實現好毛筆效果,有幾點比較特殊,需要考慮。
1. 同一筆畫內,線條各處的粗細不同。
2. 同一筆畫內,線條各處的透明度不同。
3. 有筆鋒效果。
實現思路:
先說筆鋒效果。對筆鋒效果的處理,一般在一筆的開始和結尾處特殊處理,特別是橫豎筆畫。
再說線條的透明度。一般來說,下筆速度慢、下筆力量重的地方,線條顏色較深;下筆速度快、下筆力量輕的地方,線條顏色較淺。
再說線條粗細。一般來說,下筆速度慢、下筆力量重的地方,線條較粗;下筆速度快、下筆力量輕的地方,線條較窄。
實現毛筆效果,不能簡單的直接在面板上畫線,而是要計算出乙個線條區域,然後進行填充。大概演算法:
1. 根據使用者的輸入得到連續的點資訊。
2. 根據每個點之間的間隔距離,模擬計算出下筆速度。
3. 將速度與觸控壓力(觸控螢幕的程式可以得到壓力資訊)結合,模擬計算出每個點的大小。如果無法得到觸控壓力,或者不考慮壓力,則可以只用速度來模擬計算。
4. 根據每個點的座標和大小值,計算出所有需要填充的區域。
5. 模擬計算每塊填充區域的透明效果。
6. 處理每一筆的初始和結尾點,模擬筆鋒效果。
7. 根據計算好的效果,畫出所有填充的區域。
要做好毛筆效果,需要專門研究。能夠做好毛筆效果,其它筆型就簡單多了。
下面是乙個
demo
圖,執行平台為
android
,目前也僅僅是根據速度模擬計算出粗細效果,還非常簡單,但是看起來已經蠻酷的了。
毛筆效果簡單思路
任何畫線的程式,都是先在介面上獲取若干不連續的點,然後將這些點連成線。一些常見的筆型比較好實現,比如說鉛筆 鋼筆等等,這類筆型的線條的寬度和線條的顏色是固定的,只需要將點連線成固定顏色和固定寬度的線即可。毛筆是比較特殊的筆型,要實現好毛筆效果,有幾點比較特殊,需要考慮。1.同一筆畫內,線條各處的粗細...
毛筆效果簡單思路
任何畫線的程式,都是先在介面上獲取若干不連續的點,然後將這些點連成線。一些常見的筆型比較好實現,比如說鉛筆 鋼筆等等,這類筆型的線條的寬度和線條的顏色是固定的,只需要將點連線成固定顏色和固定寬度的線即可。毛筆是比較特殊的筆型,要實現好毛筆效果,有幾點比較特殊,需要考慮。1.同一筆畫內,線條各處的粗細...
毛筆效果簡單思路
任何畫線的程式,都是先在介面上獲取若干不連續的點,然後將這些點連成線。一些常見的筆型比較好實現,比如說鉛筆 鋼筆等等,這類筆型的線條的寬度和線條的顏色是固定的,只需要將點連線成固定顏色和固定寬度的線即可。毛筆是比較特殊的筆型,要實現好毛筆效果,有幾點比較特殊,需要考慮。1.同一筆畫內,線條各處的粗細...