"Error generico en GDI+"

07/07/2004 - 13:59 por Vicente Nicolau | Informe spam
Muy buenas,

tengo un problema al hacer la presentacion previa o enviar a imprimir un
documento en un ISO A0. Tengo un programa que coge

una pequeña imagen 10 * 10 (bmp o jpg) y la coloca repetidas veces a lo
largo y ancho del papel A0. Cuando hago la

presentacion preliminar, empieza a dibujar, pero al cabo del rato se produce
una excepcion:

System.Runtime.InteropServices.ExternalException: Error genérico en GDI+.
at System.Drawing.Graphics.CheckErrorStatus(Int32 status)
at System.Drawing.Graphics.DrawImage(Image image, Int32 x, Int32 y, Int32
width, Int32 height)
at ImpresionA0.PrintForm.pd_PrintPage(Object sender, PrintPageEventArgs ev)
in

c:\investigacion\impresiona0\frmprintpreview.cs:line 126
que corresponde a la instruccion: ev.Graphics.DrawImage(bmp, posX, posY);

El problema que tengo incialmente era que enviaba a imprimir una imagen ECW
de unos 700MB, y haciendo pruebas me he dado cuenta que al rellenar el A0
con imagenes pequeñas tambien se produce la excepcion.

¿Alguien sabe a que puede ser debido? ¿Conoce alguien algun otro sitio donde
informarme?

Muchas gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Hernan M. Foffani
07/07/2004 - 16:06 | Informe spam
System.Runtime.InteropServices.ExternalException:
Error genérico en GDI+.
at System.Drawing.Graphics.CheckErrorStatus(Int32 status)
at System.Drawing.Graphics.DrawImage(Image image, Int32
x, Int32 y, Int32 width, Int32 height)
at ImpresionA0.PrintForm.pd_PrintPage(Object sender,
PrintPageEventArgs ev) in

c:\investigacion\impresiona0\frmprintpreview.cs:line 126
que corresponde a la instruccion:
ev.Graphics.DrawImage(bmp, posX, posY);



Cuando hay problemas en el manejo de las imagenes
el .NET suele dar ese mensaje de error.
¿Podrías mostrar mas codigo? Mas precisamente como
obtienes el objeto bmp.

-H.
Respuesta Responder a este mensaje
#2 Vicente Nicolau
07/07/2004 - 17:21 | Informe spam
El manejador del evento PrintPage del objeto PrintDocument es este.

El objeto bmp es un bitmap cargado asi: ...new
Bitmap("C:\\Investigacion\\ImpresionA0\\Imagen.bmp");



private void pd_PrintPage(object sender, PrintPageEventArgs ev)

{

int filas, columnas, i, j;

double AnchoEnPulgadas, AltoEnPulgadas;



AnchoEnPulgadas = bmp.Width / bmp.HorizontalResolution;

AltoEnPulgadas = bmp.Height / bmp.VerticalResolution;

//Calculo filas y columnas




columnas = (int)Math.Ceiling((ev.PageSettings.Bounds.Width / 100) /
AnchoEnPulgadas) ;

filas = (int) Math.Ceiling((ev.PageSettings.Bounds.Height / 100) /
AltoEnPulgadas) ;

try

{

int posX = 0, posY = 0;

for ( i=0; i<filas; i++)

{

posX = 0;

for ( j=0; j<columnas; j++)

{

ev.Graphics.DrawImage(bmp, posX, posY);

posX = posX + bmp.Width;

}

posY = posY + bmp.Height;

}

}

}

Muchas gracias por tu ayuda.
Respuesta Responder a este mensaje
#3 Hernan M Foffani
07/07/2004 - 18:40 | Informe spam
El objeto bmp es un bitmap cargado asi: ...new
Bitmap("C:\\Investigacion\\ImpresionA0\\Imagen.bmp");



un objeto bitmap creado así deja bloqueado al archivo
hasta que el objeto se destruye. ¿el new lo ejecutas solo
una vez?
(no estoy seguro que sea ese el problema)

¿reemplazas el contenido del objeto bmp en algun momento?
si es así, revisa la doc del metodo Bitmap.Save(..) que
tiene sus bemoles.

al handler pd_PrintPage(..) no le veo problemas a simple
vista.

-H.
Respuesta Responder a este mensaje
#4 Vicente Nicolau
08/07/2004 - 08:22 | Informe spam
Hola,
acabo de comprobar que el new solo lo ejecuto una vez y seguro que no
reemplazo el contenido del bmp ni utilizo el metodo bmp.Save(..).
Si la aplicacion es muy simple: carga la imagen. Crea un formulario al que
se le pasa la imagen. Dicha imagen se almacena en un atributo de la clase
del formulario (en el constructor), para que sea accesible por otros metodos
(en concreto por el manejador pd_PrintPage(..) ). En la clase del formulario
se crea el printdocument y el manejador pd_PrintPage(..) .

¿sabes algun grupo de noticias o foro que toque este tema? He buscado pero
por el nombre no he encontrado.

Muchas gracias.




"Hernan M Foffani" escribió en el mensaje
news:2842b01c46441$17fffa00$
El objeto bmp es un bitmap cargado asi: ...new
Bitmap("C:\\Investigacion\\ImpresionA0\\Imagen.bmp");



un objeto bitmap creado así deja bloqueado al archivo
hasta que el objeto se destruye. ¿el new lo ejecutas solo
una vez?
(no estoy seguro que sea ese el problema)

¿reemplazas el contenido del objeto bmp en algun momento?
si es así, revisa la doc del metodo Bitmap.Save(..) que
tiene sus bemoles.

al handler pd_PrintPage(..) no le veo problemas a simple
vista.

-H.
Respuesta Responder a este mensaje
#5 Hernan Foffani
08/07/2004 - 16:01 | Informe spam
¿sabes algun grupo de noticias o foro que toque este
tema? He buscado pero por el nombre no he encontrado.



prueba en los grupos de google.
http://www.google.es/grphp

-H.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida