GtkDrawingArea

说明 [src]

class Gtk.DrawingArea : Gtk.Widget
  implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
  /* No available fields */
}

GtkDrawingArea 是一个允许使用 cairo 绘制的微件。

An example GtkDrawingArea

它本质上是一个空白微件;可在其上进行绘制。在创建一个绘图区域后,应用程序可能希望连接到

以下代码段演示如何使用绘图区域以常规微件前景色显示一个圆圈。

简单 GtkDrawingArea 使用情况

static void
draw_function (GtkDrawingArea *area,
               cairo_t        *cr,
               int             width,
               int             height,
               gpointer        data)
{
  GdkRGBA color;

  cairo_arc (cr,
             width / 2.0, height / 2.0,
             MIN (width, height) / 2.0,
             0, 2 * G_PI);

  gtk_widget_get_color (GTK_WIDGET (area),
                        &color);
  gdk_cairo_set_source_rgba (cr, &color);

  cairo_fill (cr);
}

int
main (int argc, char **argv)
{
  gtk_init ();

  GtkWidget *area = gtk_drawing_area_new ();
  gtk_drawing_area_set_content_width (GTK_DRAWING_AREA (area), 100);
  gtk_drawing_area_set_content_height (GTK_DRAWING_AREA (area), 100);
  gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (area),
                                  draw_function,
                                  NULL, NULL);
  return 0;
}

通常情况下,绘图函数在绘图区域首次显示在屏幕上或被另一个窗口覆盖然后未覆盖时调用。你还可以通过使用 gtk_widget_queue_draw() 将内容添加到绘图区域窗口的“损坏区域”来强制重新绘制。这将导致绘图区域再次调用绘图函数。

用于绘制的可用例程在 Cairo 文档 中说明;GDK 提供了其他 API 来与 Cairo 集成,如 gdk_cairo_set_source_rgba()gdk_cairo_set_source_pixbuf()

要接收绘图区域上的鼠标事件,你需要使用事件控制器。要接收键盘事件,你需要在绘图区域上设置“可获得焦点”属性,并且你可能需要绘制一些用户可见的指示,表明绘图区域已获得焦点。

如果你需要对微件进行更复杂的控制,你应该考虑创建你自己的 GtkWidget 子类。

层次结构

hierarchy this GtkDrawingArea implements_0 GtkAccessible this--implements_0 implements_1 GtkBuildable this--implements_1 implements_2 GtkConstraintTarget this--implements_2 ancestor_0 GtkWidget ancestor_0--this ancestor_1 GInitiallyUnowned ancestor_1--ancestor_0 ancestor_2 GObject ancestor_2--ancestor_1

构造函数

gtk_drawing_area_new

创建新的绘图区域。

实例方法

gtk_drawing_area_get_content_height

获取 GtkDrawingArea 的内容高度。

gtk_drawing_area_get_content_width

获取 GtkDrawingArea 的内容宽度。

gtk_drawing_area_set_content_height

设置绘图区域内容的期望高度。

gtk_drawing_area_set_content_width

设置绘图区域内容的期望宽度。

gtk_drawing_area_set_draw_func

设置绘图函数是使用绘图区域时想要做的主要事情。

GtkWidget (162)继承的方法

请参见 GtkWidget 以获取方法的完整列表。

GObject (43)继承的方法

请参阅 GObject 了解完整方法列表。

从 GtkAccessible 继承的方法 (19)
gtk_accessible_announce

请求用户的屏幕阅读器播报给定的 message。

自:4.14

gtk_accessible_get_accessible_parent

检索可访问对象的辅助父对象。

自:4.10

gtk_accessible_get_accessible_role

检索可访问对象的辅助角色。

gtk_accessible_get_at_context

检索给定可访问对象对应的实现。

自:4.10

gtk_accessible_get_bounds

查询此可访问对象的坐标和尺寸。

自:4.10

gtk_accessible_get_first_accessible_child

检索可访问对象的第一个可访问子对象。

自:4.10

gtk_accessible_get_next_accessible_sibling

检索可访问对象的下一个可访问兄弟对象。

自:4.10

gtk_accessible_get_platform_state

查询平台状态,例如 focus。

自:4.10

gtk_accessible_reset_property

将辅助属性重置为其默认 value。

gtk_accessible_reset_relation

将辅助关系重置为其默认 value。

gtk_accessible_reset_state

将辅助状态重置为其默认 value。

gtk_accessible_set_accessible_parent

设置可访问对象的父对象和兄弟对象。

自:4.10

gtk_accessible_update_next_accessible_sibling

更新下一个可访问 sibling。

自:4.10

gtk_accessible_update_property

更新可访问 property 的列表。

gtk_accessible_update_property_value

更新可访问 property 的数组。

gtk_accessible_update_relation

更新可访问 relation 的列表。

gtk_accessible_update_relation_value

更新可访问 relation 的数组。

gtk_accessible_update_state

更新可访问 state 的列表。

gtk_accessible_update_state_value

更新可访问 state 的数组。

从 GtkBuildable 继承的方法 (1)
gtk_buildable_get_buildable_id

获取 buildable 对象的 ID

属性

Gtk.DrawingArea:content-height

content height。

Gtk.DrawingArea:content-width

content width。

从 GtkWidget 继承的属性 (34)
Gtk.Widget:can-focus

这个小部件或其任何子控件是否可以接收输入 focus。

Gtk.Widget:can-target

这个小部件是否可以接收指针 events。

Gtk.Widget:css-classes

应用于此 widget 的 css 类的列表。

Gtk.Widget:css-name

CSS 树中此小部件的名称。

Gtk.Widget:cursor

widget 使用的光标。

Gtk.Widget:focus-on-click

当用 mouse 点击小部件时,小部件是否应该获取焦点。

Gtk.Widget:focusable

此小部件本身是否将接受输入 focus。

Gtk.Widget:halign

如果小部件获取额外 space,如何分配水平空间。

Gtk.Widget:has-default

此小部件是否为默认 widget。

Gtk.Widget:has-focus

小部件是否具有输入 focus。

Gtk.Widget:has-tooltip

启用或禁用对 widget 上的 GtkWidget::query-tooltip 信号的发出。

Gtk.Widget:height-request

覆盖 widget 的高度请求。

Gtk.Widget:hexpand

是否需要水平 expand。

Gtk.Widget:hexpand-set

是否使用 hexpand 属性。

Gtk.Widget:layout-manager

用于计算小部件首选大小并分配其子项的 GtkLayoutManager 实例。

Gtk.Widget:margin-bottom

小部件底部边距。

Gtk.Widget:margin-end

水平方向小部件末尾边距。

Gtk.Widget:margin-start

水平方向小部件首部边距。

Gtk.Widget:margin-top

小部件顶部边距。

Gtk.Widget:name

小部件名称。

Gtk.Widget:opacity

小部件的请求不透明度。

Gtk.Widget:overflow

超出小部件内容区域的内容如何处理。

Gtk.Widget:parent

此小部件的父小部件。

Gtk.Widget:receives-default

如果小部件获得焦点,是否会接收默认操作。

Gtk.Widget:root

包含此小部件的小部件树的 GtkRoot 小部件。

Gtk.Widget:scale-factor

小部件的缩放比例。

Gtk.Widget:sensitive

小部件是否可以响应输入。

Gtk.Widget:tooltip-markup

将工具提示文本设置为给定字符串,该字符串使用 Pango 标记标记。

Gtk.Widget:tooltip-text

将工具提示文本设置为给定的字符串。

Gtk.Widget:valign

如果小部件有额外空间,如何分配垂直空间。

Gtk.Widget:vexpand

是否垂直展开。

Gtk.Widget:vexpand-set

是否使用 vexpand 属性。

Gtk.Widget:visible

小部件是否可见。

Gtk.Widget:width-request

小部件宽度请求的覆盖。

GtkAccessible (1)继承的属性
GtkAccessible:accessible-role

给定 GtkAccessible 实现的可访问角色。

信号

Gtk.DrawingArea::resize

当小部件实现后以及每次在实现期间更改小部件时发出一次。

GtkWidget (13)继承的信号
GtkWidget::destroy

发出信号,表明小部件的所有持有者都应释放它们所持有的引用。

GtkWidget::direction-changed

小部件的文本方向发生改变时发出。

GtkWidget::hide

widget 隐藏时发出。

GtkWidget::keynav-failed

如果键盘导航失败,则发出。

GtkWidget::map

将要映射 widget 时发出。

GtkWidget::mnemonic-activate

通过助记符激活小部件时发出。

GtkWidget::move-focus

焦点移动时发出。

GtkWidget::query-tooltip

小部件的工具提示即将显示时发出。

GtkWidget::realize

widgetGdkSurface 相关联时发出。

GtkWidget::show

widget 显示时发出。

GtkWidget::state-flags-changed

小部件状态更改时发出。

GtkWidget::unmap

将要取消映射 widget 时发出。

GtkWidget::unrealize

widget 相关联的 GdkSurface 被销毁时发出。

GObject (1)继承的信号
GObject::notify

当对象的一个属性通过 g_object_set_property()、g_object_set() 等设置其值时,将在该对象上发出 notify 信号。

类结构

struct GtkDrawingAreaClass {
  GtkWidgetClass parent_class;
  void (* resize) (
    GtkDrawingArea* area,
    int width,
    int height
  );
  
}

没有可用说明。

类成员
parent_class: GtkWidgetClass

没有可用说明。

resize: void (* resize) ( GtkDrawingArea* area, int width, int height )

没有可用说明。

虚拟方法

Gtk.DrawingAreaClass.resize
没有可用说明。