毛笔效果简单思路

news/2024/7/6 6:33:56

任何画线的程序,都是先在界面上获取若干不连续的点,然后将这些点连成线。


一些常见的笔型比较好实现,比如说铅笔、钢笔等等,这类笔型的线条的宽度和线条的颜色是固定的,只需要将点连接成固定颜色和固定宽度的线即可。


毛笔是比较特殊的笔型,要实现好毛笔效果,有几点比较特殊,需要考虑。

1. 同一笔画内,线条各处的粗细不同。

2. 同一笔画内,线条各处的透明度不同。

3. 有笔锋效果。


实现思路:

先说笔锋效果。对笔锋效果的处理,一般在一笔的开始和结尾处特殊处理,特别是横竖笔画。

再说线条的透明度。一般来说,下笔速度慢、下笔力量重的地方,线条颜色较深;下笔速度快、下笔力量轻的地方,线条颜色较浅。

再说线条粗细。一般来说,下笔速度慢、下笔力量重的地方,线条较粗;下笔速度快、下笔力量轻的地方,线条较窄。


实现毛笔效果,不能简单的直接在面板上画线,而是要计算出一个线条区域,然后进行填充。大概算法:

1. 根据用户的输入得到连续的点信息。

2. 根据每个点之间的间隔距离,模拟计算出下笔速度。

3. 将速度与触摸压力(触摸屏的程序可以得到压力信息)结合,模拟计算出每个点的大小。如果无法得到触摸压力,或者不考虑压力,则可以只用速度来模拟计算。

4. 根据每个点的坐标和大小值,计算出所有需要填充的区域。

5. 模拟计算每块填充区域的透明效果。

6. 处理每一笔的初始和结尾点,模拟笔锋效果。

7. 根据计算好的效果,画出所有填充的区域。

要做好毛笔效果,需要专门研究。能够做好毛笔效果,其它笔型就简单多了。


下面是一个 demo 图,运行平台为 Android ,目前也仅仅是根据速度模拟计算出粗细效果,还非常简单,但是看起来已经蛮酷的了。

毛笔效果


http://www.niftyadmin.cn/n/4261534.html

相关文章

oracle 11g 从rman全备中恢复控制文件,Oracle RMAN 备份控制文件/恢复控制文件

--备份控制文件rman target /RMAN> startupRMAN> configure controlfile autobackup on; --启动自动备份RMAN> show CONTROLFILE AUTOBACKUP; --显示是否自动备份控制文件RMAN> configure controlfile autobackup format for device type disk to /backup/%F; --设…

oracle 全球大会2017,2017 Oracle Open World会议介绍汇总

十一期间,远在美国旧金山,举行了一年一度的Oracle Open World会议,这次会议分享主题有1800多个,按照官网的资料,参会人数是6万。演讲者有3000人左右,演讲者来自90多个国家,涉及的主题有2300个左…

python 公司名称获取公司行业_利用 Python 爬取了 13966 条运维招聘信息,我得出了哪些结论?...

大家好,我是 JackTian。我经常会收到读者关于一系列咨询运维方面的事情,比如:杰哥,运维到底是做什么的呀?运维的薪资水平/ 待遇怎么样呢?杰哥帮忙看下这个岗位的招聘需要对于小白来说,能否胜任的…

oracle频繁update同一张表,对于同一张表update带来的效率问题

需求:存在一张表create table tmp_report(...tmp_domain varchar(20),report_status int...);其中2列的值为:tmp_domain report_statusa3a2a1b4希望update report_status 的值为3所对应 tmp_domain 值相同的 report_status 都改成3,即&#x…

python中字符串异或_python实现了字符串的按位异或和php中的strpad函数

近期在写自己主动化測试,因为开发加密中用到strpad和字符串的按位异或,而python中没有这种函数和功能,所以必须自己写一套,要不自己主动化測试无法进行,所以就用python实现了一下,因为在写字符串的按位异或…

Linux 修改SSH端口 和 禁止Root远程登陆

SSH 端口默认是22. 但从安全方面考虑,建议修改这个端口。 端口的取值范围是 0 - 65535(即2的16次方),0到1024是系统使用的端口,如 http服务的端口80。我们可以使用的端口范围:1024到65535。这个是socket规定的。 一. Linux修改ssh…

Javascript的IE和Firefox兼容性汇编[转帖.收藏]

最近作浏览器兼容性方面的工作,发现此篇文章,太好了,转帖收藏了 Javascript的IE和Firefox兼容性汇编 作者:yaosansi 日期:2006-11-14 1. document.form.item 问题 (1)现有问题: 现有代码中存在许多 document.formName.…

oracle读取注释,读取oracle注释

# codingutf-8__author__ jspdbau读取oracle注释import cx_Oracle # 导入模块SQLr"""select * from user_col_comments t where 11and t.comments is not nulland t.table_name TABLE"""words["custom","code","t…