【问题标题】:Kivy Render Children InstructionsKivy 渲染儿童说明
【发布时间】:2016-04-07 06:48:07
【问题描述】:

如果我有一个包含多个子小部件实例的布局,那么父级如何以及何时确保它们都被绘制到屏幕上?假设我们的孩子正在以某种简单的方式制作动画,因此他们需要不断更新。

如果我的 ParentLayout 类大致是这样的:

class ParentLayout(ScatterLayout):
    def __init__(self):
        #
        with self.canvas.before:
            #hook A
            #switchout framebuffer here?
            pass
        with self.canvas:
            #hook B
            pass
        with self.canvas.after:
            #hook C
            #recover framebuffer with just this Widget?
            pass

Q1:子drawables最终会被parent.canvas吸引吗? A1: 不,他们不是。画布上写满了说明;它不是缓冲区。

似乎孩子会被画在hook B 周围的某个地方,但我无法确认或测试这一点。

我实际上是在尝试在某些小部件组被新渲染到缓冲区后对其进行屏幕截图。我想检索代表 ParentLayout 及其子项的画布的纹理......不多也不少。

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    小部件已经有一个方法可以做到这一点,Widget.export_to_png。

    画布最终是指令的有序列表(映射到 opengl 指令)。绘制屏幕需要遍历这个列表,并且保证每帧发生一次,所以一个简单的解决方案通常是 Clock.schedule_once(your_function, 0) ,它应该在所有内容渲染后运行下一帧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多