前言

本文主要讲解在静态图方面如何分别通过手绘和码绘两种方式来表现,以及它们之间的差异与联系,谨以此博客记录学习过程。博主新手一枚,这是博主第一次写博文,若有不足之处,还请温柔拍打~~(笔芯~~)

手绘

在绘画之前,我们需要进行准备工作,准备素描纸、彩铅、铅笔;准备工作做好之后,我们需要想好构图,比如图中我先确定每一个图案大致位置,伞放在素描纸的右边,两个轮子在中下位置,且两个轮子大小不同,但是在画画过程中我没有具体确定两个轮子的具体比例,就凭感觉画;字体放在大轮子的左上方,四周散落大小位置都随机的气泡;然后开始设定整幅图的色彩,添上自己喜欢的色彩,在画气泡的时候,为了突出光影效果,给气泡留了高光(但仍然丑得很…)。

码绘

相比手绘来说,码绘比较客观。

准备工作,准备大小为1000×500的画布。

function setup() {
createCanvas(1000, 500);
}

开始画画,用draw函数开始进行画画,draw函数一般会调用多次,每调用一次,画一帧,也就是一幅图,图是实时更新的,默认每秒60次。

function draw() {   // put drawing code here    back();   Circle(400,400,180,180);   Circle(650,400,150,150);     umbrella();word(); }
functi

在draw函数中,使用调用子函数来画我们图片的每一个部分,我们先画出背景主要是气泡,再画两个轮子,要注意顺序,因为可能有遮挡关系。

function back(){  fill('rgba(111,222,173,0.5)');      ellipse(400, 50, 20,20);fill('rgba(151,100,173,0.5)');       ellipse(300, 60, 40,40);fill('rgba(221,100,133,0.5)');      ellipse(500, 100, 80,80);fill('rgba(100,221,133,0.5)');      ellipse(100, 400, 90,90);fill('rgba(70,221,73,0.5)');      ellipse(160, 350, 30,30);fill('rgba(221,221,73,0.5)');       ellipse(950, 450, 30,30);fill('rgba(221,221,30,0.5)');      ellipse(800, 470, 10,10);}

在画背景时,可以看到,为了能够让气泡处于不同位置,我们需要定义位置进行精确定义,ellipse(800, 470, 10,10);相当于使用圆规定点定尺寸画出一个圆,为了能够让气泡色彩更丰富,使用fill(‘rgba(221,221,73,0.5)’);相当于我们的彩铅,然后就可以画出气泡了。

对于画轮子、伞与字来说,是同样的方法。

function word()
{
fill('rgba(230,173,162,1.0)'); textSize(20);  textStyle(ITALIC); text('Happy everyday',200 , 300);}

不过在画轮子时,我们只需要轮子大小位置改变,而不需要改变形状,就可以定义函数有关圆心半径的参数,改变大小时,只需要改变参数即可,就比较方便。

 function Circle(x,y,w,h)  {   //外廓   fill('rgba(230,163,162,1.0)');    ellipse(x, y, w, h);   fill('rgba(221,221,173,0.5)');     w1=w-20;    h1=h-20;    ellipse(x, y, w1, h1);fill('rgba(220,173,162,1.0)');    ellipse(x, y, 1/7*w,1/7* h);   fill('rgba(150,173,255,1.0)');   ellipse(x, y, 1/9*w,1/9* h);//   line(x-1/2*w1,y,x+1/2*w1,y);    line(x,y-1/2*h1,x,y+1/2*h1);        line(x-0.707*1/2*w1,y+0.707*1/2*h1,x+0.707*1/2*w1,y-0.707*1/2*h1);    line(x-0.707*1/2*w1,y-0.707*1/2*h1,x+0.707*1/2*w1,y+0.707*1/2*h1);}

画伞时,要注意伞柄与伞帽的绘画顺序。

function umbrella()
{
translate(-50, 0, 0)   //伞柄
fill(102);   rect(900, 180, 10, 300,5,5,20,20);   fill('rgba(162,173,222,1.0)');   arc(900, 200, 300, 280, PI, TWO_PI);    fill(255);      arc(775, 200, 50, 30, PI, TWO_PI);    arc(825, 200, 50, 30, PI, TWO_PI);    arc(875, 200, 50, 30, PI, TWO_PI);   arc(925, 200, 50, 30, PI, TWO_PI);    arc(975, 200, 50, 30, PI, TWO_PI);    arc(1025, 200, 50, 30, PI, TWO_PI);//point    fill('rgba(142,143,240,0.35)');    ellipse(900, 50, 20,20);}

完整代码:

function setup() {
createCanvas(1000, 500);
}
function draw() {   // put drawing code here    back();   Circle(400,400,180,180);   Circle(650,400,150,150);     umbrella();word(); }
function word(){
fill('rgba(230,173,162,1.0)');
textSize(20);
textStyle(ITALIC); text('Happy everyday',200 , 300);}    function Circle(x,y,w,h)  {
//外廓    fill('rgba(230,163,162,1.0)');   ellipse(x, y, w, h);    fill('rgba(221,221,173,0.5)');     w1=w-20;   h1=h-20;    ellipse(x, y, w1, h1);fill('rgba(220,173,162,1.0)');ellipse(x, y, 1/7*w,1/7* h);ffill('rgba(150,173,255,1.0)');    ellipse(x, y, 1/9*w,1/9* h);line(x-1/2*w1,y,x+1/2*w1,y);    line(x,y-1/2*h1,x,y+1/2*h1);        line(x-0.707*1/2*w1,y+0.707*1/2*h1,x+0.707*1/2*w1,y-0.707*1/2*h1);   line(x-0.707*1/2*w1,y-0.707*1/2*h1,x+0.707*1/2*w1,y+0.707*1/2*h1);}
function umbrella(){       translate(-50, 0, 0)    fill(102);    rect(900, 180, 10, 300,5,5,20,20);    fill('rgba(162,173,222,1.0)');    arc(900, 200, 300, 280, PI, TWO_PI);    fill(255);      arc(775, 200, 50, 30, PI, TWO_PI);    arc(825, 200, 50, 30, PI, TWO_PI);    arc(875, 200, 50, 30, PI, TWO_PI);    arc(925, 200, 50, 30, PI, TWO_PI);    arc(975, 200, 50, 30, PI, TWO_PI);    arc(1025, 200, 50, 30, PI, TWO_PI);//point    fill('rgba(142,143,240,0.35)');    ellipse(900, 50, 20,20);}
function back(){ fill('rgba(111,222,173,0.5)');       ellipse(400, 50, 20,20);fill('rgba(151,100,173,0.5)');       ellipse(300, 60, 40,40);fill('rgba(221,100,133,0.5)');       ellipse(500, 100, 80,80);fill('rgba(100,221,133,0.5)');       ellipse(100, 400, 90,90);fill('rgba(70,221,73,0.5)');       ellipse(160, 350, 30,30);fill('rgba(221,221,73,0.5)');      ellipse(950, 450, 30,30);fill('rgba(221,221,30,0.5)');      ellipse(800, 470, 10,10);}

那到底码绘与手绘两者区别与联系是什么,可以从以下几个方面来考虑:

两者比较

(1)思路

手绘绘图要先准备好画具,然后想好构图,每个图在整张纸的大概位置,然后是具体绘画的物体比例,远近关系,以及绘画的先后顺序,然后开始画线条,最后上色;代码绘图也需要较为连贯的顺序,先创建画布,不过绘画某些物体时,一定要按照先后顺序,否则出来的效果会不同,所以也要确定绘画的物体的先后顺序,且画之前要先上色,绘画时分模块,在子函数画好后,用绘图函数调用,最后显示。

(2)技术

代码绘图,要掌握一些绘图函数,以及其中参数的运用,要能写代码,懂得代码的模块与流程,画一些复杂的图,可能还要自己编写函数;手绘绘图,需要绘画的工具,本次绘画用了圆规、纸、彩铅、橡皮擦、铅笔,这次绘画比较简单的图,也不需要特别好的技巧,能画线条上色就行。

(3)创作偏好

个人比较喜欢手绘绘图,手绘绘图灵活便捷;代码绘图时,如果对某些函数不熟悉,可能会限制创作,不过代码绘图运用方面广,可以运用到某些软件等等。

(4)创作体验

手绘绘图灵活方便,主观影响性较大,一些个人技法的运用不受限制,小灵感来了,也能及时记录下来,受众广泛,不过要想画出好看的图,还是需要一些时间来训练技巧;用p5.js代码绘图简单,入门快,比较客观,可以直接调用现成的函数,画一些简单的图,还是比较容易掌握,函数的熟练运用比较难,特别是一些自己算法的编写,还有代码调整比较麻烦,有时候会出现与自己预料不一样的结果。

以上,就是此次作画过程中,我个人的体验了~

参考资料:

  1. 《用代码画画》:(https://blog.csdn.net/magicbrushlv/article/details/77922119)
  2. 开始第一幅码绘—以编程作画的基本方法:[https://blog.csdn.net/magicbrushlv/article/details/77840565]
  3. 以编程的思想来理解绘画—— (一)用”一笔画“表现“过程美”
    https://blog.csdn.net/magicbrushlv/article/details/82634189

码绘VS手绘(一) 编程与手绘的对比相关推荐

  1. 编程与手绘的对比——静态篇

    编程与手绘的对比--静态篇 一:作品展示 (1)码绘 (2)手绘 二:思路 (1)创作思路:最开始的构思是画一个城堡,结构稍复杂的那种,因为周末刚好去了迪士尼,那里的魔幻城堡很好看,结构感很强,我试着 ...

  2. 编程与手绘的异同---“运动”

    编程与手绘的异同-"运动"主题 在分析编程与手绘的异同时,我认为一个重要的区别就是编程可以更好的呈现动态的作品,下面我通过几种不同类型的动态作品进行分析. 编程工具:process ...

  3. UWP 手绘视频创作工具技术分享系列 - 手绘视频导出

    原文:UWP 手绘视频创作工具技术分享系列 - 手绘视频导出 手绘视频最终的生成物是视频文件,前面几篇主要讲的是手绘视频的创作部分,今天讲一下手绘视频的导出问题.主要以 UWP 为例,另外会介绍一些 ...

  4. 手绘漫画初学者如何一步步学手绘漫画

    来源:轻微课APP(一个专门学画画的社区),欢迎转载分享,但禁止商用转载! 手绘漫画初学者如何一步步学手绘漫画?有同学问如何学习手绘漫画,学习手绘漫画一定要循序渐进,今天微课菌来说说手绘漫画学习的一些 ...

  5. Windows核心编程_重绘ListBox样式(仿QQListBox)

    今天教大家如何重绘ListBox,其中涉及到的相关知识点也一一解释了 效果图: 是不是和QQ的列表框非常相似?那么这里就一步一步教大家如何使用Win32SDK来完成这项工作! 创建Win32窗口 #i ...

  6. 2022年csdn最全的Python练手经典趣味编程100例(部分

    一,前言 最近很多的初学python的伙伴和凡叔说学的太无聊了,整天不是在看技术,就是在学习技术,凡叔告诉你,学习不光是学,更多的还是要实践,多动手码,这样才能事半功倍. 100个Python练手经典 ...

  7. 入门板绘又应该注意什么呢? 板绘初学者怎么练线稿

    01 板绘是什么 简单的来讲,板绘就是通过笔用数位板在一些相应的软件中进行绘制图画的一种方式.板绘在进行画画的过程中是存在压力感应的,练习者施加不同的压力大小,所展现的线条粗细也是不一样的. 02 板 ...

  8. 【学习笔记】Part1·JavaScript·深度剖析-函数式编程与 JS 异步编程、手写 Promise(二、JavaScript 异步编程)

    [学习笔记]Part1·JavaScript·深度剖析-函数式编程与 JS 异步编程.手写 Promise(课前准备) [学习笔记]Part1·JavaScript·深度剖析-函数式编程与 JS 异步 ...

  9. 光绘文件 c语言 解析,AltiumDesigner输出光绘文件

    1.钻孔信息生成设置 打开PCB文件,放置钻孔位图符号对应的孔大小的列表: 切换到DrillDrawing层放置字符串,Place->string(P+S),此时按Tab键,在出现的Text文本 ...

  10. java 并发框架源码_某网Java并发编程高阶技术-高性能并发框架源码解析与实战(云盘下载)...

    第1章 课程介绍(Java并发编程进阶课程) 什么是Disruptor?它一个高性能的异步处理框架,号称"单线程每秒可处理600W个订单"的神器,本课程目标:彻底精通一个如此优秀的 ...

最新文章

  1. 李宏毅机器学习笔记六——Gradient Descent
  2. JSP 自定义标签介绍
  3. 此任务要求应用程序具有提升的权限
  4. 巧用Windows server 2008密码重置盘
  5. java数据库驱动_Java数据库驱动链接大全
  6. 每天一道LeetCode-----找到第k个排列
  7. 字符定长文件Linux怎么生成,Linux中的more命令-逐页显示长文本文件
  8. 从文件中读取数据,排序之后输出到另一个文件中
  9. 获取http地址如何从上面抓取图片_用 Python 自动抓取妹子图
  10. 15.立体几何——立体,基本概念,随机点立体图,立体估计深度_2
  11. .sh是什么语言_为什么《山海经·中次二经》中,把“西王母”叫做“马腹”?...
  12. pandas数据导出Execl
  13. python编程语言-Python成为2018年度编程语言,遥遥领先于其他语言
  14. win10休眠_这样设置以后,WIN10比WIN7运行更流畅
  15. CAD图纸转换成高质量的彩色PDF格式如何操作?
  16. 百度收录提交工具-免费主动提交百度快速收录软件
  17. word到处html分页,请问如何把做好的word分页导出为html格式
  18. 20分钟让你了解OpenGL——OpenGL全流程详细解读
  19. 在vue新版脚手架中下载和使用jquery
  20. 《Precise and realistic grasping and manipulation in Virtual Reality without force feedback》论文解读

热门文章

  1. 【ppt入门教程】PPT2013如何加上自己公司LOGO PPT中加上LOGO操作方法
  2. Unity ToLua热更框架使用教程(1)
  3. Http请求头 缓存
  4. 已上传的微信小程序源码丢失,通过反编译找回
  5. 金庸小说人物知识图谱构建——人名提取
  6. sqlserver添加字段值唯一约束
  7. VSCode 快捷键一览,从此高效办公
  8. mysql使用group_concat()连接构造json对象数组时长度受限
  9. 敏涵控股集团不忘初心,传承大爱精神
  10. php连接mysql实例之修改用户密码