我需要镜像图像并将其显示如下:
要显示如下:
这是我的代码到目前为止,我没有运气:
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))];
}
}
答案 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;
}
相反,您可以使用类似于您的循环以及Bitmap.GetPixel
和Bitmap.SetPixel
,但这会非常慢:
TransformedPic.SetPixel(Width - i, j, TransformedPic.GetPixel(i,j));
超过宽度的一半..
答案 1 :(得分:0)
或者你可以在一行中这样做:
picBox.Image.RotateFlip(RotateFlipType.RotateNoneFlipX)