能否用Pygame绘制双色边框矩形?碰撞时实现双色显示
Pygame碰撞时实现双色矩形边框
我在Pygame中编写了如下代码:
if(blueBoxX!=redBoxX or blueBoxY!=redBoxY): pygame.draw.rect(scrn, (0, 100, 255), (blueBoxX*75, blueBoxY*75, 75, 75), 3) pygame.draw.rect(scrn, (255, 100, 0), (redBoxX*75, redBoxY*75, 75, 75), 3) else: "when they collide I want it to show by showing two colors at one spot"
当前逻辑是:当蓝色矩形与红色矩形位置不同时,分别绘制两者的边框;当它们位置重合(碰撞)时,我希望在同一位置显示双色边框,目标效果如图所示。我考虑过用pygame.draw.line实现,但想确认是否可以只用pygame.draw.rect来达成需求。

解决方案
完全可以用pygame.draw.rect实现,核心思路是在同一位置绘制两个不同颜色的矩形边框,通过微调位置或线宽让它们叠加呈现双色效果。
修改后的else块代码示例:
else: # 绘制外层蓝色边框 pygame.draw.rect(scrn, (0, 100, 255), (blueBoxX*75, blueBoxY*75, 75, 75), 3) # 绘制内层红色边框,向内偏移1像素,形成双层双色效果 pygame.draw.rect(scrn, (255, 100, 0), (blueBoxX*75 + 1, blueBoxY*75 + 1, 75 - 2, 75 - 2), 3)
如果想要边框的每条边都呈现对半分的双色(比如左半蓝、右半红),这种效果无法直接通过pygame.draw.rect实现,还是需要用pygame.draw.line分别绘制各边的分段。但如果是类似双层叠加的双色边框,上面的方法完全满足需求。
内容的提问来源于stack exchange,提问作者Taiking
相关产品推荐
相关产品推荐

