我是pyglet的新手。我想在每次on_draw
次迭代时将像素从黑色更改为白色。因此,在1000次迭代之后,窗口中应该只有1000个白色像素。但是,我想避免在on_draw
中调用1000个绘制操作。所以我想创建一个图像,在图像上做一个RGB putpixel,然后将图像blit到屏幕上。我怎样才能做到这一点? pyglet文档,示例和源代码对此没有太大帮助。
答案 0 :(得分:1)
现在为时已晚,无法帮助您,但有办法解决此问题。例如,blit_into,它修改了加载的图像:
import pyglet
window = pyglet.window.Window(600, 600)
background = pyglet.resource.image('my600x600blackbackground.bmp')
pix = pyglet.resource.image('singlewhitepixel.bmp').get_image_data()
def update(dt):
background.blit_into(pix, x, y, 0) #specify x and y however you want
@window.event
def on_draw():
window.clear()
background.blit(0,0)
pyglet.clock.schedule(update, 1.0/30) #30 frames per second
pyglet.app.run()
答案 1 :(得分:1)
因为没有人对此给出了非常好的答案 我会在这里放一个:
import pyglet
from random import randint
width, height = 500, 500
window = pyglet.window.Window(width=width, height=height)
image = pyglet.image.SolidColorImagePattern((255,255,255,255)).create_image(width, height)
data = image.get_image_data().get_data('RGB', width*3)
new_image = b''
for i in range(0, len(data), 3):
pixel = bytes([randint(0,255)]) + bytes([randint(0,255)]) + bytes([randint(0,255)])
new_image += pixel
image.set_data('RGB', width*3, new_image)
@window.event
def on_draw():
window.clear()
image.blit(0, 0)
pyglet.app.run()
基本上,它的作用是创建一个白色图像,它本身可以在窗口中绘制。但是看到我们想做putpixel
,我已经修改了白色图像中的每个像素作为演示。
可以用于:
可以用来进一步确定图像处理。
答案 2 :(得分:0)
由于我没有得到任何答案,似乎没有简单的方法在pyglet中做到这一点。所以我放弃了使用pyglet。