C # hacer una imagen usando varios cuadros
-
06-09-2019 - |
Pregunta
Imagínese que tengo una matriz de 2x2 o 3x3 imágenes y quiero hacer un panorama general el uso de estos 4 o 9 imágenes. Quiero mostrar esta imagen en un cuadro de imagen.
Estoy desarrollando una aplicación móvil de Windows.
¿Cómo puedo hacer esto?
Editar: Movido comentarios a la pregunta de aclaración ..
Normalmente Asing una imagen en un cuadro de imagen como esta pictureBox.image = myImage
. Quiero construir myImage usando 4 imágenes. Imagínese que tengo una imagen y cortarlo en cuatro trozos cuadrados. Quiero usar estas 4 imágenes de volver a Psobilidad la original.
Gracias!
Solución
Algo como esto:
Bitmap bitmap = new Bitmap(totalWidthOfAllImages, totalHeightOfAllImages);
using(Graphics g = Graphics.FromBitmap(bitmap))
{
foreach(Bitmap b in myBitmaps)
g.DrawImage(/* do positioning stuff based on image position */)
}
pictureBox1.Image = bitmap;
Otros consejos
De cualquier lugar 4 och 9 PictureBoxes uno junto al otro o utilizar un panel en lugar de un cuadro de imagen y extraer todas las imágenes en el evento Paint panles usando Graphics.DrawImage.
Esto debería funcionar, pero no se ha probado:
private Image BuildBitmap(Image[,] parts) {
// assumes all images are of equal size, assumes arrays are 0-based
int xCount = parts.GetUpperBound(0) + 1;
int yCount = parts.GetUpperBound(0) + 1;
if (xCount <= 0 || yCount <= 0)
return null; // no images to join
int width = parts[0,0].Width;
int height = parts[0,0].Height;
Bitmap newPicture = new Bitmap(width * xCount, height * yCount);
using (Graphics g = Graphics.FromImage(newPicture)) {
for (int x = 0; x < xCount; x++)
for (int y = 0; y < yCount; y++)
g.DrawImage(parts[x, y], x * width, y & height);
}
return newPicture;
}