我编写了一个小辅助函数,它执行某种绘制操作,这些操作相当复杂。
我从另一个类中调用此函数,该类有时会对其应用转换。旋转和平移工作正常,但现在我想强制辅助函数绘制在y轴上镜像的整个事物。
我尝试使用
g.ScaleTransform(0, -1);
在调用辅助函数之前,但它抛出异常。
那么,如何使用System.Drawing.Graphics对象绘制镜像?
答案 0 :(得分:12)
您需要致电
g.ScaleTransform(1, -1);
请注意,现在您的图像将被绘制在屏幕上方边缘之后。要解决此问题,您需要在g.TranslateTransform
之前致电g.ScaleTransform
:
g.TranslateTransform(0, YourImageHeightHere);
g.ScaleTransform(1, -1);
答案 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;
}
编辑:@MattSlay,谢谢这是一个错字,我修好了。