PHP-GTK
Saturday, November 01, 2014 
download | documentation | applications | faq | changelog | resources 


search for in the  


previousGtkDrawingArea
GtkDrawingArea::sizenext

Last updated: Sun, 12 May 2013
view this page in English

GtkDrawingArea Constructor

Use the constructor to create a new empty, drawing area widget.

In the example, we use the "expose-event" to draw a simple checkerboard. A word of caution, this example is not intented to illustrate a real-world use of this widget, because the same effect can be brought in a much easier manner using a GtkImage. What is important to understand is the underlying concept of how the widget works.

Example 52. Simple checkerboard using a GtkDrawingArea

<?php
 
/* Define some constants */
define("SIZE", 10);
define("SPACING", 2);
 
/* The drawing area's Expose Event Callback */
function doExpose($widget, $event)
{
    /* Red and White colors for the squares */
    $color1 = new GdkColor(30000, 0, 30000);
    $color2 = new GdkColor(65535, 65535, 65535);
 
    /* A graphics context for the red box */
    $gc1 = new GdkGC($widget->window);
    $gc1->set_rgb_fg_color($color1);
 
    /* A graphics context for the white box */
    $gc2 = new GdkGC($widget->window);
    $gc2->set_rgb_fg_color($color2);
 
    /* Values to start painting with */
    $xcount = 0;
    $x = SPACING;
 
    /* Traverse columns */
    while ($x < $widget->allocation->width)
    {
        $y = SPACING;
        $ycount = $xcount % 2;
 
        /* Traverse rows */
        while ($y < $widget->allocation->height)
        {
            /* Even number mean paint red box, else white box */
            if ($ycount % 2) {
                $gc = $gc1;
            } else {
                $gc = $gc2;
            }
 
            /* Paint a rectangle measuring SIZExSIZE */
            $widget->window->draw_rectangle($gc, true, $x, $y, SIZE, SIZE);
 
            /* Next row */
            $y += SIZE + SPACING;
            ++$ycount;
        }
 
        /* Next column */
        $x += SIZE + SPACING;
        ++$xcount;
    }
 
    /* Job's done, no more painting! */
    return true;
}
 
/* Create the Window and Drawing area objects */
$win = new GtkWindow();
$dra = new GtkDrawingArea();
 
/* Connect callbacks and start */
$dra->connect('expose-event', 'doExpose');
$win->connect_simple('destroy', array('Gtk', 'main_quit'));
 
$win->set_title('Drawing Area Demo');
$win->add($dra);
$win->set_size_request(250,250);
$win->show_all();
 
Gtk::main();
 
?>

User Contributed Notes
gtk.gtkdrawingarea.constructor.php
add a note about notes
There are no user contributed notes for this page.


previousGtkDrawingArea
GtkDrawingArea::sizenext

Last updated: Sun, 12 May 2013
view this page in English


credits 

PHP  Copyright © 2001-2014 The PHP Group
 All rights reserved.
Last updated: Sun May 12 20:50:57 2013 CEST