C # fare una foto utilizzando varie immagini
-
06-09-2019 - |
Domanda
Immaginate che ho una matrice di 2x2 o 3x3 immagini e voglio fare un grande quadro utilizzando questi 4 o 9 immagini. Voglio mostrare questa immagine su un pictureBox.
sto sviluppando un Windows Mobile App.
Come posso fare questo?
Modifica: Spostato commenti a mettere in discussione per chiarimenti ..
Normalmente si Asing un'immagine a una pictureBox come questo pictureBox.image = myImage
. Voglio costruire myImage con 4 immagini. Immaginate che ho un'immagine e tagliarlo in quattro pezzi squadrati. Voglio usare questi 4 immagini per ri-assamble quella originale.
Grazie!
Soluzione
Qualcosa di simile a questo:
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;
Altri suggerimenti
In ogni posto 4 och 9 PictureBoxes accanto all'altra o utilizzare un pannello al posto di un PictureBox e disegnare tutte le immagini nell'evento Paint panles utilizzando Graphics.DrawImage.
Questo dovrebbe funzionare, ma non è testato:
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;
}