Class
Gtk.DrawingArea
Description [src]
class Gtk.DrawingArea : Gtk.Widget {
widget: GtkWidget
}
GtkDrawingArea
is a widget that allows drawing with cairo.
It’s essentially a blank widget; you can draw on it. After creating a drawing area, the application may want to connect to:
-
The
GtkWidget::realize
signal to take any necessary actions when the widget is instantiated on a particular display. (Create GDK resources in response to this signal.) -
The
GtkDrawingArea::resize
signal to take any necessary actions when the widget changes size. -
Call
gtk_drawing_area_set_draw_func()
to handle redrawing the contents of the widget.
The following code portion demonstrates using a drawing area to display a circle in the normal widget foreground color.
Simple GtkDrawingArea usage
static void
draw_function (GtkDrawingArea *area,
cairo_t *cr,
int width,
int height,
gpointer data)
{
GdkRGBA color;
GtkStyleContext *context;
context = gtk_widget_get_style_context (GTK_WIDGET (area));
cairo_arc (cr,
width / 2.0, height / 2.0,
MIN (width, height) / 2.0,
0, 2 * G_PI);
gtk_style_context_get_color (context,
&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;
}
The draw function is normally called when a drawing area first comes
onscreen, or when it’s covered by another window and then uncovered.
You can also force a redraw by adding to the “damage region” of the
drawing area’s window using gtk_widget_queue_draw()
.
This will cause the drawing area to call the draw function again.
The available routines for drawing are documented on the [GDK Drawing Primitives][gdk4-Cairo-Interaction] page and the cairo documentation.
To receive mouse events on a drawing area, you will need to use event controllers. To receive keyboard events, you will need to set the “can-focus” property on the drawing area, and you should probably draw some user-visible indication that the drawing area is focused.
If you need more complex control over your widget, you should consider
creating your own GtkWidget
subclass.
Ancestors
- GtkWidget
- GInitiallyUnowned
- GObject
Constructors
gtk_drawing_area_new
Creates a new drawing area.
Instance methods
gtk_drawing_area_get_content_height
Retrieves the content height of the GtkDrawingArea
.
gtk_drawing_area_get_content_width
Retrieves the content width of the GtkDrawingArea
.
gtk_drawing_area_set_content_height
Sets the desired height of the contents of the drawing area.
gtk_drawing_area_set_content_width
Sets the desired width of the contents of the drawing area.
gtk_drawing_area_set_draw_func
Setting a draw function is the main thing you want to do when using a drawing area.
Methods inherited from GtkWidget (159)
Methods inherited from GtkAccessible (10)
gtk_accessible_get_accessible_role
Retrieves the GtkAccessibleRole
for the given GtkAccessible
.
gtk_accessible_reset_property
Resets the accessible property
to its default value.
gtk_accessible_reset_relation
Resets the accessible relation
to its default value.
gtk_accessible_reset_state
Resets the accessible state
to its default value.
gtk_accessible_update_property
Updates a list of accessible properties.
gtk_accessible_update_property_value
Updates an array of accessible properties.
gtk_accessible_update_relation
Updates a list of accessible relations.
gtk_accessible_update_relation_value
Updates an array of accessible relations.
gtk_accessible_update_state
Updates a list of accessible states. See the GtkAccessibleState
documentation for the value types of accessible states.
gtk_accessible_update_state_value
Updates an array of accessible states.
Methods inherited from GtkBuildable (1)
gtk_buildable_get_buildable_id
Gets the ID of the buildable
object.
Properties
Gtk.DrawingArea:content-height
The content height.
Gtk.DrawingArea:content-width
The content width.
Properties inherited from GtkWidget (34)
Gtk.Widget:can-focus
Whether the widget or any of its descendents can accept the input focus.
Gtk.Widget:can-target
Whether the widget can receive pointer events.
Gtk.Widget:css-classes
A list of css classes applied to this widget.
Gtk.Widget:css-name
The name of this widget in the CSS tree.
Gtk.Widget:cursor
The cursor used by widget
.
Gtk.Widget:focus-on-click
Whether the widget should grab focus when it is clicked with the mouse.
Gtk.Widget:focusable
Whether this widget itself will accept the input focus.
Gtk.Widget:halign
How to distribute horizontal space if widget gets extra space.
Gtk.Widget:has-default
Whether the widget is the default widget.
Gtk.Widget:has-focus
Whether the widget has the input focus.
Gtk.Widget:has-tooltip
Enables or disables the emission of the ::query-tooltip signal on widget
.
Gtk.Widget:height-request
Override for height request of the widget.
Gtk.Widget:hexpand
Whether to expand horizontally.
Gtk.Widget:hexpand-set
Whether to use the hexpand
property.
Gtk.Widget:layout-manager
The GtkLayoutManager
instance to use to compute the preferred size
of the widget, and allocate its children.
Gtk.Widget:margin-bottom
Margin on bottom side of widget.
Gtk.Widget:margin-end
Margin on end of widget, horizontally.
Gtk.Widget:margin-start
Margin on start of widget, horizontally.
Gtk.Widget:margin-top
Margin on top side of widget.
Gtk.Widget:name
The name of the widget.
Gtk.Widget:opacity
The requested opacity of the widget.
Gtk.Widget:overflow
How content outside the widget’s content area is treated.
Gtk.Widget:parent
The parent widget of this widget.
Gtk.Widget:receives-default
Whether the widget will receive the default action when it is focused.
Gtk.Widget:root
The GtkRoot
widget of the widget tree containing this widget.
Gtk.Widget:scale-factor
The scale factor of the widget.
Gtk.Widget:sensitive
Whether the widget responds to input.
Gtk.Widget:tooltip-markup
Sets the text of tooltip to be the given string, which is marked up with Pango markup.
Gtk.Widget:tooltip-text
Sets the text of tooltip to be the given string.
Gtk.Widget:valign
How to distribute vertical space if widget gets extra space.
Gtk.Widget:vexpand
Whether to expand vertically.
Gtk.Widget:vexpand-set
Whether to use the vexpand
property.
Gtk.Widget:visible
Whether the widget is visible.
Gtk.Widget:width-request
Override for width request of the widget.
Properties inherited from GtkAccessible (1)
Gtk.Accessible:accessible-role
The accessible role of the given GtkAccessible
implementation.
Signals
Gtk.DrawingArea::resize
Emitted once when the widget is realized, and then each time the widget is changed while realized.
Signals inherited from GtkWidget (13)
Gtk.Widget::destroy
Signals that all holders of a reference to the widget should release the reference that they hold.
Gtk.Widget::direction-changed
Emitted when the text direction of a widget changes.
Gtk.Widget::hide
Emitted when widget
is hidden.
Gtk.Widget::keynav-failed
Emitted if keyboard navigation fails.
Gtk.Widget::map
Emitted when widget
is going to be mapped.
Gtk.Widget::mnemonic-activate
Emitted when a widget is activated via a mnemonic.
Gtk.Widget::move-focus
Emitted when the focus is moved.
Gtk.Widget::query-tooltip
Emitted when the widgets tooltip is about to be shown.
Gtk.Widget::realize
Emitted when widget
is associated with a GdkSurface
.
Gtk.Widget::show
Emitted when widget
is shown.
Gtk.Widget::state-flags-changed
Emitted when the widget state changes.
Gtk.Widget::unmap
Emitted when widget
is going to be unmapped.
Gtk.Widget::unrealize
Emitted when the GdkSurface
associated with widget
is destroyed.
Class structure
struct GtkDrawingAreaClass {
GtkWidgetClass parent_class;
void (* resize) (
GtkDrawingArea* area,
int width,
int height
);
}
Class members
parent_class |
|
No description available. | |
resize |
|
No description available. |