Решения этой проблемы могут быть различными, и это в основном зависит от ваших навыков, а объем работы будет зависеть от типа изображений, с которыми вы имеете дело. Например, если изображения всегда имеют одинаковое разрешение, размер и перекрывающиеся изображения поддерживают прозрачность, вы можете попробовать манипулировать двумя Image
объектами и рисовать один над другим, а затем отобразить его в PictureBox
. Или, если вам нужно будет сделать это несколько раз в разных местах вашего приложения, вы можете даже подумать о создании собственного UserContriol
.
Код в ответе на этот вопрос , метод ResizeImage
, в частности, покажет, как создать изменяемое изображение хорошего качества, все, что вам нужно, это немного изменить его. Сделайте так, чтобы получить два Images
в качестве входных параметров, и измените его так, чтобы рисовать одно изображение поверх другого.
Изменения могут выглядеть следующим образом
public static Bitmap CombineAndResizeTwoImages(Image image1, Image image2, int width, int height)
{
//a holder for the result
Bitmap result = new Bitmap(width, height);
//use a graphics object to draw the resized image into the bitmap
using (Graphics graphics = Graphics.FromImage(result))
{
//set the resize quality modes to high quality
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//draw the images into the target bitmap
graphics.DrawImage(image1, 0, 0, result.Width, result.Height);
graphics.DrawImage(image2, 0, 0, result.Width, result.Height);
}
//return the resulting bitmap
return result;
}
И используйте его, например, так:
pictureBox1.Image = CombineAndResizeTwoImages(Image.FromFile("c:\\a.png"), Image.FromFile("c:\\b.png"), 100,100);
Но это единственный пример, и вы должны настроить его под свои нужды.
Удачи.