任何畫線的程序,都是先在界面上獲取若干不連續(xù)的點(diǎn),然后將這些點(diǎn)連成線。
一些常見的筆型比較好實(shí)現(xiàn),比如說鉛筆、鋼筆等等,這類筆型的線條的寬度和線條的顏色是固定的,只需要將點(diǎn)連接成固定顏色和固定寬度的線即可。
毛筆是比較特殊的筆型,要實(shí)現(xiàn)好毛筆效果,有幾點(diǎn)比較特殊,需要考慮。
1. 同一筆畫內(nèi),線條各處的粗細(xì)不同。
2. 同一筆畫內(nèi),線條各處的透明度不同。
3. 有筆鋒效果。
實(shí)現(xiàn)思路:
先說筆鋒效果。對(duì)筆鋒效果的處理,一般在一筆的開始和結(jié)尾處特殊處理,特別是橫豎筆畫。
再說線條的透明度。一般來說,下筆速度慢、下筆力量重的地方,線條顏色較深;下筆速度快、下筆力量輕的地方,線條顏色較淺。
再說線條粗細(xì)。一般來說,下筆速度慢、下筆力量重的地方,線條較粗;下筆速度快、下筆力量輕的地方,線條較窄。
實(shí)現(xiàn)毛筆效果,不能簡單的直接在面板上畫線,而是要計(jì)算出一個(gè)線條區(qū)域,然后進(jìn)行填充。大概算法:
1. 根據(jù)用戶的輸入得到連續(xù)的點(diǎn)信息。
2. 根據(jù)每個(gè)點(diǎn)之間的間隔距離,模擬計(jì)算出下筆速度。
3. 將速度與觸摸壓力(觸摸屏的程序可以得到壓力信息)結(jié)合,模擬計(jì)算出每個(gè)點(diǎn)的大小。如果無法得到觸摸壓力,或者不考慮壓力,則可以只用速度來模擬計(jì)算。
4. 根據(jù)每個(gè)點(diǎn)的坐標(biāo)和大小值,計(jì)算出所有需要填充的區(qū)域。
5. 模擬計(jì)算每塊填充區(qū)域的透明效果。
6. 處理每一筆的初始和結(jié)尾點(diǎn),模擬筆鋒效果。
7. 根據(jù)計(jì)算好的效果,畫出所有填充的區(qū)域。
要做好毛筆效果,需要專門研究。能夠做好毛筆效果,其它筆型就簡單多了。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
