jueves, abril 27, 2006

Pintar imagenes en c con gtk y con vb en mono

En la Arousa-party que estuvimos hace un par de semanas, "Party intima" donde las haya... mi amigo palomo me enseño este programilla que estaba empezando ha hacer para recuperar la soltura en c que le caracteriza... es un ejemplo pequeñin utilizando las gtk para sacar por pantalla una imagen. Me parecio muy interesante sobre todo por que como ahora me ha dado por monear me va a resultar util para un jueguecin que estoy haciendo... segun tome forma posteare algo sobre el por ahora solo decir que es un wargame basado en reglas de un conocido wargame... (espero no violar los derechos de propiedad intelectual...)

El ejemplo es el que sigue.

Abre una ventana con gtk y pinta una imagen en un widget (o argo asin...)

#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>

int main (int argc, char **argv) {
  GtkWidget *window,*imagen;
  GdkPixbuf *pixbuf;
  GdkPixmap *pixmap;
  GdkBitmap *mask;

  gtk_init (&argc, &argv);

  pixbuf = gdk_pixbuf_new_from_file("parodius.png");
  gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &mask, 0);
  imagen = gtk_pixmap_new( pixmap, mask );

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_signal_connect (GTK_OBJECT (window), "destroy", gtk_main_quit, NULL);
  gtk_widget_show(imagen);
  gtk_container_add (GTK_CONTAINER (window), imagen);

  gtk_widget_show (window);

  gtk_main ();

  return 0;
}


Simplificando un poquitin saque la forma de hacerlo con mono (ya sabiendo que clases utilizar asin cualquiera ^_^)

Imports System
Imports Gtk

Public Class MainClass
  Public Shared Sub Main ()
    Application.Init ()
    new MainWindow ()
    Application.Run ()
  End Sub
End Class

Public Class MainWindow
  Inherits Window

  Public Sub New ()
    MyBase.New("Mozlot")
    Me.SetDefaultSize (400, 300)
    AddHandler MyBase.DeleteEvent, AddressOf OnMyWindowDelete
    Dim wgImage As Gtk.Widget = New Gtk.Image("imagen.png")
    Me.Add(wgImage)
    Me.ShowAll ()
  End Sub
  Private Sub OnMyWindowDelete (ByVal sender As Object, ByVal a As DeleteEventArgs)
    Application.Quit ()
    a.RetVal = true
  End Sub
End Class

No hay comentarios.: