Foros del Web » Programando para Internet » PHP » PHP-GTK »

como mostrar una imagen en una ventana

Estas en el tema de como mostrar una imagen en una ventana en el foro de PHP-GTK en Foros del Web. me gustaria saber como mostrar una imagen en una ventana, y tambien como diseñar tu propio estilo de botones y cambiarles de color, bordes etc.....
  #1 (permalink)  
Antiguo 22/11/2003, 14:06
 
Fecha de Ingreso: diciembre-2002
Ubicación: en mi casa
Mensajes: 131
Antigüedad: 22 años, 4 meses
Puntos: 0
como mostrar una imagen en una ventana

me gustaria saber como mostrar una imagen en una ventana, y tambien como diseñar tu propio estilo de botones y cambiarles de color, bordes etc..
__________________
Sin firma
  #2 (permalink)  
Antiguo 23/11/2003, 05:41
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años, 5 meses
Puntos: 5
Nose si te habras molestado en buscar por el manual de http://gtk.php.net por que todo lo pone ahi, de todas maneras te voy a aclarar un poquito las cosas

Primero, para monstrar una imagen en una ventana escrita en PHP-GTK debes saber que PHP-GTK solo "renderiza" o "interpreta" archivos .xpm estos archivo los puedes hacer tu con el Gimp por ejemplo o bien escribirlos a mano, ya que su estructura es la de una matriz indicada por diferentes valores, para añadir una imagen .xpm tan solo tienes que:

Código PHP:
list($pixmap$mask) = gdk::pixmap_create_from_xpm($window->windowNULLgetenv("HOME")."/Proyectos/PHP-EDDI-DEV/imagenes/".$imagen);
$var = new GtkPixmap($pixmap$mask);
$var ->show();

$window->add($var); 
Con el metodo estaticopixmap_create_from_xpm de la clase gdk puedes cargar un archivo .xpm y de el extraes el dibujo y su mascara, necesarios para crear una imagen mediante el widget GtkPixmap.

Otra cosa que puedes hacer es uso de GdkPIxbuf (de momento integra para Linux), con el soporte de GdkPixbuf puedes renderizar diferentes tipos de imagenes, como por ejemplo .jpg , .png , .tiff, .xpm ... y cargar la imagne en un GtkDrawingArea, esto ya es algo mas "complicado", bueno mas que complicado algo mas elavorado :P jeje

Aqui te dejo un ejemplo de su uso:
Código PHP:
<?php
dl
('php_gtk.so');

if (
$argc 2)
    die(
"\nUso: php gdk_pixbuf.php <nombreImagen>\n\n");

$image_file $argv[1];
$window = &new GtkWindow();
$window->set_border_width(5);
$window->set_title('GdkPixbuf example');
$window->set_policy(falsefalsetrue);
$window->connect_object('destroy', array('gtk''main_quit'));

$pixbuf GdkPixbuf::new_from_file($image_file);
if (!
$pixbuf) {
    die(
"\nNo se puede cargar $image_file\n\n");
}
$area = &new GtkDrawingArea();
$area->size($pixbuf->get_width(), $pixbuf->get_height());
$area->connect('expose_event''expose_event'$pixbuf);
$frame = &new GtkFrame();
$frame->add($area);
$frame->set_shadow_type(GTK_SHADOW_IN);
$window->add($frame);

$window->show_all();

gtk::main();

function 
expose_event($area$event$pixbuf) {
    
$pixbuf->render_to_drawable($area->window$area->style->fg_gc[GTK_STATE_NORMAL], $event->area->x$event->area->y$event->area->x$event->area->y$event->area->width$event->area->heightGDK_RGB_DITHER_NORMAL00);
}
?>
Otro uso que podrias hacer es usar la libreria GD o ImageMagick y transformar las imagenes a .xpm y cargarlas todas de la primera manera.


En cuanto a lo de los estilos, existe un widget que es GtkStyle, y todos los widgets tienen la posibilidad de modificar su estilo, bien usando el metodo set_style() u otros indicados a cada widget, como set_cell_style. Lo mejor que puedes hacer es revisar el manual y veras el uso de estilos, otra manera es parseando archivos mediante el metodo estatico rc_parse() de la clase GTK. te recominedo que revises el archivo gtk.php de la carpeta tests/ de la instalacion de PHP-GTK.

Espero que haberte aclarado algo mas el tema este De todas maneras pasate por http://talks.php.net y revisa las de PHP-GTK son muy valiosas
__________________
Usuario registrado de Linux #288725
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:40.