#include "ZoneDessin.h"
#include <gtkmm/drawingarea.h>
#include <iostream>
bool
ZoneDessin::on_expose_event(GdkEventExpose* event)
{
Glib::RefPtr<Gdk::GC> gc = Gdk::GC::create(get_window());
Gdk::Color bleu("blue");
get_default_colormap()->alloc_color( bleu );
Gdk::Color rouge("red");
get_default_colormap()->alloc_color( rouge );
gc->set_foreground(bleu);
get_window()->set_background(rouge);
get_window()->clear();
get_window()->clear();
get_window()->draw_line(gc, 1, 1, 100, 100);
get_window()->draw_layout(gc, 40, 40, create_pango_layout("Bonjour"));
return true;
}
void
ZoneDessin::nouvelleLigne()
{
// Le GC, qui permet de dessiner
Glib::RefPtr<Gdk::GC> gc = Gdk::GC::create(get_window());
// Taille de la zone de dessin
int longueur, largeur;
get_window()->get_size(longueur, largeur);
// Ligne aléatoire
int x1 = rand()%longueur;
int y1 = rand()%largeur;
int x2 = rand()%longueur;
int y2 = rand()%largeur;
get_window()->draw_line(gc, x1, y1, x2, y2);
}
#include "MaFenetre.h"
MaFenetre::MaFenetre()
: boite(), zoneDessin(), bouton("Ligne")
{
zoneDessin.set_size_request(200,200);
bouton.signal_clicked().connect(sigc::mem_fun(zoneDessin, &ZoneDessin::nouvelleLigne) );
add(boite);
boite.pack_start(zoneDessin);
boite.pack_start(bouton, Gtk::PACK_SHRINK);
show_all();
}