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

如何在GUI任意位置放置文本实现雷达屏方位距离标注

基于Pygame的雷达刻度盘标注实现方案

Pygame完全可以满足你的需求,核心是通过极坐标与笛卡尔坐标转换计算标注位置,配合Pygame的文本渲染接口即可实现任意方位、距离的文本标注。以下是可直接运行的最小实现示例:

import pygame
import math

# 初始化Pygame
pygame.init()
# 窗口设置
WIDTH, HEIGHT = 800, 800
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("雷达刻度盘示例")
# 字体设置,支持中文可替换为系统中文字体路径
font = pygame.font.SysFont("arial", 18)

# 雷达核心参数
CENTER_X, CENTER_Y = WIDTH // 2, HEIGHT // 2
RADAR_RADIUS = 300
AZIMUTH_STEP = 30  # 方位刻度间隔,单位°
RANGE_STEP = 50    # 距离刻度间隔,单位像素(可映射为实际距离如海里、公里)
TEXT_OFFSET = 20   # 标注文本与径向线末端的偏移距离,避免重叠

running = True
while running:
    screen.fill((0, 20, 0))  # 雷达屏暗绿色背景
    # 处理退出事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 1. 绘制距离圈(同心圆)与距离标注
    for r in range(RANGE_STEP, RADAR_RADIUS + RANGE_STEP, RANGE_STEP):
        pygame.draw.circle(screen, (0, 255, 0), (CENTER_X, CENTER_Y), r, 1)
        # 标注距离数值,可按需调整标注位置
        range_text = font.render(str(r), True, (0, 255, 0))
        screen.blit(range_text, (CENTER_X + r + 5, CENTER_Y))

    # 2. 绘制方位径向线与方位标注
    for angle_deg in range(0, 360, AZIMUTH_STEP):
        # 角度转弧度,调整为正北为0°顺时针旋转
        angle_rad = math.radians(angle_deg - 90)
        # 计算径向线终点坐标
        end_x = CENTER_X + RADAR_RADIUS * math.cos(angle_rad)
        end_y = CENTER_Y + RADAR_RADIUS * math.sin(angle_rad)
        # 绘制径向线
        pygame.draw.line(screen, (0, 255, 0), (CENTER_X, CENTER_Y), (end_x, end_y), 1)
        
        # 计算标注文本的位置(径向线外侧偏移)
        text_x = CENTER_X + (RADAR_RADIUS + TEXT_OFFSET) * math.cos(angle_rad)
        text_y = CENTER_Y + (RADAR_RADIUS + TEXT_OFFSET) * math.sin(angle_rad)
        # 渲染方位文本
        azimuth_text = font.render(f"{angle_deg}°", True, (0, 255, 0))
        # 让文本中心对齐计算出的坐标
        text_rect = azimuth_text.get_rect(center=(text_x, text_y))
        screen.blit(azimuth_text, text_rect)

    pygame.display.flip()

pygame.quit()

关键调整说明

  • 若要修改雷达盘的位置,直接修改CENTER_X、CENTER_Y参数即可,所有刻度、标注会自动适配
  • 若需要非等间隔的特殊刻度,只需修改range()的遍历逻辑为自定义的角度、距离列表
  • 文本的样式、颜色、偏移量可根据显示需求自行调整,也支持渲染自定义格式的数值(如将像素距离映射为实际公里/海里数值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:02