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!

È stato utile?

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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top