1

在 Pygame 和 Python 2.7 中,如何在由一组坐标表示的某个点处对矩形进行 blit?

我知道我可以使用这个:

screen.blit(img.image, img.rect.topleft)

但我希望矩形位于屏幕上的精确点。

4

2 回答 2

2

如果您需要矩形的左上角点(34,57),您可以这样做

screen.blit(img.image, (34,57) )

或这个

img.rect.topleft = (34,57)

screen.blit(img.image, img.rect)

或这个

img.rect.x = 34
img.rect.y = 57

screen.blit(img.image, img.rect)

如果您需要矩形的中心点(34,57)

img.rect.center = (34,57)

screen.blit(img.image, img.rect)

如果您需要在屏幕中心显示矩形:(如果您需要在屏幕中心
显示文本(例如“PAUSE”)或在矩形中心显示文本以创建按钮,则特别有用)

img.rect.center = screen.get_rect().center

screen.blit(img.image, img.rect)

如果您需要矩形触摸屏幕的右边框:

img.rect.right = screen.get_rect().right

screen.blit(img.image, img.rect)

如果您需要屏幕左下角的矩形:

img.rect.bottomleft = screen.get_rect().bottomleft

screen.blit(img.image, img.rect)

你还有更多 - 见pygame.Rect

x,y
top, left, bottom, right
topleft, bottomleft, topright, bottomright
midtop, midleft, midbottom, midright
center, centerx, centery

使用上面的元素它不会改变widthheight.
如果您更改x(或其他值),那么您会自动获得 的新值leftright以及其他值。

顺便说一句:如您所见,您可以img.rectblit()

顺便说一句:您也可以这样做:(例如在__init__):

img.rect = img.image.get_rect(center=screen.get_rect().center)

在屏幕上居中对象

顺便说一句:您也可以使用它在精确的点Surface上对图像/其他图像进行 blit。Surface您可以将文本放在某个表面的中心(例如:按钮),然后将该表面放在屏幕的右下角

于 2014-07-11T15:41:56.787 回答
1

从您的代码:

screen.blit(img.image, img.rect.topleft)

会将图像放在 (0, 0) 处,因为矩形是从尚未绘制到显示表面的图像中获得的。如果要在特定坐标处绘制,只需执行以下操作:

screen.blit(image, (x, y))     #x and y are the respective position coordinates
于 2014-07-11T16:10:35.780 回答