使用System.Drawing.Graphics在c#中绘制镜像
本文关键字:绘制 镜像 System Drawing Graphics 使用 | 更新日期: 2023-09-27 18:04:35
我写了一个小的辅助函数,它执行某种绘图操作,这是相当复杂的。
我从另一个类中调用这个函数,这个类有时会对它进行转换。旋转和平移都可以,但现在我想强制辅助函数把整个东西映射到y轴上。
我试图使用
g.ScaleTransform(0, -1);
之前调用辅助函数,但它抛出了一个异常。
那么,如何使用System.Drawing.Graphics对象绘制镜像呢?
你需要调用
g.ScaleTransform(1, -1);
注意,现在您的图像将绘制在屏幕上边缘的后面。要解决这个问题,您需要在g.ScaleTransform
之前调用g.TranslateTransform
:
g.TranslateTransform(0, YourImageHeightHere);
g.ScaleTransform(1, -1);
这就是位图的实现方式,您可以从图形中绘制图像,并使用修改后的图形对象重新绘制图形对象。
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;
}
编辑:@MattSlay,谢谢,这是一个打字错误,我修复了。