同事对 pygame 中的特定 window 做出反应
Assosiate rects to specific window in pygame
在我的程序中我定义了主屏幕。该程序将通过单击不同的 btn 来发送新的 window。
我想知道是否可以定义许多 windows 并根据新的 windows 位置将对象坐标关联到它们。
换句话说,如果可以为与新 window
相关的对象编辑“轴的起点”
例如:
- 屏幕显示宽度为1000,高度为800。
- 新 window 宽度、高度 = 800,800
- screen.blit(new_window,100,0)
the new window will apeare from x0,y0 = 100,0 - x1,y1 = 900,800
- 我想在新 window 中创建一个矩形,但不是根据屏幕线,而是根据 new_window 线,其中“轴的起点”是 window.
我粘贴了相关行供您查看。
#before main loop start (this display updating by running in main loop)
screen = screen = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
# after main loop start when btn clicked on it
new_window= pygame.Surface((w,h))
#in main loop i use
screen.blit(new_window,(x,y))
如果我创建一个新的矩形为
window_rect = pygame.Rect(x,y,w,h)
它根据屏幕坐标为 window_rect 定义 x,y 坐标,而不是为新的 window。我如何将新的矩形与新的 window 相关联?(因此新的矩形坐标将根据 new_window)
注意:我知道我可以利用新的 window:
pygame.draw.rect(new_window,color,(window_rect)
这样它使用新的 window 坐标进行绘制。但是我需要根据 new window 为其他函数定义 rect
i want to create a rect in the new window but not according to screen cords but according to new_window cords where "The beginning of the axes" is the top left of that window.
很遗憾,Pygame 中没有这样的功能。您必须自己计算 window 坐标。您可以使用 pygame.Rect.move
.
执行此操作
例如::如果你有一个带有矩形sub_window_rect
的subwindow并且你在subwindow rect_in_sub_window
中有一个矩形:
sub_window_rect = pygame.Rect(100, 0, 800, 800)
rect_in_sub_window = pygame.Rect(10, 10, 100, 100)
rect_in_window = rect_in_sub_window.move(*sub_window_rect.topleft)
rect_in_window
左上坐标为(110, 10).
从 window 坐标转换为子 window 坐标:
rect_in_sub_window = rect_in_window.move(
-sub_window_rect.left, -sub_window_rect.top)
在我的程序中我定义了主屏幕。该程序将通过单击不同的 btn 来发送新的 window。
我想知道是否可以定义许多 windows 并根据新的 windows 位置将对象坐标关联到它们。
换句话说,如果可以为与新 window
相关的对象编辑“轴的起点”例如:
- 屏幕显示宽度为1000,高度为800。
- 新 window 宽度、高度 = 800,800
- screen.blit(new_window,100,0)
the new window will apeare from x0,y0 = 100,0 - x1,y1 = 900,800
- 我想在新 window 中创建一个矩形,但不是根据屏幕线,而是根据 new_window 线,其中“轴的起点”是 window.
我粘贴了相关行供您查看。
#before main loop start (this display updating by running in main loop)
screen = screen = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
# after main loop start when btn clicked on it
new_window= pygame.Surface((w,h))
#in main loop i use
screen.blit(new_window,(x,y))
如果我创建一个新的矩形为
window_rect = pygame.Rect(x,y,w,h)
它根据屏幕坐标为 window_rect 定义 x,y 坐标,而不是为新的 window。我如何将新的矩形与新的 window 相关联?(因此新的矩形坐标将根据 new_window)
注意:我知道我可以利用新的 window:
pygame.draw.rect(new_window,color,(window_rect)
这样它使用新的 window 坐标进行绘制。但是我需要根据 new window 为其他函数定义 rect
i want to create a rect in the new window but not according to screen cords but according to new_window cords where "The beginning of the axes" is the top left of that window.
很遗憾,Pygame 中没有这样的功能。您必须自己计算 window 坐标。您可以使用 pygame.Rect.move
.
例如::如果你有一个带有矩形sub_window_rect
的subwindow并且你在subwindow rect_in_sub_window
中有一个矩形:
sub_window_rect = pygame.Rect(100, 0, 800, 800)
rect_in_sub_window = pygame.Rect(10, 10, 100, 100)
rect_in_window = rect_in_sub_window.move(*sub_window_rect.topleft)
rect_in_window
左上坐标为(110, 10).
从 window 坐标转换为子 window 坐标:
rect_in_sub_window = rect_in_window.move(
-sub_window_rect.left, -sub_window_rect.top)