Dividir una imagen en Varias

25/09/2003 - 11:55 por Gandalf | Informe spam
Hola, tengo un Bitmap con varios botones y quisiera sacar cada uno para un
Bitmap independiente. Me gustaría que me comentarais si hay alguna forma
mejor de hacerlo que la que actualmente utilizo:

//Bitmap con todos los botones
bm=new Bitmap(GetType(),"botones.bmp");

//extraer primer botón
bmNada=new Bitmap(16,16);
Graphics grfx=Graphics.FromImage(bmNada);
Rectangle rect=new Rectangle(0,16*0,16,16);
grfx.DrawImage(bm,0,0,rect,GraphicsUnit.Pixel);
grfx.Dispose();

//extraer último botón
bmSinDescubrir=new Bitmap(16,16);
grfx=Graphics.FromImage(bmSinDescubrir);
rect.Y*15;
grfx.DrawImage(bm,0,0,rect,GraphicsUnit.Pixel);
grfx.Dispose();

Gracias y Un Saludo.

Preguntas similare

Leer las respuestas

#1 Leonardo Diez
25/09/2003 - 12:23 | Informe spam
Hola Gandalf,
No se a qué te refieres con una forma mejor, pero en pricipio podrías
utilizar un for:

const int CANT_BOTONES = 15;
Bitmap bm=new Bitmap(GetType(),"botones.bmp");

Rectangle rect=new Rectangle(0,0,16,16);

for (int i=0; i<CANT_BOTONES; i++) {
bmTemp=new Bitmap(16,16);
Graphics grfx=Graphics.FromImage(bmTemp);
rect.Y = 16*i;
grfx.DrawImage(bm,0,0,rect,GraphicsUnit.Pixel);
grfx.Dispose();
}

Con respecto a no crear un objeto Graphics para cada imagen, creo que no es
posible evitarlo.

saludos,
Leonardo Diez
MCSD -
Equipo Técnico Grupo Danysoft

"Gandalf" escribió en el mensaje
news:
Hola, tengo un Bitmap con varios botones y quisiera sacar cada uno para un
Bitmap independiente. Me gustaría que me comentarais si hay alguna forma
mejor de hacerlo que la que actualmente utilizo:

//Bitmap con todos los botones
bm=new Bitmap(GetType(),"botones.bmp");

//extraer primer botón
bmNada=new Bitmap(16,16);
Graphics grfx=Graphics.FromImage(bmNada);
Rectangle rect=new Rectangle(0,16*0,16,16);
grfx.DrawImage(bm,0,0,rect,GraphicsUnit.Pixel);
grfx.Dispose();

//extraer último botón
bmSinDescubrir=new Bitmap(16,16);
grfx=Graphics.FromImage(bmSinDescubrir);
rect.Y*15;
grfx.DrawImage(bm,0,0,rect,GraphicsUnit.Pixel);
grfx.Dispose();

Gracias y Un Saludo.


Respuesta Responder a este mensaje
#2 Gandalf
25/09/2003 - 13:58 | Informe spam
Gracias Leonardo, a eso precisamente me referia, a crear un Objeto Graphics
para cada imagen(no termina de gustarme), y de paso saber si alguien conocia
otro método.

Saludos.
Respuesta Responder a este mensaje
#3 Leonardo Diez
25/09/2003 - 14:15 | Informe spam
Se me ocurre algo, ¿que pasa si generas el Bitmap y el Graphics asociado
antes del for, y en el for vas "pegando" las partes en la misma imagen. Para
no perder la imagen anterior, puedes guardarla en un fichero, o hacer un
clone. Me explico en código:

const int CANT_BOTONES = 15;
Bitmap bm=new Bitmap(GetType(),"botones.bmp");

Rectangle rect=new Rectangle(0,0,16,16);
Bitmap bmTemp=new Bitmap(16,16);
Graphics grfx=Graphics.FromImage(bmTemp);

for (int i=0; i<CANT_BOTONES; i++) {
rect.Y = 16*i;
grfx.DrawImage(bm,0,0,rect,GraphicsUnit.Pixel);
GuardarImagen(bmTemp, i);
}

luego el método GuardarImagen puede ser así:

void GuardarImagen(Bitmap b, int i){
b.Save("imagen" + i + ".bmp")
}

o asi:

void GuardarImagen(Bitmap b, int i){
imagenes[i] = b.Clone();
}

donde imagenes es un array de objetos Bitmap definida asi:
Bitmap[] imagenes = new Bitmap[CANT_BOTONES];

Ojala esto te sirva.

saludos,
Leonardo Diez
MCSD -
Equipo Técnico Grupo Danysoft

"Gandalf" escribió en el mensaje
news:
Gracias Leonardo, a eso precisamente me referia, a crear un Objeto


Graphics
para cada imagen(no termina de gustarme), y de paso saber si alguien


conocia
otro método.

Saludos.


Respuesta Responder a este mensaje
#4 Gandalf
25/09/2003 - 16:15 | Informe spam
Gracias Leonardo, a eso precisamente me referia, a crear un Objeto Graphics
para cada imagen(no termina de gustarme), y de paso saber si alguien conocia
otro método.

Saludos.
Respuesta Responder a este mensaje
#5 Gandalf
26/09/2003 - 10:47 | Informe spam
Perfecto, muchas gracias Leonardo.
"Leonardo Diez" escribió en el mensaje
news:%
Se me ocurre algo, ¿que pasa si generas el Bitmap y el Graphics asociado
antes del for, y en el for vas "pegando" las partes en la misma imagen.


Para
no perder la imagen anterior, puedes guardarla en un fichero, o hacer un
clone. Me explico en código:

const int CANT_BOTONES = 15;
Bitmap bm=new Bitmap(GetType(),"botones.bmp");

Rectangle rect=new Rectangle(0,0,16,16);
Bitmap bmTemp=new Bitmap(16,16);
Graphics grfx=Graphics.FromImage(bmTemp);

for (int i=0; i<CANT_BOTONES; i++) {
rect.Y = 16*i;
grfx.DrawImage(bm,0,0,rect,GraphicsUnit.Pixel);
GuardarImagen(bmTemp, i);
}

luego el método GuardarImagen puede ser así:

void GuardarImagen(Bitmap b, int i){
b.Save("imagen" + i + ".bmp")
}

o asi:

void GuardarImagen(Bitmap b, int i){
imagenes[i] = b.Clone();
}

donde imagenes es un array de objetos Bitmap definida asi:
Bitmap[] imagenes = new Bitmap[CANT_BOTONES];

Ojala esto te sirva.

saludos,
Leonardo Diez
MCSD -
Equipo Técnico Grupo Danysoft

"Gandalf" escribió en el mensaje
news:
> Gracias Leonardo, a eso precisamente me referia, a crear un Objeto
Graphics
> para cada imagen(no termina de gustarme), y de paso saber si alguien
conocia
> otro método.
>
> Saludos.
>
>


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