如何使用数组镜像图像

时间:2015-10-21 18:26:19

标签: c#

我需要镜像图像并将其显示如下:

enter image description here

要显示如下:

enter image description here

这是我的代码到目前为止,我没有运气:

int Height = TransformedPic.GetLength(0);
int Width = TransformedPic.GetLength(1);

for (int i = 0; i < Height; i++)//loop rows
{
    for (int j = 0; j < Width; j++)//loop columns
    {
        TransformedPic[i, j] = TransformedPic[i, ((2 * Width) - (j + 1))];
    }
}

2 个答案:

答案 0 :(得分:3)

Image.RotateFlip将更快更轻松地完成工作:

Bitmap bmp1 = (Bitmap)pictureBox1.Image;
Bitmap bmp2 = new Bitmap(bmp1.Width * 2, bmp1.Height);

using (Graphics G = Graphics.FromImage(bmp2))
{
    G.DrawImage(bmp1, 0, 0);
    bmp1.RotateFlip(RotateFlipType.RotateNoneFlipX);
    G.DrawImage(bmp1, bmp1.Width, 0);
    pictureBox2.Image = bmp2;
}

enter image description here

相反,您可以使用类似于您的循环以及Bitmap.GetPixelBitmap.SetPixel,但这会非常慢:

TransformedPic.SetPixel(Width - i, j, TransformedPic.GetPixel(i,j));

超过宽度的一半..

答案 1 :(得分:0)

或者你可以在一行中这样做:

picBox.Image.RotateFlip(RotateFlipType.RotateNoneFlipX)