Problema con gráficos

18/10/2006 - 17:25 por RFOG | Informe spam
Holas.

Estoy intentando copiar una parte de un gráfico sobre otro nuevo y
mostrarlo por pantalla.

Para ello hago algo como esto:

m_pbClipping.Image=new
Bitmap(rectangles[m_lbNames.SelectedIndex].Width,rectangles[m_lbNames.SelectedIndex].Height);
Graphics grp=Graphics.FromImage(m_pbClipping.Image);
grp.DrawImage(bitmap,0,0,rectangles[m_lbNames.SelectedIndex],GraphicsUnit.Pixel);

Explicado: Tengo un PaintBox al que le creo un bitmap con las dimensiones
del dibujo de destino, luego obtengo un elemento gráfico para pintar y
entocnes copio la parte correspondiente del "bitmap" completo sobre el de
destino.

El resultado es una parte de la parte que quiero copiar. Y lo curioso es
que tengo otro PaintBox en el que pongo el gráfico completo y sobrepongo
los rectángulos que luego voy a recortar y aparecen perfectamente
encuadrados.

Si uso algo diferente a GraphicsUint.Pixel o me dice que no está
implementado o simplemente explota.

Y ya el summum del asunto es que si el PaintBox está directamente puesto
sobre la ficha, funciona, pero si está dentro de un Panel, aunque tenga
sitio para pintarlo todo, sólo pinta una subparte, en general 2/3 de lo
que quiero pintar.

Imagino que tiene que ver con la resolución y demás, pero no atino.
Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
Se necesita cualquier mentira para poder vivir... cualquier cosa, la
cuestión es engañarse. -- Pío Baroja --

Preguntas similare

Leer las respuestas

#1 RFOG
19/10/2006 - 11:55 | Informe spam
Donde digo PaintBox es PictureBox, a ver si alguien se anima y me dice por
qué se pinta unas veces escalado y otras no, siendo los mismos elementos
gráficos.

Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
El amor es asi, como el fuego; suelen ver antes el humo los que están fuera,
que las llamas los que estan dentro.

"RFOG" wrote in message
news:
Holas.

Estoy intentando copiar una parte de un gráfico sobre otro nuevo y
mostrarlo por pantalla.

Para ello hago algo como esto:

m_pbClipping.Image=new
Bitmap(rectangles[m_lbNames.SelectedIndex].Width,rectangles[m_lbNames.SelectedIndex].Height);
Graphics grp=Graphics.FromImage(m_pbClipping.Image);
grp.DrawImage(bitmap,0,0,rectangles[m_lbNames.SelectedIndex],GraphicsUnit.Pixel);

Explicado: Tengo un PaintBox al que le creo un bitmap con las dimensiones
del dibujo de destino, luego obtengo un elemento gráfico para pintar y
entocnes copio la parte correspondiente del "bitmap" completo sobre el de
destino.

El resultado es una parte de la parte que quiero copiar. Y lo curioso es
que tengo otro PaintBox en el que pongo el gráfico completo y sobrepongo
los rectángulos que luego voy a recortar y aparecen perfectamente
encuadrados.

Si uso algo diferente a GraphicsUint.Pixel o me dice que no está
implementado o simplemente explota.

Y ya el summum del asunto es que si el PaintBox está directamente puesto
sobre la ficha, funciona, pero si está dentro de un Panel, aunque tenga
sitio para pintarlo todo, sólo pinta una subparte, en general 2/3 de lo
que quiero pintar.

Imagino que tiene que ver con la resolución y demás, pero no atino.
Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
> Se necesita cualquier mentira para poder vivir... cualquier cosa, la
cuestión es engañarse. -- Pío Baroja --
Respuesta Responder a este mensaje
#2 Bela Istok
19/10/2006 - 22:18 | Informe spam
Hola, porque no haces la imagen completa primero usando un objeto Image y
despues se la asignas al PictureBox?

Saludos,

Bela Istok

"RFOG" wrote in message
news:
Holas.

Estoy intentando copiar una parte de un gráfico sobre otro nuevo y
mostrarlo por pantalla.

Para ello hago algo como esto:

m_pbClipping.Image=new
Bitmap(rectangles[m_lbNames.SelectedIndex].Width,rectangles[m_lbNames.SelectedIndex].Height);
Graphics grp=Graphics.FromImage(m_pbClipping.Image);
grp.DrawImage(bitmap,0,0,rectangles[m_lbNames.SelectedIndex],GraphicsUnit.Pixel);

Explicado: Tengo un PaintBox al que le creo un bitmap con las dimensiones
del dibujo de destino, luego obtengo un elemento gráfico para pintar y
entocnes copio la parte correspondiente del "bitmap" completo sobre el de
destino.

El resultado es una parte de la parte que quiero copiar. Y lo curioso es
que tengo otro PaintBox en el que pongo el gráfico completo y sobrepongo
los rectángulos que luego voy a recortar y aparecen perfectamente
encuadrados.

Si uso algo diferente a GraphicsUint.Pixel o me dice que no está
implementado o simplemente explota.

Y ya el summum del asunto es que si el PaintBox está directamente puesto
sobre la ficha, funciona, pero si está dentro de un Panel, aunque tenga
sitio para pintarlo todo, sólo pinta una subparte, en general 2/3 de lo
que quiero pintar.

Imagino que tiene que ver con la resolución y demás, pero no atino.
Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
> Se necesita cualquier mentira para poder vivir... cualquier cosa, la
cuestión es engañarse. -- Pío Baroja --
Respuesta Responder a este mensaje
#3 RFOG
20/10/2006 - 10:51 | Informe spam
Tengo entendido que Image es una clase virtual que sirve de antecesor a las
Bitmap etc, y no se puede instanciar directamente, o si se hace sirve de
poco.

De todas formas, lo que yo quiero es copiar un pedazo de una imagen
(contenida en un PictureBox cargada desde disco) en otra imagen nueva
contenida en otro PictureBox.

Pero en un rato lo pruebo y comento si se puede o no.

Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
El infierno y el paraíso me parecen desproporcionados. Los actos de los
hombres no merecen tanto.

"Bela Istok" wrote in message
news:
Hola, porque no haces la imagen completa primero usando un objeto Image y
despues se la asignas al PictureBox?

Saludos,

Bela Istok

"RFOG" wrote in message
news:
Holas.

Estoy intentando copiar una parte de un gráfico sobre otro nuevo y
mostrarlo por pantalla.

Para ello hago algo como esto:

m_pbClipping.Image=new
Bitmap(rectangles[m_lbNames.SelectedIndex].Width,rectangles[m_lbNames.SelectedIndex].Height);
Graphics grp=Graphics.FromImage(m_pbClipping.Image);
grp.DrawImage(bitmap,0,0,rectangles[m_lbNames.SelectedIndex],GraphicsUnit.Pixel);

Explicado: Tengo un PaintBox al que le creo un bitmap con las dimensiones
del dibujo de destino, luego obtengo un elemento gráfico para pintar y
entocnes copio la parte correspondiente del "bitmap" completo sobre el de
destino.

El resultado es una parte de la parte que quiero copiar. Y lo curioso es
que tengo otro PaintBox en el que pongo el gráfico completo y sobrepongo
los rectángulos que luego voy a recortar y aparecen perfectamente
encuadrados.

Si uso algo diferente a GraphicsUint.Pixel o me dice que no está
implementado o simplemente explota.

Y ya el summum del asunto es que si el PaintBox está directamente puesto
sobre la ficha, funciona, pero si está dentro de un Panel, aunque tenga
sitio para pintarlo todo, sólo pinta una subparte, en general 2/3 de lo
que quiero pintar.

Imagino que tiene que ver con la resolución y demás, pero no atino.
Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
>> Se necesita cualquier mentira para poder vivir... cualquier cosa, la
cuestión es engañarse. -- Pío Baroja --



Respuesta Responder a este mensaje
#4 RFOG
20/10/2006 - 11:50 | Informe spam
Lo que imaginaba:

Error 1 error C3622: 'System::Drawing::Image': a class declared as
'abstract' cannot be instantiated
d:\projects\cto\galaxyprerasterizer\galaxyprerasterizer\MainForm.h 495

Bueno, ahora se dice abstracta, pero de toda la vida se ha dicho virtual
pura. En fin, los tiempos, que cambian. :-)

Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
El infierno y el paraíso me parecen desproporcionados. Los actos de los
hombres no merecen tanto.

"RFOG" wrote in message
news:%
Tengo entendido que Image es una clase virtual que sirve de antecesor a
las Bitmap etc, y no se puede instanciar directamente, o si se hace sirve
de poco.

De todas formas, lo que yo quiero es copiar un pedazo de una imagen
(contenida en un PictureBox cargada desde disco) en otra imagen nueva
contenida en otro PictureBox.

Pero en un rato lo pruebo y comento si se puede o no.

Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
> El infierno y el paraíso me parecen desproporcionados. Los actos de los
hombres no merecen tanto.

"Bela Istok" wrote in message
news:
Hola, porque no haces la imagen completa primero usando un objeto Image y
despues se la asignas al PictureBox?

Saludos,

Bela Istok

"RFOG" wrote in message
news:
Holas.

Estoy intentando copiar una parte de un gráfico sobre otro nuevo y
mostrarlo por pantalla.

Para ello hago algo como esto:

m_pbClipping.Image=new
Bitmap(rectangles[m_lbNames.SelectedIndex].Width,rectangles[m_lbNames.SelectedIndex].Height);
Graphics grp=Graphics.FromImage(m_pbClipping.Image);
grp.DrawImage(bitmap,0,0,rectangles[m_lbNames.SelectedIndex],GraphicsUnit.Pixel);

Explicado: Tengo un PaintBox al que le creo un bitmap con las
dimensiones del dibujo de destino, luego obtengo un elemento gráfico
para pintar y entocnes copio la parte correspondiente del "bitmap"
completo sobre el de destino.

El resultado es una parte de la parte que quiero copiar. Y lo curioso es
que tengo otro PaintBox en el que pongo el gráfico completo y sobrepongo
los rectángulos que luego voy a recortar y aparecen perfectamente
encuadrados.

Si uso algo diferente a GraphicsUint.Pixel o me dice que no está
implementado o simplemente explota.

Y ya el summum del asunto es que si el PaintBox está directamente puesto
sobre la ficha, funciona, pero si está dentro de un Panel, aunque tenga
sitio para pintarlo todo, sólo pinta una subparte, en general 2/3 de lo
que quiero pintar.

Imagino que tiene que ver con la resolución y demás, pero no atino.
Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
>>> Se necesita cualquier mentira para poder vivir... cualquier cosa, la
cuestión es engañarse. -- Pío Baroja --







Respuesta Responder a este mensaje
#5 Bela Istok
20/10/2006 - 18:45 | Informe spam
Hola, claro que es abstracta, lo que yo decia es que cargaras, la imagen de
disco en un objeto de tipo image, algo así:

Image i = Image.FromFile("filename here!!!");

Hagas las modificaciones con el objeto, Graphics, y luego la asignes al
PictureBox.

Saludos,

Bela Istok

"RFOG" wrote in message
news:%23Z%
Lo que imaginaba:

Error 1 error C3622: 'System::Drawing::Image': a class declared as
'abstract' cannot be instantiated
d:\projects\cto\galaxyprerasterizer\galaxyprerasterizer\MainForm.h 495

Bueno, ahora se dice abstracta, pero de toda la vida se ha dicho virtual
pura. En fin, los tiempos, que cambian. :-)

Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
> El infierno y el paraíso me parecen desproporcionados. Los actos de los
hombres no merecen tanto.

"RFOG" wrote in message
news:%
Tengo entendido que Image es una clase virtual que sirve de antecesor a
las Bitmap etc, y no se puede instanciar directamente, o si se hace sirve
de poco.

De todas formas, lo que yo quiero es copiar un pedazo de una imagen
(contenida en un PictureBox cargada desde disco) en otra imagen nueva
contenida en otro PictureBox.

Pero en un rato lo pruebo y comento si se puede o no.

Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
>> El infierno y el paraíso me parecen desproporcionados. Los actos de los
hombres no merecen tanto.

"Bela Istok" wrote in message
news:
Hola, porque no haces la imagen completa primero usando un objeto Image
y despues se la asignas al PictureBox?

Saludos,

Bela Istok

"RFOG" wrote in message
news:
Holas.

Estoy intentando copiar una parte de un gráfico sobre otro nuevo y
mostrarlo por pantalla.

Para ello hago algo como esto:

m_pbClipping.Image=new
Bitmap(rectangles[m_lbNames.SelectedIndex].Width,rectangles[m_lbNames.SelectedIndex].Height);
Graphics grp=Graphics.FromImage(m_pbClipping.Image);
grp.DrawImage(bitmap,0,0,rectangles[m_lbNames.SelectedIndex],GraphicsUnit.Pixel);

Explicado: Tengo un PaintBox al que le creo un bitmap con las
dimensiones del dibujo de destino, luego obtengo un elemento gráfico
para pintar y entocnes copio la parte correspondiente del "bitmap"
completo sobre el de destino.

El resultado es una parte de la parte que quiero copiar. Y lo curioso
es que tengo otro PaintBox en el que pongo el gráfico completo y
sobrepongo los rectángulos que luego voy a recortar y aparecen
perfectamente encuadrados.

Si uso algo diferente a GraphicsUint.Pixel o me dice que no está
implementado o simplemente explota.

Y ya el summum del asunto es que si el PaintBox está directamente
puesto sobre la ficha, funciona, pero si está dentro de un Panel,
aunque tenga sitio para pintarlo todo, sólo pinta una subparte, en
general 2/3 de lo que quiero pintar.

Imagino que tiene que ver con la resolución y demás, pero no atino.
Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
>>>> Se necesita cualquier mentira para poder vivir... cualquier cosa, la
cuestión es engañarse. -- Pío Baroja --











Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida