我使用 Python的海龟模块和下面的代码绘制了一个相当简单的形状:
import turtle
turtle.color('black', '#fef00e')
turtle.begin_fill()
turtle.left(180)
turtle.forward(100)
for i in range(5):
turtle.right(90)
turtle.forward(100+50*i)
turtle.end_fill()
turtle.done()
奇怪的是,这在Windows上产生了两个不同的结果(左)和我尝试过的所有其他操作系统(Ubuntu,Arch,OSX).在Windows上仍然填充具有偶数重叠填充的区域,但是对于其他区域再次消隐.任何人都可以解释一下这是什么原因,以及是否有任何影响它的方法?这种行为如此不一致似乎很奇怪.
看来这也是一个设计选择;对我来说,这两个中的哪一个是“正确的”版本并不是很明显.
最佳答案 问题是“填充”是否意味着特定系统上的“颜色”或“切换颜色”.要着色两次就是着色.要切换两次是不切换. (这对是Spencer Brown的“形式法则”的基础.)Turtle是在Tkinter之上实现的.这是一个简单的Tkinter程序,可以在Windows上重现左图(虽然没有黑色线条,乌龟添加).我强烈怀疑你会在* nix上获得正确的数字(我目前没有).
from tkinter import *
root = Tk()
canv = Canvas(root, width=800, height=800)
canv.pack()
l = canv.create_polygon(
500,400, 400,400, 400,300, 550,300,
550,500, 300,500, 300,200, 500,400, fill='yellow')
root.mainloop()
如果是这样,那么我怀疑不同的是底层图形系统的结果以及它给“填充”的解释.
我查看了tk manual,但没有发现填充两次的含义,只是’-fill color’.