python - 如何使用pygame在可调整大小的窗口中绘制矩形的边框?
问题描述
我正在尝试在 pygame 中创建一个可调整大小的窗口,其中一个带边框的矩形应该与窗口保持固定比例。
import pygame,sys
pygame.init()
win = pygame.display.set_mode((400,400),pygame.HWSURFACE | pygame.DOUBLEBUF | pygame.RESIZABLE)
while True:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.VIDEORESIZE:
pygame.display.set_mode((event.w,event.h),pygame.HWSURFACE | pygame.DOUBLEBUF | pygame.RESIZABLE)
win_width,win_height = pygame.display.get_surface().get_size()
surf = pygame.Surface((round(win_width/2),round(win_height/2)))
surf.fill((255,255,255))
win.blit(surf,(win_width/4,win_height/4))
pygame.draw.rect(surf,(255,0,0),(0,0,surf.get_width(),surf.get_height()),10)
pygame.display.update()
提前致谢!
解决方案
您在白色表面 ( surf
) 上绘制矩形。因此,您必须先将其绘制在上面, surf
然后再开始 :surf
win
while True:
# [...]
surf.fill((255,255,255))
pygame.draw.rect(surf,(255,0,0),(0,0,surf.get_width(),surf.get_height()),10)
win.blit(surf,(win_width/4,win_height/4))
pygame.display.update()
或者,您可以直接在 上绘制一个矩形win
:
while True:
# [...]
surf.fill((255,255,255))
rect = win.blit(surf,(win_width/4,win_height/4))
pygame.draw.rect(win, (255,0,0), rect, 10)
pygame.display.update()
推荐阅读
- f# - 如何在 F# 中使用 sprintf 构建格式字符串?
- kotlin - 如何在 Kotlin 中构造具有具体类型参数的泛型对象?
- c# - 在 .NET Core API 3.0 中临时存储访问令牌
- lua - vlc 扩展 - 加载每个视频并选择字幕
- sql - 我有一个员工文件和一个地址文件(通过 seq #),我正在尝试获取员工的当前地址
- dm-script - 导入原始 DM 命令
- vb.net - VB.Net Com 端口读取
- python - 来自 DataFrame 的多级字典结构
- unity3d - 为什么我的 powerup 预制件可以工作,但实例化的克隆却不行?
- html - 只需要文本背景上的背景颜色,它会动态改变宽度