как я могу создать поверхность из секции другой поверхности. Причина в том, что у меня есть изображение в качестве фона, и на нем отображаются часы, поэтому, когда я обновляю новое время, мне нужно сначала восстановить исходный фон в этом разделе, прежде чем вводить новый текст часов. Я мог бы сделать это, используя флип / полноэкранное обновление, но хочу избежать этого и обновить / восстановить только часть экрана.
Вы можете обновить часть экрана, передав один прямоугольник или список прямоугольников в pygame.display.update
:
Update portions of the screen for software displays. [...] You can pass the function a single rectangle, or a sequence of rectangles.
например.:
pygame.display.update(rect_region)
Вы можете определить подповерхность, которая напрямую связана с исходной поверхностью, с помощью метода subsurface
:
Returns a new Surface that shares its pixels with its new parent. The new Surface is considered a child of the original. Modifications to either Surface pixels will effect each other.
например.:
rect_region = (x, y, width, height)
subsurf = source_surf.subsurface(rect_region)
В качестве альтернативы метод blit
позволяет указать прямоугольную подобласть источника Поверхность:
[...] An optional area rectangle can be passed as well. This represents a smaller portion of the source Surface to draw. [...]
например.:
rect_region = (x, y, width, height)
traget.blit(source_surf, (posx, posy), rect_region)
См. также Как я могу обрезать изображение с помощью Pygame? и Pygame - копирование координат x и y изображения.