Проблема масштабирования с Pygame - PullRequest
0 голосов
/ 19 сентября 2011

Когда я пытаюсь масштабировать объект, только верх и левая часть изображения становятся больше. Остальное остается прежним. Я хочу ровный масштаб.

import pygame._view
import pygame, sys
from pygame.locals import *
import random
pygame.init()    


barrel = pygame.image.load("images\Barrel.gif")
barrelx = 0
barrely = 0

while running:

    barrel = pygame.transform.scale(barrel, (int(barrely/4), int(barrely/4)))
    screen.blit(barrel, (barrelx, barrely))

Баррель всегда становится больше (как число), пока не выйдет за пределы экрана. Я использую Python 2.7 на Windows XP.

Ответы [ 4 ]

1 голос
/ 21 сентября 2011

Я понял проблему!То, как я написал программу, новое изображение ствола постоянно использовалось.Итак, сразу после того, как я отобразил ствол, я вставил в конце:

while running:

...

barrel = pygame.transform.scale(barrel, (init(barrely/4),init(barrely/4)))
screen.blit(barrel, (barrelx, barrely))
barrel = pygame.image.load("images\Barrel.gif")

Таким образом, когда переменная масштаба изменяется, она влияет насвежее изображение, а не измененное изображение.

0 голосов
/ 10 июля 2012

Означает ли "верх и левая сторона изображения больше" означает, что изображение не увеличивается в середине, верхний левый всегда остается в том же положении? Если я правильно понял, вы можете попробовать это:

import pygame._view
import pygame, sys
from pygame.locals import *
import random
pygame.init()    


barrel1 = pygame.image.load("images\Barrel.gif")
barrel1x = 0
barrel1y = 0
#get width,height of image
width1,height1 = barrel1.get_size()
running = True


while running:

    barrel2 = pygame.transform.scale(barrel1, (int(barrely/4), int(barrely/4)))
    width2,height2 = barrel2.get_size()
    #position - difference of width or height /2
    screen.blit(barrel, [round(barrelx - (width1 - width2)/2), 
                         round(barrely - (height1 - height2)/2)])
0 голосов
/ 19 сентября 2011

Мне не совсем понятно, в чем ваша проблема.Вы говорите, что только левая и верхняя части становятся больше?Это, вероятно, будет ошибкой в ​​Pygame, потому что scale не должен работать так.Прямоугольник остается прямоугольником (и каждое изображение является прямоугольником).

Если изображение расширяется влево и вверх, это означает, что где-то в цикле, до или после изменения размера изображения, вы перемещаете бочкуизображение влево и вверх, столько же, сколько растет ствол.Просто удали это.(Когда вы масштабируете изображение, верхний левый угол всегда остается на одном и том же месте).

Если это не решило вашу проблему, вам, вероятно, следует более подробно рассказать о вашем объяснении.

0 голосов
/ 19 сентября 2011

Разве это не должно быть:

import pygame._view
import pygame, sys
from pygame.locals import *
import random
pygame.init()    


barrel = pygame.image.load("images\Barrel.gif")
barrelx = 0
barrely = 0

while running:

    barrel = pygame.transform.scale(barrel, (int(barrelx/4), int(barrely/4)))
    screen.blit(barrel, (barrelx, barrely))

В вашем коде вы даете как ширину , так и высоту pygame.transform.scale ()

Кроме того, я не могу видеть, где вы обновляете баррель и бесплодно. В коде вы вставили баррель и всегда будет 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...