def draw_for_bg_plus():
for x in range(y_text_split + rect_length, width, rect_length):
shapes.add(dwg.line((x, 0), (x, height), stroke='#EEEEEE', stroke_opacity=0.3))
for y in range(rect_length, height, rect_length):
shapes.add(dwg.line((y_text_split, y), (width, y), stroke='#EEEEEE', stroke_opacity=0.3))
for x in range(y_text_split + max_rect_length, width, max_rect_length):
for y in range(0, height, max_rect_length):
shapes.add(dwg.line((x, y - 4), (x, y + 4), stroke='#EEEEEE', stroke_width='2', stroke_opacity=0.4))
for y in range(0, height, max_rect_length):
for x in range(y_text_split + max_rect_length, width, max_rect_length):
shapes.add(dwg.line((x - 4, y), (x + 4, y), stroke='#EEEEEE', stroke_width='2', stroke_opacity=0.4))
for x in range(0, 300, 10):
text = get_some_random10(100)
shapes.add(
dwg.text(text, insert=(phodal_width + 1, x), fill='#27ae60', font_size=12,
font_family='Inconsolata for Powerline',
opacity=0.3, transform="rotate(15 1000, 0)"))
需求
昨天,我看到这个Badge的时候,我就在想我也会创建一个自己的Badge。
然后,我就可以这样到处粘贴:
看样子,我做的效果还是没有上面的好看,不过有些地方更炫。
需求分析
为了达到任意缩放的目的,我们就需要使用适量图片,即SVG。最开始的时候我从没想过用代码来生成,因为使用一些图形工具来创建是最简单的事情了。
原型设计
找了个工具先做了一个Demo:
想了想居然还有三个要做……。
接着看了看SVG的代码,然后我惊呆了:
就这么简单的代码,为什么不自己写呢!!
Coding
SVG就是一个XML
要对这个XML进行修改也是一件很容易的事。只是,先找了PIL发现不支持,就找到了一个名为SVGWrite的工具。
示例代码如下:
然后我就照猫画虎地写了一个:
发现和上面的样式几乎是一样的,就顺手做了剩下的几个。然后想了想,我这样做都一样,一点都不好看。
我发现这样做起来太单调了,我就想加一点点趣味,比如: Idea风格应该是带蓝图的:
代码风格应该要是这样的:
不断地变更需求之后,我就展开和SVG的大作战了。
示例代码
为了写上面的Idea的蓝图,我要画两种不同的矩形,他们有不同的粗细:
生成对应的XML
同理于works,也可以生成对应的10,然后对其进行旋转
生成
ShowCase
最后结果如下:
合成图
代码
代码放在GitHub上: https://github.com/phodal/brand 在线地址:http://brand.phodal.com/
欢迎关注我的微信公众号