Página principal | Jerarquía de la clase | Lista de componentes | Miembros de las clases | Ejemplos

test-GFuncion.cs

Programa para hacer pruebas de la clase GFuncion

//*******************************************************************
//* test-GFuncion.cs   (c) Juan Gonzalez.  Marzo 2005               *
//*-----------------------------------------------------------------*
//* Ejemplo de prueba de la clase GFuncion                          *
//* Para dibujar se utiliza un doble buffer                         *
//*-----------------------------------------------------------------*
//* Licencia GPL                                                    *
//*******************************************************************
/*-------------------------------------------------------------------------
 $Id: test-GFuncion.cs,v 1.1 2005/03/21 12:18:51 juan Exp $
 $Revision: 1.1 $
 $Source: /var/lib/cvs/cube-virtual.mono/test-GFuncion.cs,v $
---------------------------------------------------------------------------*/
using Gtk;
using System;

class Test_GFuncion
{
  /*-----------------------------*/
  /*  PROPIEDADES                */
  /*-----------------------------*/
  //-- Buffer donde dibujar
  static Gdk.Pixmap pixmap;
  
  //-- Area de dibujo
  static Gtk.DrawingArea darea;
  
  //-- Funcion a dibujar
  static GFuncion gf1;

  /*------------------------------*/
  /*  METODOS                     */
  /*------------------------------*/
  public static void Main (string[] args)
  {
    new Test_GFuncion (args);
  }

  public Test_GFuncion (string[] args)
  {
    //-- Inicializar las GTK
    Application.Init();
    
    //-- Crear el interfaz: una ventana y un "Drawing Area"
    Window window = new Window ("Test-GFuncion");
    window.DeleteEvent += new DeleteEventHandler (OnWindowDeleteEvent);
    darea = new DrawingArea();
    window.Add(darea);
    window.ShowAll();
    
    //-- Funciones de retro-llamada del "Drawing Area"
    darea.ConfigureEvent+=new ConfigureEventHandler (on_configure_event);
    darea.ExposeEvent+=new ExposeEventHandler (on_expose_event);  
    darea.SetSizeRequest (200, 200);
   
    //-- Crear la GFuncion
    gf1 = new GFuncion(darea);
    gf1.Origen=new Vector(50,100);
    gf1.Func = new FuncionSin(15,100,0,5);
    
    //-- Que comience la fiesta!!
    Application.Run();
  }

  //----------------------------------------------------
  //-- Funcion de retrollamada para salir de las GTK
  //----------------------------------------------------
  void OnWindowDeleteEvent (object o, DeleteEventArgs args) 
  {
    Application.Quit ();
    args.RetVal = true;
  }
  
  //---------------------------------------------------------------
  //-- Funcion de retrollamada de cambio de tamaño
  //-- Si el area de dibujo tiene un tamano fijo, no se invocara
  //---------------------------------------------------------------
  public void on_configure_event(object o, 
                                              ConfigureEventArgs args)
  {
    Gdk.EventConfigure ev = args.Event;
    Gdk.Window window = ev.Window;
    Gdk.Rectangle allocation = darea.Allocation;

    //-- Crear un pixmap nuevo, con las nuevas dimensiones
    pixmap = new Gdk.Pixmap (window, allocation.Width, allocation.Height, -1);
    
    //-- Borrar el pixmap
    pixmap.DrawRectangle (darea.Style.WhiteGC, true, 0, 0,
                          allocation.Width, allocation.Height);
        
    //-- Dibujar la funcion
    gf1.Render(pixmap,0);
    
    //-- Solicitar refresco
    darea.QueueDraw(); 

    args.RetVal = true;
  }                                            
  
  //---------------------------------------------------------------------
  //-- Funcion de retrollamada invocada cada vez que hay que dibujar
  //---------------------------------------------------------------------
  public void on_expose_event(object o, ExposeEventArgs args)
  {
    //-- Llevar el buffer pixmap al area de dibujo
    Gdk.Rectangle area = args.Event.Area;
    args.Event.Window.DrawDrawable (
              darea.Style.BlackGC,
              pixmap,
              area.X, area.Y,
              area.X, area.Y,
              area.Width, area.Height);

    args.RetVal = false;  
  }
  
  
}

Generado el Sat Dec 10 12:19:58 2005 para cube-virtual.mono por  doxygen 1.4.2