我想镜像我的图像,以便原始图像和镜像图像并排显示。唯一的问题是,我不知道如何扩展原始图像的范围,以便在其旁边添加镜像图像。
使用我的代码(下面)我设法创建镜像图像,只是我不能同时显示原始图像和镜像图像。
我的代码,
int Height = TransformedPic.GetLength(0);
int Width = TransformedPic.GetLength(1);
for (int i = 0; i < Height / 2; i++)
{
for (int j = 0; j < Width; j++)
{
var Temporary = TransformedPic[i, j];
TransformedPic[i, j] = TransformedPic[Height - 1 - i, j];
TransformedPic[Height - 1 - i, j] = Temporary;
}
}
TransformedPic
是保存原始图片的变量
答案 0 :(得分:3)
第1步:镜像图像。 要做到这一点,应用负面的sacaletransform。喜欢
new ScaleTransform() { ScaleX = -1 };
然后并排合并两个图像。 你可以在这里看到它,如何合并Two images。
这是另一种方式:
//Get Your Image from Picturebox
Bitmap image1 = new Bitmap(pictureBox1.Image);
//Clone it to another bitmap
Bitmap image2 = (Bitmap)image1.Clone();
//Mirroring
image2.RotateFlip(RotateFlipType.RotateNoneFlipX);
//Merge two images in bitmap image,
Bitmap bitmap = new Bitmap(image1.Width + image2.Width, Math.Max(image1.Height, image2.Height));
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawImage(image1, 0, 0);
g.DrawImage(image2, image1.Width, 0);
}
//Show them in a picturebox
pictureBox2.Image = bitmap;
答案 1 :(得分:1)
这是使用BitMap完成的方式,您可以从图形中绘制图像并使用修改过的图形对象重绘图形对象。
public Bitmap MirrorImage(Bitmap source)
{
Bitmap mirrored = new Bitmap(source.Width, source.Height);
for(int i = 0; i < source.Height; i++)
for(int j = 0; j < source.Width; j++)
mirrored.SetPixel(i, j, source.GetPixel(source.Width - j - 1, i);
return mirrored;
}