This quick reference lists classes and methods that you can use to develop simple programs in Gtk# 2. For more information, see the official documentation.
All properties and methods below are public unless otherwise specified.
Context
| PointD | Rectangle
| TextExtents
CairoHelper
| Color | Pixbuf
|
Rectangle
Application
| Box
| Button
| Dialog
| DrawingArea
| FileChooserDialog
| HBox
| Label |
Menu
| MenuBar | MenuItem
| VBox | Widget
| Window
Cairo is a library for drawing 2-dimensional graphics. GTK integrates closely with Cairo, and most GTK applications use Cairo for visual output.
A Context is used for
drawing graphics. Typically you
will use a Context object
to draw on a window in the
OnExposeEvent
handler of a Window subclass.
Be aware that methods such as Arc(),
LineTo() and Rectangle()
do not draw - they merely add a geometric shape to the current
path. After you call these methods, you must call either Stroke()
or Fill() to draw to the output surface.
Surface.void Arc (double x, double y, double radius,
double angle1, double angle2);angle1 to angle2
to the current path, centered at (x, y). To draw a circle, pass
angle1 = 0.0 and angle2
= 2 * Math.PI.void ClosePath ();void Fill ();void LineTo (double x, double y);
void
LineTo (PointD p);double LineWidth { set; get; }void
MoveTo (PointD p);void Paint();CairoHelper.SetSourcePixbuf().void Rectangle (double x, double y, double
width, double height);void Rectangle (Rectangle rectangle);void Scale (double sx, double sy);void SelectFontFace (string family, FontSlant
slant, FontWeight weight);
family should be a generic font family
such as "serif", "sans-serif" or "monospace",
or the name of a specific font family available on your system.
slant
should be FontSlant.Normal or
FontSlant.Italic.
weight should be
FontWeight.Normal or FontWeight.Bold.
void SetFontSize (double
scale);void SetSourceRGB (double red, double green,
double blue);SetSourceColor,
below.)Surface as a source for
drawing at the position (x, y) in the destination. Typically
you will make a following call to Paint()
to perform the actual drawing operation.void ShowText (string text);void Stroke ();TextExtents TextExtents (string text);TextExtents object with
information about the size of the given text in the currently
selected font.void Translate (double tx, double ty);An ImageSurface is a
Cairo surface that holds pixel data in memory. You can draw onto an
ImageSurface, and then later
use the ImageSurface as
a source for other drawing operations.
ImageSurface with the given
width and height. Typically
Format will
be either Format.Rgb24,
meaning 24-bit color with 8 bits for each color channel (red, green,
blue), or Format.Argb32,
which is similar but also includes an 8-bit alpha (transparency)
channel.A PointD represents an (x, y) point. (The "D" stands for "double".)
PointD (double x, double
y);A Rectangle represents a rectangle on the (x,y)
plane. Note that this class (Cairo.Rectangle)
is distinct from Gdk.Rectangle, which
appears below.
Any kind of surface on which Cairo can draw.
A TextExtents
structure represents layout information about a particular piece of
text. Be aware that the values in this structure are sizes in screen
pixels, independent of any coordinate transformation in the graphics
context.
MoveTo before a call to ShowText)
to the leftmost part of the text glyphs.
YBearing
is
negative, and XBearing
is
slightly negative:
Here is how to draw a string s centered at the point (x, y):
TextExtents te = context.TextExtents(s);
context.MoveTo(x - (te.Width / 2 + te.XBearing),
y - (te.Height / 2 + te.YBearing));
context.ShowText(s);GDK is a low-level library that sits underneath GTK.
This class contains a few static utility methods for working with Cairo.
Dispose().Pixbuf to use for drawing to a
Cairo context at position (x, y). Typically you will follow this
with a call to context.Paint() to draw
the image.Color.
You can pass any X11
color name such as "red", "cornflower" or
"dark slate gray". Alternatively, you can pass a string
containing the red, green and blue components in hexadecimal; for
example, "#3050b2" specifies the components red = 3016,
green = 5016 and blue = b216. Returns true if the parse succeeded.A Pixbuf holds an
image in memory. You can read a Pixbuf
from a file and use Cairo to render it to the display.
Pixbuf from a file in JPG, PNG
or TIFF format. Throws an exception if the file is not found.Marshal.Copy, or by using unsafe
C# language constructs that let you access C data directly.NChannels
* Width, but may be a larger value if there are padding bytes
at the end of each row.type can be
"jpeg" or "png". Return true if the save
succeeded.PixBuf.
InterpType is an interpolation type,
and can be e.g. InterpType.Bilinear for
a reasonable balance between quality and speed, or InterpType.Hyper
which produces
a higher-quality image but is slower.A Rectangle
represents a rectangle on the (x,y) plane. Note that this class
(Gdk.Rectangle)
is distinct from Cairo.Rectangle,
which appears above.
Rectangle.Rectangle.TimeoutHandler
be called at regular intervals of interval
milliseconds.TimeoutHandler
should continue, or false to cancel the calls.An HBox or VBox,
used for arranging child widgets.
Box.expand is true, the child widget
will expand to use as much space as it is given. If fill
is true, the child widget will request as much space as is
available. padding is the size (in
pixels) of a border to place around the child widget.Button with the given
label.A dialog box.
DialogFlags.Modal
to create a modal dialog. button_data indicates a set of buttons to
display at the bottom of the dialog. Each such
button is represented by a pair of values: a button
text string (typically
a stock string such as Stock.Add)
followed
by a value to be returned if that button is selected
(typically a response code such as ResponseType.Ok
or ResponseType.Cancel).ResponseType.Accept
or ResponseType.Cancel, cast to an int.Destroy()
to destroy it - otherwise it will remain visible on the screen.A DrawingArea is a
canvas where the program can draw graphics. Use a Cairo context to
draw on a DrawingArea.
DrawingArea.A standard dialog box that prompts the user to select a file to be opened or created.
FileChooserDialog.title is a
string that will appear in the dialog box's title bar.parent is the top-level window that
will own this dialog, typically the application's main window.action is a FileChooserAction,
an enumeration whose values include Open
(open mode: the user can only choose
an existing file) or Save (save mode:
the user can either choose an existing file, or type in a new
filename).Stock.Open or
Stock.Cancel) and a response code to be
returned when that button is selected (e.g. ResponseType.Accept
or ResponseType.Cancel).new FileChooserDialog(
"Open...", this, FileChooserAction.Open,
Stock.Cancel, ResponseType.Cancel, Stock.Open, ResponseType.Accept);
An HBox contains one or more widgets that are arranged in a horizontal row.
HBox.A widget that displays a text label, which is often a fixed string.
A top-level menu or submenu.
Menu.Menu.The menu bar that appears at the top of a window.
MenuBar.A MenuItem is an item
that appears in a menu. It may itself contain a submenu of
child MenuItem objects.
MenuItem with the given label.MenuItem fires when the
user selects it.MenuItem.A VBox contains one or more widgets that are arranged in a vertical column.
VBox.A widget is a visual element such as a button, check box, scrollbar, or text area. (In Windows programming these are called controls, but "widget" is the usual Unix term.) A top-level window also counts as a widget.
Gdk.EventMask, which is an
enumeration with one value for each possible event type,
including ButtonPressMask,
ButtonReleaseMask and PointerMotionMask.AddEvents((int) (EventMask.ButtonPressMask |
EventMask.ButtonReleaseMask |
EventMask.PointerMotionMask));
Allocation property is a
Gdk.Rectangle representing the widget's
current size and position within its parent widget.Window,
then Allocation.X and Allocation.Y
will be 0, and Allocation.Width and
Allocation.Height will be the size of
the client area of the window.StateType.Normal as the first argument.EventButton object
has the following properties:ModifierType State { get; }
A value indicating which modifier key(s) (e.g.
Control, Shift) were held down as the mouse button was pressed.
ModifierType is an enumeration including
values ControlMask and ShiftMask.
EventType Type { get; }One of the following values indicating the type of click:
EventType.ButtonPress
EventType.TwoButtonPress
(a double click)
EventType.ThreeButtonPress
(a triple click)
Note that if the user
double-clicks the mouse, you will receive a ButtonPress
event for each click, and also a TwoButtonPress
event.
double X { get; }
double
Y { get; }The X and Y coordinates of a button press, relative to the window.
ExposeEventHandler has this
signature:delegate void ExposeEventHandler (object o, ExposeEventArgs args);
using (Context c =
CairoHelper.Create(GdkWindow)) {
…
}
EventKey
object has the following properties:Gdk.Key Key { get; }
The key that the user pressed or released. Gdk.Key
is an
enumeration with one value for each physical key on a keyboard; for
example, Gdk.Key.Left and Gdk.Key.Right
are the left and right arrow keys, and Gdk.Key.Delete
is the Delete key. See the full list of values here.
EventMotion object
has the following properties:double X { get; }
double Y { get; }The X and Y coordinates of the mouse pointer, relative to the window.
Window, this handler will be called
when the user has resized the window.OnExposeEvent handler in the
near future.A window that appears on the user's desktop.
ShowAll()
to make it appear.Window. A
Window can directly contain only a
single widget; to hold more widgets, add a container widget such as
a VBox and place the child widgets in
that container.