- #include <gtkmm.h>
- #include <goocanvasmm.h>
- #include <cairomm/cairomm.h>
- #include <iostream>
- #include <gdkmm-2.4/gdkmm.h>
- using namespace Goocanvas;
- using namespace Glib;
- using namespace std;
- using Gdk::InterpType;
- // Clase imagen personalizada
- class Imagen: public Goocanvas::Image{
- protected:
- Imagen(const Glib::RefPtr<Gdk::Pixbuf>& pixbuf, double x = 0.0, double y = 0.0):
- Goocanvas::Image(pixbuf,x,y){ }
- public:
- static Glib::RefPtr<Imagen> create(double x = 0, double y = 0, double width = 0, double height = 0){
- // Crea un buffer de pixeles a partir del fichero de la imagen
- Glib::RefPtr<Gdk::Pixbuf> pb= Gdk::Pixbuf::create_from_file("toroid.png",width,height,true) ;
- // Crea una imagen a partir del pixbuf
- Imagen *imagen=new Imagen(pb,x,y);
- // Asigna la posición de la imagen
- imagen->set_bounds(Bounds(x,y,x+width,y+height));
- // Retorna la imagen creada
- return Glib::RefPtr<Imagen>(imagen);
- }
- };
- // ventana principal
- class Simple : public Gtk::Window
- {
- public:
- Simple(){
- // Asigna un tamaño a la plantilla raiz
- lienzoImagen.set_size_request(800, 800);
- // Establece la ubicación de la plantilla en la pantalla
- lienzoImagen.set_bounds(0, 0, 800, 800);
- // Crea un imagen y lo asigna a lienzo, recuerda que
- // el lienzoImagen solo es el contenedor
- imagen = Imagen::create(100, 100, 450, 450);
- // Asigna el color interno del imagen
- imagen->property_fill_color().set_value("blue");
- // Asocia la señal de clickeo del imagen con el método
- // imagen_clicked() del objeto actual
- imagen->signal_button_press_event ().connect (sigc::mem_fun (this,
- &Simple::imagen_clicked));
- // Retorna el item root de la plantilla
- RefPtr<Item> root = lienzoImagen.get_root_item();
- // Agrega el imagen a la plantilla
- root->add_child(imagen);
- // Agrega el lienzo a la ventana actual
- add(lienzoImagen);
- show_all_children();
- }
- /** Método que se ejecuta cuando se clickea el imagen **/
- bool imagen_clicked(const RefPtr<Item>&, GdkEventButton*){
- cout << "Has clickeado el imagen" << endl ;
- return true ;
- }
- Glib::RefPtr<Imagen> m_item;
- protected:
- // Lienzo contenedor del imagen
- Canvas lienzoImagen;
- // Imagen a mostrar
- RefPtr<Imagen> imagen;
- };
- int main(int argc, char* argv[]){
- Gtk::Main app(&argc, &argv) ;
- // Inicializa goocanvas. Es necesario en todo programa que use esta biblioteca
- Goocanvas::init("Ejemplo simple goocanvasmm", "1.0", argc, argv) ;
- Simple ventana ;
- Gtk::Main::run(ventana) ;
- }
viernes, 16 de noviembre de 2012
Imagenes con goocanvasmm
Este es un mini tutorial de imagenes con goocanvasmm
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario