2017-05-07 178 views
1

因此,幾個小時前我發現Pyglet最適合呈現gif動畫,所以我',這是新的。我的問題是,動畫gif在全屏窗口呈現其原始大小,我需要使它匹配,但我不知道我該怎麼做,有什麼幫助嗎?我的代碼:如何使用Pyglet在Python中使gif動畫匹配全屏窗口大小?

import sys 

import pyglet 
from pyglet.window import Platform 

if len(sys.argv) > 1: 
    animation = pyglet.image.load_animation(sys.argv[1]) 
    bin = pyglet.image.atlas.TextureBin() 
    animation.add_to_texture_bin(bin) 
else: 
    animation = pyglet.resource.animation('gaben.gif') 
    sprite = pyglet.sprite.Sprite(animation) 

screen = Platform().get_default_display().get_default_screen() 
window = pyglet.window.Window(width=screen.width, height=screen.height) 
window.set_fullscreen(True) 

pyglet.gl.glClearColor(1, 1, 1, 1) 

@window.event 
def on_draw(): 
    window.clear() 
    sprite.draw() 

pyglet.app.run() 

我所得到的結果

enter image description here

回答

0

最簡單的方法是使用精靈對象的.scale
它能夠按比例縮放圖像的原始尺寸,如果您自己調整圖像大小,您無需擔心映射數據或填充像素間隙。

爲了幫助你去,這是一個實現的一個簡單的例子:
(它看起來是這樣的:https://youtu.be/Ly61VvTZnCU

import pyglet 
from pyglet.window import Platform 

monitor = Platform().get_default_display().get_default_screen() 

sprite = pyglet.sprite.Sprite(pyglet.resource.animation('anim.gif')) 

H_ratio = max(sprite.height, monitor.height)/min(sprite.height, monitor.height) 
W_ratio = max(sprite.width, monitor.width)/min(sprite.width, monitor.width) 

sprite.scale = min(H_ratio, W_ratio) # sprite.scale = 2 would double the size. 
            # We'll upscale to the lowest of width/height 
            # to not go out of bounds. Whichever 
            # value hits the screen edges first essentially. 

window = pyglet.window.Window(width=monitor.width, height=monitor.height, fullscreen=True) 

pyglet.gl.glClearColor(1, 1, 1, 1) 

@window.event 
def on_draw(): 
    window.clear() 
    sprite.draw() 

pyglet.app.run() 

我刪除了一些您的演示/測試目的的代碼。
該代碼絕不是完美的,但它可能會讓你瞭解這是如何工作的)。

相關問題