📄 gtkdrawingarea.html
字号:
<HTML><HEAD><TITLE>GtkDrawingArea</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.61"><LINKREL="HOME"TITLE="GTK+ Reference Manual"HREF="index.html"><LINKREL="UP"TITLE="GTK+ Widgets and Objects"HREF="gtkobjects.html"><LINKREL="PREVIOUS"TITLE="GtkDialog"HREF="gtkdialog.html"><LINKREL="NEXT"TITLE="GtkEditable"HREF="gtkeditable.html"></HEAD><BODYCLASS="REFENTRY"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><THCOLSPAN="4"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="5">GTK+ Reference Manual</FONT></TH></TR><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="gtkdialog.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B><<< Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="index.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="gtkobjects.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gtkeditable.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page >>></B></FONT></A></TD></TR></TABLE></DIV><H1><ANAME="GTKDRAWINGAREA">GtkDrawingArea</A></H1><DIVCLASS="REFNAMEDIV"><ANAME="AEN24286"></A><H2>Name</H2>GtkDrawingArea -- a widget for custom user interface elements.</DIV><DIVCLASS="REFSYNOPSISDIV"><ANAME="AEN24289"></A><H2>Synopsis</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS"> #include <gtk/gtk.h>struct <AHREF="gtkdrawingarea.html#GTKDRAWINGAREA-STRUCT">GtkDrawingArea</A>;<AHREF="gtkwidget.html">GtkWidget</A>* <AHREF="gtkdrawingarea.html#GTK-DRAWING-AREA-NEW">gtk_drawing_area_new</A> (void);void <AHREF="gtkdrawingarea.html#GTK-DRAWING-AREA-SIZE">gtk_drawing_area_size</A> (<AHREF="gtkdrawingarea.html">GtkDrawingArea</A> *darea, <AHREF=../glib/glib-basic-types.html#GINT>gint</A> width, <AHREF=../glib/glib-basic-types.html#GINT>gint</A> height); </PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN24299"></A><H2>Object Hierarchy</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS"> <AHREF="gtkobject.html">GtkObject</A> +----<AHREF="gtkwidget.html">GtkWidget</A> +----GtkDrawingArea</PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN24304"></A><H2>Description</H2><P>The <AHREF="gtkdrawingarea.html">GtkDrawingArea</A> widget is used for creating customuser interface elements. After creating a drawingarea, the application may want to connect to:<P></P><UL><LI><P> Mouse and button press signals to respond to input from the user. </P></LI><LI><P> The "realize" signal to take any necessary actions when the widget </P></LI><LI><P> The "size_allocate" signal to take any necessary actions when the widget changes size. </P></LI><LI><P> The "expose_event" signal to handle redrawing the contents of the widget. </P></LI></UL>As a convenience, the <AHREF="gtkdrawingarea.html">GtkDrawingArea</A> widget synthesizesa "configure_event" when the widget is realizedand any time the size of a widget changes when itis realized. It often suffices to connect to thissignal instead of "realize" and "size_allocate".</P><P>The following code portion demonstrates using a drawingarea to implement a widget that draws a circle.As this example demonstrates, an expose handler shoulddraw only the pixels within the requested area andshould draw or clear all these pixels.</P><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">gbooleanexpose_event (GdkWidget *widget, GdkEventExpose *event, gpointer data){ gdk_window_clear_area (widget->window, event->area.x, event->area.y, event->area.width, event->area.height); gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state], &event->area); gdk_draw_arc (widget->window, widget->style->fg_gc[widget->state], TRUE, 0, 0, widget->allocation.width, widget->allocation.height, 0, 64 * 360); gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state], NULL); return TRUE;}[...] GtkWidget *drawing_area = gdk_drawing_area_new(); gdk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 100, 100); gtk_signal_connect (GTK_OBJECT (drawing_area), </PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN24321"></A><H2>Details</H2><DIVCLASS="REFSECT2"><ANAME="AEN24323"></A><H3><ANAME="GTKDRAWINGAREA-STRUCT"></A>struct GtkDrawingArea</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">struct GtkDrawingArea;</PRE></TD></TR></TABLE><P>The <AHREF="gtkdrawingarea.html#GTKDRAWINGAREA-STRUCT">GtkDrawingArea</A> struct contains private data only, andshould be accessed using the functions below.</P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN24329"></A><H3><ANAME="GTK-DRAWING-AREA-NEW"></A>gtk_drawing_area_new ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><AHREF="gtkwidget.html">GtkWidget</A>* gtk_drawing_area_new (void);</PRE></TD></TR></TABLE><P>Create a new drawing area.</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN24335"></A><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><ICLASS="EMPHASIS">Returns</I> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> </TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN24344"></A><H3><ANAME="GTK-DRAWING-AREA-SIZE"></A>gtk_drawing_area_size ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">void gtk_drawing_area_size (<AHREF="gtkdrawingarea.html">GtkDrawingArea</A> *darea, <AHREF=../glib/glib-basic-types.html#GINT>gint</A> width, <AHREF=../glib/glib-basic-types.html#GINT>gint</A> height);</PRE></TD></TR></TABLE><P>Set the size that the drawing area will requestin response to a "size_request" signal. The drawing area may actually be allocated a sizelarger than this depending on how it is packedwithin the enclosing containers.</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN24352"></A><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>darea</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">a <AHREF="gtkdrawingarea.html">GtkDrawingArea</A>.</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>width</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the width to request.</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>height</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the height to request. </TD></TR></TBODY></TABLE><P></P></DIV></DIV></DIV><DIVCLASS="NAVFOOTER"><BRCLEAR="all"><BR><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="gtkdialog.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B><<< Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="index.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="gtkobjects.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gtkeditable.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page >>></B></FONT></A></TD></TR><TR><TDCOLSPAN="2"ALIGN="left"><FONTCOLOR="#FFFFFF"SIZE="3"><B>GtkDialog</B></FONT></TD><TDCOLSPAN="2"ALIGN="right"><FONTCOLOR="#FFFFFF"SIZE="3"><B>GtkEditable</B></FONT></TD></TR></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -