如何使用Python Turtle填充带有两个孔洞的图形?
修复Turtle带孔洞图形的填充问题
你当前代码的问题在于:外部大矩形和内部两个小矩形都是顺时针绘制的,而turtle默认的填充规则(奇偶规则)会把所有同方向的闭合区域都填上,所以无法形成镂空的孔洞效果。
解决思路很简单:让内部小矩形的绘制方向和外部大矩形相反(比如外部顺时针,内部逆时针),这样填充时内部区域会被抵消,就能得到你想要的带孔洞的图形。
修改后的完整代码:
import turtle # 注意补充导入,原代码里漏了这行 my_tu = turtle.Turtle() my_tu.screen.screensize(500, 500) my_tu.color('#000000', '#bbbbbb') # 外部大矩形:顺时针绘制 my_tu.penup() my_tu.goto(-200, 200) my_tu.begin_fill() my_tu.pendown() my_tu.goto(200, 200) my_tu.goto(200, -200) my_tu.goto(-200, -200) my_tu.goto(-200, 200) # 第一个内部小矩形:逆时针绘制(与外部方向相反) my_tu.penup() my_tu.goto(-170, 170) my_tu.pendown() my_tu.goto(-170, 130) my_tu.goto(-130, 130) my_tu.goto(-130, 170) my_tu.goto(-170, 170) # 第二个内部小矩形:逆时针绘制 my_tu.penup() my_tu.goto(0, 170) my_tu.pendown() my_tu.goto(0, 130) my_tu.goto(40, 130) my_tu.goto(40, 170) my_tu.goto(0, 170) my_tu.end_fill() turtle.done() # 保持窗口显示
核心逻辑就是利用填充的奇偶规则:当两个闭合图形绘制方向相反时,重叠区域的填充会被抵消,从而形成镂空的孔洞效果。你也可以反过来,把外部改成逆时针、内部改成顺时针,效果完全一致。
内容的提问来源于stack exchange,提问作者waynezwf
相关产品推荐
相关产品推荐

