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

如何在Pygame Surface中绘制圆弧?求助排查显示问题

问题解决:Pygame中圆弧无法显示的原因及修复

你遇到的问题核心是圆弧绘制的矩形区域超出了Surface的范围,导致圆弧被画在不可见的区域。

问题分析

你使用rect = surf.get_rect(center=(100, 100))得到的矩形,是用于控制surf在屏幕上的位置的,它的左上角坐标是(50,50),右下角是(150,150)——而你的surf只有100x100的尺寸,这个矩形完全超出了surf的边界,所以圆弧被绘制在Surface外面,自然看不到。

修正后的代码

import pygame
import math

pygame.init()
width, height = 800, 600
screen = pygame.display.set_mode((width, height))

surf = pygame.Surface((100, 100))
surf.fill("green")
# 单独定义控制surf在屏幕位置的矩形
surf_screen_rect = surf.get_rect(center=(100, 100))

run = 1
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = 0

    screen.fill((255, 202, 135))
    pygame.draw.circle(surf, (255, 255, 255), (30,30),25)
    # 使用surf自身的边界矩形绘制圆弧,同时设置宽度让圆弧更明显
    pygame.draw.arc(surf, (255, 255, 255), surf.get_rect(), math.radians(270), math.radians(90), width=5)
    screen.blit(surf, surf_screen_rect)

    pygame.display.flip()
pygame.quit()

关键修改点

  1. 分离矩形用途:将控制surf在屏幕位置的矩形和圆弧绘制的矩形分开,避免混淆。
  2. 使用Surface自身的矩形:surf.get_rect()会返回(0, 0, 100, 100)的矩形,确保圆弧绘制在surf的可见范围内。
  3. 增加圆弧宽度:默认宽度为1,可能过于纤细不易观察,设置width=5让圆弧更清晰。

额外说明:调整半圆方向

Pygame中arc的角度以x轴正方向为0,逆时针递增,你可以通过调整角度范围绘制不同方向的半圆:

  • 上半圆:math.radians(180) 到 math.radians(0)
  • 下半圆:math.radians(0) 到 math.radians(180)
  • 左半圆:math.radians(90) 到 math.radians(270)

内容的提问来源于stack exchange,提问作者suyog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:12:50