【发布时间】:2021-02-27 17:08:33
【问题描述】:
我试图创建一个区域选择功能,您按住鼠标左键并移动鼠标,它会创建一个矩形,并且该矩形内的所有内容都会被选中。
import pygame
import time
window = pygame.display.set_mode((1200, 600))
thickest = 10
begin = False
while True:
pygame.event.get()
window.fill((255, 255, 255))
if any(pygame.mouse.get_pressed()) and not begin:
rpos = pygame.mouse.get_pos()
begin = True
if begin:
pos2 = pygame.mouse.get_pos()
pygame.draw.rect(window, (100, 200, 100), (rpos[0], rpos[1], pos2[0] - rpos[0], pos2[1] - rpos[1]), 1)
if not any(pygame.mouse.get_pressed()) and begin:
begin = False
pygame.display.flip()
但是,我注意到根本没有绘制负高度的矩形,而负宽度的矩形甚至都不是矩形。
我想做的一件事是按大小偏移位置,并将大小作为大小的绝对值。 x轴示例:
if pos2[0] - rpos[0] < 0:
pygame.draw.rect(window, (100, 200, 100), (rpos[0] - (pos2[0] - rpos[0]),
rpos[1],
abs(pos2[0] - rpos[0]),
pos2[1] - rpos[1]))
但这种方法似乎并不优雅,我想知道是否有更 pygame-ey 的方法来处理这个问题。
【问题讨论】: