在可变大小的矩形中重复纹理

2024-10-03 09:15:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在由canvas.before绘制的Rectangle内重复一个纹理。问题是我不知道Rectangle的大小(它被用作其小部件的背景)

例如,我有一个Rectangle,它有48px高度和宽度100-500px。我想通过水平重复48x48纹理来填充它的内容

我知道并尝试过设置texture.wrap = 'repeat'texture.uvsize,它工作正常,但前提是我事先知道小部件的大小。例如,为大小为144x48的小部件设置uvsize = (3, 1)就可以了

但是,当我想在重画小部件之前更新uvsize时,这不起作用。我创建了一个画布回调并在那里更新了uvsize,但由于某些原因,这没有效果:

...
with self.canvas.before:
    self.cb = Callback(self.on_canvas_redraw)

...

def on_canvas_redraw(self, instr):
    self.texture.uvsize = (self.width / 48, 1)

那么,如何动态更新uvsize?或者有更好的方法来处理小部件的大小调整,或者有更好的方法来解决这个问题


Tags: 方法self宽度高度on部件绘制canvas