Acerca de Graphics

16/07/2005 - 01:01 por HighSoft | Informe spam
Cómo puedo hacer para pasar todo lo dibujado en un objeto Graphics a un
ImageList o al Clipboard.

Lo que tengo dibujado son simplemente lineas, rectangulos y texto realizados
con el método FillRectangle, DrawString, etc.

De antemano gracias.

Preguntas similare

Leer las respuestas

#1 Tristan
16/07/2005 - 14:52 | Informe spam
En realidad el graphics sirve de mecanismo para dibujar sobre otra cosa. No
hay nada dibujado en el Graphics.

Lo que puedes hacer es que el graphics pinte sobre un Bitmap. Este si podrás
pasarlo a un ImageList, Clipboard, etc...

He dejado muchos ejemplos en este foro sobre esto:

dim imagen as new Bitmap(ancho, alto)
dim lienzo as Graphics = Graphics.FromImage(imagen)
lienzo.FillRectangle(...)
...


Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Tristan
16/07/2005 - 14:54 | Informe spam
Por cierto, este objeto Bitmap dibujado, podrás establecerlo como fondo de
cualquier control mediante la propiedad BackgroundImage. En los controles
PictureBox, podrás también establecerlo como Image del control.

Ahhh, una ventaja añadidaa es que no necesitarás pintar en Paint si utilizas
esa técnica.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#3 HighSoft
16/07/2005 - 15:24 | Informe spam
Lo que tengo hecho creo que es pecisamente eso:

Private MiDibujo As Graphics

MiDibujo = PictureBox1.CreateGraphics

MiDibujo.DrawRectangle(...)

Como hago ahora para pasar lo que tengo dibujado a un ImageList o al
Clipboard?




"Tristan" escribió en el mensaje
news:
En realidad el graphics sirve de mecanismo para dibujar sobre otra cosa.
No hay nada dibujado en el Graphics.

Lo que puedes hacer es que el graphics pinte sobre un Bitmap. Este si
podrás pasarlo a un ImageList, Clipboard, etc...

He dejado muchos ejemplos en este foro sobre esto:

dim imagen as new Bitmap(ancho, alto)
dim lienzo as Graphics = Graphics.FromImage(imagen)
lienzo.FillRectangle(...)
...


Juan Carlos Badiola
MVP - C#

Respuesta Responder a este mensaje
#4 Tristan
16/07/2005 - 15:53 | Informe spam
Lo que tienes hecho así no podrás pasarlo a nada, puesto que el dibujo no
está almacenado en ninguna parte. Solo existe "sobre" el PictureBox1 en el
que lo hayas dibujado. Como mucho podrías utilizar el api win32 BitBlt para
copiarlo, pero no tiene sentido.

Repasa el código que te he puesto de ejemplo. Consiste simplemente en
obtener el graphics de un Bitmap y no mediante CreateGraphics.

Te repito de nuevo el ejemplo que te he puesto, con un poco más de detalle,
por que me parece que no lo debes haber leido bien:

dim imagen as new Bitmap(ancho, alto)
dim lienzo as Graphics = Graphics.FromImage(imagen)
lienzo.FillRectangle(...)
...
PictureBox1.Image = imagen
ImageList1.Images.Add(imagen)


Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#5 HighSoft
17/07/2005 - 13:26 | Informe spam
Gracias

"Tristan" escribió en el mensaje
news:
Lo que tienes hecho así no podrás pasarlo a nada, puesto que el dibujo no
está almacenado en ninguna parte. Solo existe "sobre" el PictureBox1 en el
que lo hayas dibujado. Como mucho podrías utilizar el api win32 BitBlt
para copiarlo, pero no tiene sentido.

Repasa el código que te he puesto de ejemplo. Consiste simplemente en
obtener el graphics de un Bitmap y no mediante CreateGraphics.

Te repito de nuevo el ejemplo que te he puesto, con un poco más de
detalle, por que me parece que no lo debes haber leido bien:

dim imagen as new Bitmap(ancho, alto)
dim lienzo as Graphics = Graphics.FromImage(imagen)
lienzo.FillRectangle(...)
...
PictureBox1.Image = imagen
ImageList1.Images.Add(imagen)


Juan Carlos Badiola
MVP - C#

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