个人画板

作者: 小小棒棒糖 | 来源:发表于2017-10-11 17:19 被阅读60次

最近看画板,就自己对照sketchmaster做了一个,效果还可以,发出来共享下,git地址:AnyDraw

纯属个人手撸,欢迎好的建议,欢迎fork共同改进。

1.介绍

这是一个参照sketchmaster界面制作的画板,页面简捷易操作。它包含以下功能:

  1. 5种画笔(包括橡皮),每种笔有不同的特性,这也是一个可玩点。
  2. 独立粗细控制。
  3. 丰富的颜色选择器。预设18种颜色,及一个取色器。
  4. 可更换画布背景。
  5. 前进、回退控制。
  6. 清除与保存到相册。
1.1 界面

启动后页面如下:

主界面

页面分为三部分:

  1. 导航栏
  2. 画布
  3. 底部工具栏
1.2 功能介绍
笔类型选择器

目前做了5种笔,分别为:圆珠笔、倾斜笔、米形笔、喷枪、橡皮擦。笔的起名不一定正确,能理解就行。

画笔选择
颜色选择器

目前有固定颜色与取色器两种。

画笔选择器.png
画布切换

其中预设了10余种画布,可以滑动更换。

image.png
粗细控制

为下方工具栏中央Slider。

每种笔的初始粗细与颜色可以独立控制,修改颜色后,只会修改对应笔的粗细与颜色属性。

线条优化

对于线条的流畅性,做了优化。方法是取中点,做二次bezier,如下图所示:

image.png

其中绿色空心小点,是我们touchesMove时经过的point,但我们不能直接把point连接point去绘制,那样全是折线不流畅。

如果此时正画到currunt点,向前取两个点:previous2、previous1,previous2与previous1中点为mid2,previous1与currunt中点为mid1,然后以previous1为控制点,mid2向mid1绘曲线,图中绿色部分。依次向后绘,就能得到平滑曲线。

快速绘制时,此方法会导致线条显示偏移原有线路,不过一般看不出来。也考虑过用三次bizier成线,貌似线条不够自然。三次bezier参考DEMO

绘制方式

采用了两种绘制方式。

  1. shapeLayer上设置path
  2. bitMap绘制

圆珠笔与橡皮擦是直接在shapeLayer上通过设置path实现,特点是线条流畅,缺点是不能控制线条的粗细变化。

其它笔是用bitMap实现,通过把bezier线条大致等分取点,然后在每个点上绘制图片。图片的大小与点的间距可以通过算法控制,每个点在bezier线条上的方向也能大致得到,这就提供给了我们无限的扩展空间。比如:毛笔的粗细变化、路径上小星星的朝向。

待优化

1. 目前bezier曲线均分的算法不够精确。
2. 每段bezier结束与下一段bezier间衔接有BUG,需要优化。

  1. 曲线上粗细变化需要逐渐过渡,目前是突然性的。

4. bezier上点的方向还未判定。

相关文章

  • 个人画板

    最近看画板,就自己对照sketchmaster做了一个,效果还可以,发出来共享下,git地址:AnyDraw。 纯...

  • 画板和参考线 | AI从入门到精通

    画板 Artboards 1. 怎么创建多个画板 方法1:文件 - 新建,修改画板数目。点击更多设置,可设置画板的...

  • 《画板》

    文/依风 看着旧旧的画板 想着我们的那年那天 一起坐在河边 画着静静的山 水里倒影着你的容颜 和浅浅酒窝的笑脸 停...

  • 画板

    在很小的时候 我决定发现一点不如意就 在我的画板上 抹下一个小黑点 过了一年 我的画板就变成 纯黑的了 我决定发现...

  • 画板

    高二的暑假 每天拿着工具箱顶着烈日 走半个小时的路到画室 流着汗坐在风扇下就是三四个小时 画画的时候 脑海里...

  • 画板

    画板 搭建界面 顶部viewUIToolbar,会自动对里面的控件做自动布局在toolbar里面拖入item保存按...

  • 画板

    一出身 我们每个人都拥有一块白色的画板 有人把亲情涂成红色 有人把友情涂成橙色 有人把爱情涂成紫色 每个人根据自己...

  • 画板

    用户动作:按下去,动,松开鼠标三个动作完成画画 利用相对定位把创造一个个的黑圈圈放在它该在的地方,注意div1的s...

  • 画板

    —献给迷失在爱情里的你们 是谁的画板呀 在青春的脸上 写满了涂鸦 画中的世界 五颜六色 你却困在破旧的 小屋里 听...

  • 画板

    当落日告诉你今天即将结束不要难过新的一天即将开始今天注定要成为过去何必为了失意的泪水打湿了明天早上的阳光你要亲手拿...

网友评论

  • 要做个太阳:感谢作者的分享.发现换过画笔后,连续的快速的在画布上点击划点,会发生崩溃.
    小小棒棒糖:@要做个太阳 修了,你再试下😀
    要做个太阳:嗯嗯,:smiley:对了,给你贴下代码崩溃的地方weakSelf.callBack(NO, weakSelf.bezier, touchType);就是崩溃到这句代码,刚开始提示说从空数组里面取值造成的,不过后来不提示具体错误了,直接崩溃到这一句代码了。我找了好久也没有找到原因:sleepy::sleepy:
    小小棒棒糖:@要做个太阳 好的,有机会我查找下。

本文标题:个人画板

本文链接:https://www.haomeiwen.com/subject/yqmwyxtx.html