C # Создайте одно изображение, используя различные изображения
-
06-09-2019 - |
Вопрос
Представьте, что у меня есть матрица из картинок 2x2 или 3x3, и я хочу сделать одну большую картинку, используя эти 4 или 9 картинок.Я хочу показать эту картинку в PictureBox.
Я разрабатываю приложение для Windows Mobile.
Как я могу это сделать?
Редактировать:Перенес комментарии к вопросу для уточнения..
Обычно вы добавляете изображение в PictureBox следующим образом pictureBox.image = myImage
.Я хочу создать свой образ, используя 4 изображения.Представьте, что у меня есть изображение, и вырежьте его на четыре квадратные части.Я хочу использовать эти 4 изображения для повторной сборки исходного.
Спасибо!
Решение
Что- то вроде этого:
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;
Другие советы
Либо разместите 4 или 9 графических полей рядом друг с другом, либо используйте панель вместо графического поля и нарисуйте все изображения в событии рисования панелей с помощью графики.Нарисуйте изображение.
Это должно сработать, но не проверено:
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;
}