【问题标题】:How to get invalid region of GtkDrawingArea in its draw signal handler如何在其绘制信号处理程序中获取 GtkDrawingArea 的无效区域
【发布时间】:2018-02-11 14:02:50
【问题描述】:

the Reference Manual of GtkDrawingArea 中,它说

绘图信号通常在绘图区域第一次出现在屏幕上时传递,或者当它被另一个窗口覆盖然后又被覆盖时传递。您还可以通过添加到绘图区域窗口的“损坏区域”来强制暴露事件; gtk_widget_queue_draw_area()gdk_window_invalidate_rect() 是同样的好方法。 然后您将获得无效区域的平局信号。

那么如何在绘图信号的处理程序中获取无效区域? 是剪辑区域吗?

【问题讨论】:

    标签: gtk gtk3 cairo pygobject pycairo


    【解决方案1】:

    the documentation for the draw signal itself:

    信号处理程序将获得一个cr,其剪辑区域已设置为小部件的脏区域,即需要重新绘制的区域。想要完全避免重绘自己的复杂小部件可以使用gdk_cairo_get_clip_rectangle() 获得剪辑区域的完整范围,或者他们可以使用cairo_copy_clip_rectangle_list() 获得更细粒度的脏区表示。

    gdk_cairo_get_clip_rectangle()cairo_clip_extents() 的包装器,它使用整数而不是浮点坐标,因此如果您想要浮点坐标,也可以使用后一个函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 2011-05-13
      • 2011-01-26
      相关资源
      最近更新 更多