You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:13:13