Article View: es.comp.os.linux.programacion
Article #7855GTK: drawingarea
From: PATAN
Date: Tue, 14 Jan 2003 22:44
Date: Tue, 14 Jan 2003 22:44
74 lines
3318 bytes
3318 bytes
Buenas.
Tengo un problemilla cuando intento pintar un rectangulo en un drawingarea,
el codigo es el siguiente:
typedef struct {
float r; //color rojo
float g; //color verde
float b; //color azul
} fcolor;
.....
.....
//Aqui creo el drawing area
drawingarea1 = gtk_drawing_area_new ();
gtk_widget_ref (drawingarea1);
gtk_object_set_data_full (GTK_OBJECT (Creador_de_texturas),
"drawingarea1", drawingarea1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (drawingarea1);
gtk_table_attach (GTK_TABLE (table1), drawingarea1, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
color.r = texturas[textura].ambiente.r;
color.g = texturas[textura].ambiente.g;
color.b = texturas[textura].ambiente.b;
pinta_rectangulo(drawingarea1,color);
......
......
//esta funci�n es la encargada de pintar el rectangulo
void pinta_rectangulo(GtkWidget *area,fcolor texcolor) {
GdkGC *gc;
GdkColor *color = NULL;
GdkDrawable *drawable = NULL;
/*
Esta rutina la saque de:
http://www.linuxlots.com/~barreiro/spanish/gtk/faq/x862.html
*/
gc = gdk_gc_new(area->window); //El error es al llamar al elemento window
color = (GdkColor *)malloc(sizeof(GdkColor));
color->red = texcolor.r * (65535/255);
color->green = texcolor.g * (65535/255);
color->blue = texcolor.b * (65535/255);
color->pixel = (gulong)(texcolor.r*65536 + texcolor.g*256 + texcolor.b);
gdk_color_alloc(gtk_widget_get_colormap(area), color);
gdk_gc_set_foreground(gc, color);
drawable = area->window;
gdk_draw_rectangle(drawable,gc,TRUE,0,0,
area->allocation.width,area->allocation.height);
return;
}
El error que me d� es el siguiente, y es al crear la ventana:
Gdk-CRITICAL **: file gdkgc.c: line 51 (gdk_gc_new_with_values): assertion
`window != NULL' failed.
Gdk-CRITICAL **: file gdkgc.c: line 456 (gdk_gc_set_foreground): assertion
`gc != NULL' failed.
Gdk-CRITICAL **: file gdkdraw.c: line 89 (gdk_draw_rectangle): assertion
`drawable != NULL' failed.
Technical Details
Message-ID:
<9t320b.kji.ln@www.mardot.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!fu-berlin.de!uni-berlin.de!213.60.228.89!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII X-Google-Thread: f86c8,e48dff7fb42316a9,start X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-01-14 14:44:39 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!fu-berlin.de!uni-berlin.de!213.60.228.89!not-for-mail From: PATAN <mardot_esSPAM@terra.es> Newsgroups: es.comp.os.linux.programacion Subject: GTK: drawingarea Date: Tue, 14 Jan 2003 23:44:57 +0100 Lines: 75 Message-ID: <9t320b.kji.ln@www.mardot.com> Reply-To: mardot_esSPAM@terra.es NNTP-Posting-Host: 213.60.228.89 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit X-Trace: fu-berlin.de 1042584278 22047690 213.60.228.89 (16 [142849]) X-Orig-Path: www.mardot.com!not-for-mail User-Agent: KNode/0.7.1