前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >30行Python代码来绘制一个微信图标

30行Python代码来绘制一个微信图标

作者头像
Python进阶者
发布2020-05-26 17:07:32
9200
发布2020-05-26 17:07:32
举报

01

整体的画布设计

微信恐怕是我们最常用的手机软件了,其logo也经历了多次变化,这次我们就用最经典的微信绿色图标来作为例子,给大家展示一下如何用Python来进行设计。其图例如下。

图1. 微信经典绿色logo

这里小编的操作系统是Windows7,编程软件为Anaconda 2019.10版,所有库均为Anaconda自带,这次主要使用matplotlib绘图库来进行绘制。

首先还是导入各种需要的库。

接下来因为我们要在matplotlib的画布中进行设计,所以要进行相关的设置。

比如颜色,然后要去掉x,y轴的设置,把画布背景变为绿色等等。

这里的变量color就是微信logo的绿色主色调,我们把画布设置成一个正方形,x轴和y轴的坐标范围都设为0-40,这个数字可以随意设定,主要是为了在画图时找准图形的坐标,同时去掉x轴和y轴的坐标,然后再设置一下画布的颜色,就是微信的绿色,最后的变量patches用于存放一系列图形,后面会用到。

02

分析微信的logo

接下来我们就分析一下微信logo的组成。实际上我们可以把微信的主体logo看成三大部分:第一部分是两个椭圆,这两个椭圆一大一小(左边的更大一些),叠加在一起,就是图1中的主要白色的部分;

第二部分就是四个小圆圈,分别是这两个椭圆的那两对小眼睛,左边的小眼睛要稍微大一些,右边的稍微小一些;

最后就是每个椭圆的箭头,左边椭圆的箭头朝向左侧,右边椭圆的箭头朝向右侧。分析完我们就按照这三部分的顺序依次来绘制。

1).首先是两个椭圆的代码

es1 = Ellipse([15,24], width=21, height=18, facecolor='white', zorder=1)

es2 = Ellipse([26,16], width=18, height=15, facecolor='white', linewidth=5, edgecolor=color, zorder=1)

es1就是左侧的大椭圆,es2是小椭圆,这里es2要设置一下边框线的宽度和边框线的颜色,这样才能产生叠加效果,zorder是图层顺序,数字越大图层越靠上,这里es1和es2的zorder都设置为1,但因为es2后绘制,所以会产生es2叠加在es1之上的效果,如下图所示。

图2. 两个椭圆的效果图

2).绘制小眼睛

在这里我们为了能让每部分的效果展示出来,需要加上下面三行代码。这三行代码实际上是放在所有代码之后,所有代码是连在一起的。接下来绘制四个小眼睛,代码如下。

每对小眼睛都要关于各自所在椭圆的中线对称,左边的小眼睛要大一些,右边的小一些,把所有小眼睛的颜色都设置为绿色。效果如下图。

图3. 四个小圆圈的效果图

3).最后就是绘制两个箭头,代码如下

绘制这两个箭头可以说是最大的难点,但其绘制方法有多种,比如可以绘制一个三角形,用三角形的一个角来充当这个箭头,也可以用matplotlib的annotate方法来绘制一个箭头,然后进行填充,这两种方法都可用。

但要设置多个坐标同时还难以控制其形状,所以笔者就用了另外一种方法——用扇形的中心角来充当箭头。这种方法的好处是只需要设置一个顶点坐标,同时容易控制中心角的角度,最后的成图效果如下。

图4. 微信logo成图

一些人在这里可能没太看明白这两个箭头是怎么画的,那么我们把其他所有图形去掉,只画两个扇形,效果如下。从下图我们可以看到扇形的中心角充当了箭头,而上部的弧形部分和两个椭圆重叠在了一起,因为颜色相同,所以就被隐去了,看不出来了。

图5. 两个扇形的效果图

03

大功告成

最后我们再放上微信另外一个版本logo的图片,这和上面的设计方法完全一样,只是要把两个椭圆和各自的扇形的颜色改变一下,左边的椭圆和扇形的颜色代码为“#A1CC3F”,右边的颜色代码为“#E9E9E9”,同时把右边椭圆的边线去掉,把四个小眼睛设置为黑色,最后把画布背景设置为白色就OK了。

图6. 微信另一版本logo成图效果

从这个例子中我们可以看到matplotlib在应对简单的图形绘制时还是非常的得心应手,简单的数行代码就完成了一个微信图标的设计。都说Python不能生孩子,下次研究一下怎么让Python生个娃出来,哈哈 。

整个的代码量非常小,非常适合小白上手,看千遍说万遍,不如自己动手实践一遍。

------------------- End -------------------

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫与数据挖掘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档