gpt4 book ai didi

animation - 使用 GTK+ 制作流畅的动画

转载 作者:行者123 更新时间:2023-12-05 09:00:35 24 4
gpt4 key购买 nike

我正在创建一个网络动画器(类似于 nam,如果您以前使用过的话)。

基本上,我将节点表示为 GTK+ DrawingArea 上的小点,然后更新这些节点的位置并循环重绘 DrawingArea。

生成的动画速度很快,但不流畅(有很多闪烁)。这可能是因为我在每一帧之前用纯色填充了 DrawingArea。

您认为我怎样才能最好地解决这个问题?我应该将帧预渲染到 Pixbufs 上吗?有更好的解决方案吗?

这是我当前的绘图代码(使用 PyGTK):

rect  = self.drawing_area.get_allocation()
style = self.drawing_area.get_style()

pos = [n.position_at(self.t) for n in self.nodes]

self.drawing_area.window.draw_rectangle(style.bg_gc[gtk.STATE_NORMAL], True,
0, 0, rect.width, rect.height)

for p in pos:
self.drawing_area.window.draw_arc(style.fg_gc[gtk.STATE_NORMAL], True,
rect.width * (p.x / 2400.0) - NODE_SIZE/2,
rect.height * (p.y / 2400.0) - NODE_SIZE/2,
NODE_SIZE, NODE_SIZE,
0, 64 * 360)

其中self.t是当前时间,在循环中递增。

最佳答案

我更改了我的代码以将帧渲染到 Pixmap 上,并将 DrawingArea 替换为图像。

虽然这解决了闪烁问题,但现在 CPU 使用率已达到峰值。动画仍然很快,但我不认为这种方法具有可扩展性。

我想是时候进行一些优化了。

更新:事实证明,将暴露事件与图像一起使用并不是一个好主意。 CPU 使用率恢复正常。

关于animation - 使用 GTK+ 制作流畅的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com