gpt4 book ai didi

python - queue_draw_area 具有特定的处理程序?

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:53 25 4
gpt4 key购买 nike

我将 Cairo 与 gi.repository.Gtk.DrawingArea 一起使用,并且我需要处理两种不同类型的事件:

  • 更新摘要行 (draw_summary())
  • 绘制一个新点 (draw_dot()

理想情况下,当我需要执行draw_dot()时,我只会使一小部分区域(例如绘图区域的垂直 strip )无效,并且当我想要时,我会使不同的区域无效到draw_dummary()。我可以每次都重新绘制整个区域,但这会变得昂贵,我宁愿只更新需要它的地方。

据我所知,我唯一可用的触发机制是调用:

      plot.queue_draw_area

-- 但此调用又通过以下方式连接到 draw 事件:

      self.plot_area.connect("draw", self.handle_draw)

...这意味着我无法将 draw_dotdraw_summary 调用分开排队。当我调用 queue_draw_area 时,我所能做的就是调用我的一个处理程序。是否有一个标准模式可以将绘图操作分解为可以独立排队的单独函数?

最佳答案

嗯。你的画实际上是如何运作的?我的意思是,除了内部重绘之外,GTK 还可以出于其他原因调用您的回调。因此,无论如何,您的绘图回调必须能够处理完全重绘。

为了您的优化:您可以获取 cairo 上下文的剪辑上下文来找出实际需要重绘的部分。 C 中的函数是 cairo_clip_extents,用于获取边界矩形;“cairo_copy_clip_rectangle_list”用于获取属于剪辑一部分的所有单独矩形的列表。

关于python - queue_draw_area 具有特定的处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497746/

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