在Pygame和Python 2.7中,如何在由一组坐标表示的特定点处对矩形进行blit?
我知道我可以用这个:
screen.blit(img.image, img.rect.topleft)
但我希望矩形在屏幕上的精确位置。
答案 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
使用上述元素,它不会更改width
和height
如果您更改x
(或其他),则会自动获得left
,right
和其他人的新值。
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