一、Canvas绘图的基本方法

Canvas的坐标系统是绘图的基础, Canvas组件的左上角为原点(0, 0),X 轴水平向右为正,Y 轴垂直向下为正,与屏幕坐标系相同。

Canvas提供的绘制各种图形的方法见表1。

表1 Canvas提供的绘图及部分操作方法

绘制图形时需要简单的几何基础:

在使用create_line()绘制直线时,需要指定两个点的坐标,分别作为直线的起点和终点。

在使用 create_rectangle()绘制矩形时,需要指定两个点的坐标,分别作为矩形左上角点和右下角点的坐标。

在使用create_oval()绘制椭圆时,需要指定两个点的坐标,分别作为左上角点和右下角点的坐标来确定一个矩形,而该方法则负责绘制该矩形的内切椭圆。

表1列出了Canvas中不同的create_xxx方法的功能,包括文字、形状、图形图像和组件,具体可用于创建矩形、椭圆、多边形、扇形、弓形、弧、直线、位图、图片、组件和文字等。在绘制不同的图形时可指定不同的选项,从而实现丰富的绘制效果。

 二、Python Canvas绘制简笔画兔子

本篇介绍用Python Canvas绘制图1所示的简笔画兔子。

任何复杂图形都可以分解为基本的形状(直线、弧(椭圆、圆)、矩形等),也就是说用基本的形状可以组合成复杂图形。

图1(a)是来自百度“简笔画大全”中的一幅“兔子”图,图1(b)是笔者用Word的“形状”工具画的“兔子”图,其中使用了三种形状:圆弧、直线和椭圆,图中虚线坐标轴为Canvas绘图坐标系,实线坐标轴为海龟绘图坐标系。

所以图1(a)可以用Canvas的形状绘制出来,类似图2(b)Word的“形状”工具画的“兔子”图,其中除眼睛用椭圆,有三处用了直线外,其余全部采用圆弧进行拟合。因此可用Canvas绘制圆弧、绘制直线和绘制椭圆来完成题目。Canvas绘图是基于coord的(如图2的虚线矩形框),coord是由左上角坐标和右下角坐标组成的矩形。Canvas绘图圆弧用的是转过角度extent=ed-sd,直线当h<0时起点坐标y=y-|h|。

图1 简笔画兔子原图与用Word形状工具画的兔子 

图2 Canvas绘图与程序中变量关系

由图2可知,画圆弧需五个参数,且终止角度ed>0,直线、椭圆只需四个参数,所以为统一参数个数,并区分是圆弧、直线和椭圆,直线第五参数为0,椭圆第五参数为-1。

将简笔画兔子的各圆弧、直线、椭圆按上述标准数值化,并按以下规则绘制:

对圆弧:左上角坐标为(x, y),右下角坐标为(x+d, y+d),转角为ed-sd。

对直线:h≥0时,起点(x, y),终点(x+w, y+h);h<0时,起点(x, y+h),终点(x+w, y)。

对椭圆:左上角坐标为(x, y),右下角坐标为(x+w, y+h)。

完整程序代码如下:

执行结果:如图3所示。

图3 用Python Canvas绘制的简笔画兔子

用Python Canvas绘制简笔画兔子相关推荐

  1. python简笔画绘制 数据驱动绘图恐龙_使用python turtle绘制简笔画大白-Go语言中文社区...

    使用python turtle绘制简笔画大白 完整代码: import turtle as t pen = t.Turtle() # 定义画笔实例 pen.speed(0) pen.pensize(5 ...

  2. 使用python turtle绘制简笔画大白

    使用python turtle绘制简笔画大白 完整代码: import turtle as t pen = t.Turtle() # 定义画笔实例 pen.speed(0) pen.pensize(5 ...

  3. python简笔画蚂蚁_使用python turtle绘制简笔画大白-Go语言中文社区

    使用python turtle绘制简笔画大白 完整代码: import turtle as t pen = t.Turtle() # 定义画笔实例 pen.speed(0) pen.pensize(5 ...

  4. python简笔画程序_使用python turtle绘制简笔画大白

    使用python乌龟画的完整代码简单的中风:进口龟tpen = () # Define刷例子(0)(5)()(90)#头(-100200)()= 1我的范围(120):如果0 < =我< ...

  5. 学习Python中turtle模块的基本用法(5:绘制简笔画羊)

      人已阳,准备画个喜羊羊纪念一下,但是喜羊羊头上的卷太多了,不太好画,于是找了参考文献1的普通的简笔画羊,使用Python中的turtle模块绘制(采用参考文献3中绘制云朵的代码绘制羊身体).    ...

  6. python用circle函数画兔子的方法

    python用circle函数画兔子的方法 circle函数说明 1.在circle函数中,参数radius取像素值和extent取角度的整数值可以取正负值. circle()函数以画笔当前方向(y' ...

  7. Python turtle库图形绘制——毛笔简笔画和平鸽

    一.绘制毛笔笔划的方法 毛笔简笔画与普通简笔画有明显的不同,普通简笔画绘制线条的粗细是相同的,而用毛笔绘制的线条粗细是变化的,如图1所示. 图1 毛笔简笔画局部(线条的粗细变化) 先来看一下曲线汉字字 ...

  8. python绘制派大星_彩色派大星简笔画步骤

    派大星是海绵宝宝的好朋友,一只粉红色的卡通海星.很多小伙伴都非常羡慕派大星和海绵宝宝的友谊,也非常喜欢派大星.下面露西学画画网给大家分享彩色派大星简笔画步骤,我们来按照步骤画一只派大星吧. 派大星是一 ...

  9. python canvas画弧度_编程作战丨如何利用python绘制可爱皮卡丘?

    好莱坞真人电影<精灵宝可梦:大侦探皮卡丘>预告片已经发布了,正片将于今年5月10日上映. 如果要做一个「童年梦想排行榜」的话,相信「拥有一只皮卡丘」这个梦想一定会名列前茅! 毕竟,谁不想揉 ...

最新文章

  1. springboot + rabbitmq 用了消息确认机制,感觉掉坑里了
  2. 手动将本地jar添加到Maven仓库
  3. 华为自动驾驶首秀,狂到diss潜在客户
  4. in最多可以放多少?_车子不开,最多可以停放多少天?维修工:别超过这个时间...
  5. 多线程(同步代码块和同步函数)
  6. 如何看待微软新开源的Service Fabric?
  7. 腕上“小型手机”!小米手表万事俱备 坐等发布
  8. C#基础6:枚举与结构体
  9. shell手册--笨鸟杰作
  10. 记录免费的学习资源-视频教程
  11. 共模电感 | 磁芯选型
  12. 极智AI | 谈谈几种量化策略:MinMax、KLD、ADMM、EQ
  13. GCC 编译器警告——【-Wunused-variable】【-Wunused-parameter】
  14. Google I/O 见闻
  15. 【周志华机器学习】九、聚类
  16. 航天安网高清视频无损压缩解决方案—IDC机房监控系统案例
  17. 2017-1-23 春节假期作业总结2
  18. 《苏世民我的经验与教训》读书笔记
  19. JetsonNano人脸识别(一)安装配置
  20. 从今天开始后续记录自己的前端成长记录

热门文章

  1. 大厂光环下的功能测试,出去面试自动化一问三不知
  2. 一些Audio Video相关的Blog
  3. 云计算——云计算部署形成及应用
  4. 【NOIP2016提高组复赛】天天爱跑步
  5. python马尔可夫链_用Python实现马尔可夫链蒙特卡罗
  6. ES(Elasticsearch)全文搜索引擎(最全)入门基本语法与在SpringBoot中的实战
  7. 从OSI七层看浏览器访问过程七层各自都有哪些协议
  8. JS实现鼠标滑入出现弹窗功能
  9. 计算机对游戏发展的影响,网络游戏对青少年心理发展的积极影响
  10. CSDN广告栏位收费标准