用Python Canvas绘制简笔画兔子
一、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绘制简笔画兔子相关推荐
- python简笔画绘制 数据驱动绘图恐龙_使用python turtle绘制简笔画大白-Go语言中文社区...
使用python turtle绘制简笔画大白 完整代码: import turtle as t pen = t.Turtle() # 定义画笔实例 pen.speed(0) pen.pensize(5 ...
- 使用python turtle绘制简笔画大白
使用python turtle绘制简笔画大白 完整代码: import turtle as t pen = t.Turtle() # 定义画笔实例 pen.speed(0) pen.pensize(5 ...
- python简笔画蚂蚁_使用python turtle绘制简笔画大白-Go语言中文社区
使用python turtle绘制简笔画大白 完整代码: import turtle as t pen = t.Turtle() # 定义画笔实例 pen.speed(0) pen.pensize(5 ...
- python简笔画程序_使用python turtle绘制简笔画大白
使用python乌龟画的完整代码简单的中风:进口龟tpen = () # Define刷例子(0)(5)()(90)#头(-100200)()= 1我的范围(120):如果0 < =我< ...
- 学习Python中turtle模块的基本用法(5:绘制简笔画羊)
人已阳,准备画个喜羊羊纪念一下,但是喜羊羊头上的卷太多了,不太好画,于是找了参考文献1的普通的简笔画羊,使用Python中的turtle模块绘制(采用参考文献3中绘制云朵的代码绘制羊身体). ...
- python用circle函数画兔子的方法
python用circle函数画兔子的方法 circle函数说明 1.在circle函数中,参数radius取像素值和extent取角度的整数值可以取正负值. circle()函数以画笔当前方向(y' ...
- Python turtle库图形绘制——毛笔简笔画和平鸽
一.绘制毛笔笔划的方法 毛笔简笔画与普通简笔画有明显的不同,普通简笔画绘制线条的粗细是相同的,而用毛笔绘制的线条粗细是变化的,如图1所示. 图1 毛笔简笔画局部(线条的粗细变化) 先来看一下曲线汉字字 ...
- python绘制派大星_彩色派大星简笔画步骤
派大星是海绵宝宝的好朋友,一只粉红色的卡通海星.很多小伙伴都非常羡慕派大星和海绵宝宝的友谊,也非常喜欢派大星.下面露西学画画网给大家分享彩色派大星简笔画步骤,我们来按照步骤画一只派大星吧. 派大星是一 ...
- python canvas画弧度_编程作战丨如何利用python绘制可爱皮卡丘?
好莱坞真人电影<精灵宝可梦:大侦探皮卡丘>预告片已经发布了,正片将于今年5月10日上映. 如果要做一个「童年梦想排行榜」的话,相信「拥有一只皮卡丘」这个梦想一定会名列前茅! 毕竟,谁不想揉 ...
最新文章
- springboot + rabbitmq 用了消息确认机制,感觉掉坑里了
- 手动将本地jar添加到Maven仓库
- 华为自动驾驶首秀,狂到diss潜在客户
- in最多可以放多少?_车子不开,最多可以停放多少天?维修工:别超过这个时间...
- 多线程(同步代码块和同步函数)
- 如何看待微软新开源的Service Fabric?
- 腕上“小型手机”!小米手表万事俱备 坐等发布
- C#基础6:枚举与结构体
- shell手册--笨鸟杰作
- 记录免费的学习资源-视频教程
- 共模电感 | 磁芯选型
- 极智AI | 谈谈几种量化策略:MinMax、KLD、ADMM、EQ
- GCC 编译器警告——【-Wunused-variable】【-Wunused-parameter】
- Google I/O 见闻
- 【周志华机器学习】九、聚类
- 航天安网高清视频无损压缩解决方案—IDC机房监控系统案例
- 2017-1-23 春节假期作业总结2
- 《苏世民我的经验与教训》读书笔记
- JetsonNano人脸识别(一)安装配置
- 从今天开始后续记录自己的前端成长记录