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

#6 RFOG
20/10/2006 - 19:41 | Informe spam
Así es como lo hago con la imagen primaria, pero en esta he de copiar de la
primaria un pedazo a esta, y mostrarla, y que yo sepa no hay opción de
hacerlo sobre sí misma.

Necesito un bitmap de origen con la imagen completa.
Creo uno nuevo con el tamaño justo (funciona).
Creo un Graphics a partir de la segunda imagen (funciona).
Copio un pedazo de la primera sobre la segunda (funciona, pero el resultado
tiene zoom, por lo que no cabe en el recorte).
Luego lo asigno al Image del PictureBox.

El problema está en que el copiado se hace con un cambio de resolución, que
podría deberse al formato del gráfico nuevo, pero incluso creandolo como
copia del original, cambia el tamaño. Y encima fuera en la ficha, no, dentro
de un panel, sí, y me interesa hacerlo dentro del panel para tener barras de
desplazamiento.

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, 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 --














email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida