C # Сделать одну фотографию, используя различные картинки - PullRequest
2 голосов
/ 24 февраля 2009

Представьте, что у меня есть матрица изображений 2х2 или 3х3, и я хочу сделать одно большое изображение, используя эти 4 или 9 изображений. Я хочу показать эту картинку на картинке.

Я занимаюсь разработкой приложения для Windows Mobile.

Как я могу это сделать?

Редактировать: перемещены комментарии к вопросу для уточнения ..

Обычно вы отправляете изображение на картинку, например, pictureBox.image = myImage. Я хочу построить myImage, используя 4 изображения. Представь, что у меня есть изображение и разрезай его на четыре части. Я хочу использовать эти 4 изображения для повторной сборки исходного.

Спасибо!

Ответы [ 3 ]

5 голосов
/ 24 февраля 2009

Примерно так:

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;
0 голосов
/ 24 февраля 2009

Это должно работать, но не проверено:

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;
}
0 голосов
/ 24 февраля 2009

Либо поместите 4 или 9 PictureBox рядом друг с другом, либо используйте Panel вместо PictureBox и нарисуйте все изображения в событии Panles Paint, используя Graphics.DrawImage.

...