Повторение текстуры в прямоугольнике переменного размера - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть текстура, которую я хочу повторить внутри Rectangle, нарисованной canvas.before. Проблема в том, что я не знаю, какой будет размер Rectangle (он используется в качестве фона для виджета).

Например, у меня есть Rectangle, который имеет 48 px высота и ширина 100 - 500 px. Я хочу заполнить его содержимое, повторяя текстуру 48x48 по горизонтали.

Я знаю и попробовал установить texture.wrap = 'repeat' и texture.uvsize, и она работает правильно, но только если я заранее знаю размер виджета. Например, установка uvsize = (3, 1) для виджета с размером 144x48 работает нормально.

Однако это не работает, когда я хочу обновить uvsize перед перерисовкой виджета. Я создал обратный вызов Canvas и обновил 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? Или есть лучший способ для изменения размера виджета или лучший способ для этого?

...