按坐标显示矩形

时间:2014-07-11 14:19:02

标签: python-2.7 pygame pygame-surface

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

我知道我可以用这个:

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

但我希望矩形在屏幕上的精确位置。

2 个答案:

答案 0 :(得分:1)

如果您需要在点(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和其他人的新值。

BTW:如您所见,您可以在img.rect

中使用blit()作为参数

BTW:你也可以这样做:(例如在__init__中):

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

BTW:您也可以在精确的位置使用它来在其他Surface上blit image / Surface。您可以将文本放在某个表面的中心(例如:按钮),然后将该表面放在屏幕的右下角

答案 1 :(得分:1)

从你的代码:

screen.blit(img.image, img.rect.topleft)
由于已经从尚未绘制到显示表面的图像获得了矩形,因此

将图像置于(0,0)。如果要在特定坐标处绘制,只需执行以下操作:

screen.blit(image, (x, y))     #x and y are the respective position coordinates