用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绘制的简笔画兔子

猜你喜欢

转载自blog.csdn.net/hz_zhangrl/article/details/128654309
今日推荐