gpt4 book ai didi

python - 在pygame中用鼠标移动可缩放矩形

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:55 24 4
gpt4 key购买 nike

我正在尝试在 pygame 中移动一个矩形,并使其可缩放。

The scalable rectangle code is something like this然后我尝试添加这样的事件:

from pygame imports *
init()

rect1 = (rect1x, rect1y, 300,300)
rect1x = 0
rect1y = 0

while running:
x,y = mouse.get_pos()
if rect1Pressed == True:
rect1x = x
rect1y = y
for evnt in event.get():
if evnt.type == QUIT:
running = False
if evnt.type == MOUSEBUTTONDOWN:
if evnt.button == 1:
if rect1.collidepoint(mouse.get_pos()):
rect1Pressed == True

我如何合并可缩放矩形并使其能够随鼠标移动?这样窗口就会跟随鼠标移动。所以它有点像笔记本电脑上的一个,您可以在其中缩放窗口并四处移动它。

最佳答案

您可以检查在 elif event.type == pg.MOUSEMOTION: block 中按下了哪个鼠标按钮,例如if event.buttons[0]:,然后根据按钮移动或缩放矩形。要移动矩形,只需将 event.rel 添加到 rect.xrect.y 属性即可。

import pygame as pg


pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
rect1 = pg.Rect(100, 100, 161, 100)
rect2 = pg.Rect(300, 200, 161, 100)
selected_rect = None

done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
elif event.type == pg.MOUSEBUTTONDOWN:
for rect in (rect1, rect2):
if rect.collidepoint(event.pos):
selected_rect = rect # Select the colliding rect.
elif event.type == pg.MOUSEBUTTONUP:
selected_rect = None # De-select the rect.
elif event.type == pg.MOUSEMOTION:
if selected_rect is not None: # If a rect is selected.
if event.buttons[0]: # Left mouse button is down.
# Move the rect.
selected_rect.x += event.rel[0]
selected_rect.y += event.rel[1]
else: # Right or middle mouse button.
# Scale the rect.
selected_rect.w += event.rel[0]
selected_rect.h += event.rel[1]
selected_rect.w = max(selected_rect.w, 10)
selected_rect.h = max(selected_rect.h, 10)

screen.fill((30, 30, 30))
pg.draw.rect(screen, (0, 100, 250), rect1)
pg.draw.rect(screen, (0, 200, 120), rect2)
pg.display.flip()
clock.tick(30)

关于python - 在pygame中用鼠标移动可缩放矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50261024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com