Pergunta

Imagine que eu tenho uma matriz de 2x2 ou 3x3 fotos e eu quero fazer uma grande figura usando estas fotos 4 ou 9. Quero mostrar esta imagem em um pictureBox.

Estou desenvolvendo um Windows Mobile App.

Como posso fazer isso?

Edit: Movido comentários a questão de esclarecimento ..

Normalmente, você asing uma imagem a uma pictureBox assim pictureBox.image = myImage. Quero construir myImage usando 4 imagens. Imagine que eu tenho uma imagem e cortá-lo em quatro pedaços quadrados. Eu quero usar estes 4 imagens para re-assamble o original.

Obrigado!

Foi útil?

Solução

Algo parecido com isto:

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;

Outras dicas

De qualquer lugar 4 och 9 PictureBoxes ao lado do outro ou usar um painel em vez de um PictureBox e tirar todas as imagens no evento Paint panles usando Graphics.DrawImage.

Isso deve funcionar, mas não foi testado:

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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top