7

我编写了一个小辅助函数,它执行某种相当复杂的绘图操作。

我从另一个类中调用这个函数,该类有时会对其进行转换。旋转和平移工作正常,但现在我想强制辅助函数将整个物体绘制在 y 轴上。

我试着用

g.ScaleTransform(0, -1);

在调用辅助函数之前,但它引发了异常。

那么,如何使用 System.Drawing.Graphics 对象绘制镜像呢?

4

2 回答 2

13

你需要打电话

g.ScaleTransform(1, -1);

请注意,现在您的图像将被绘制在屏幕上边缘的后面。要修复它,您需要调用g.TranslateTransformbefore g.ScaleTransform

g.TranslateTransform(0, YourImageHeightHere);
g.ScaleTransform(1, -1);
于 2011-08-06T10:09:44.180 回答
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,谢谢这是一个错字,我修正了它。

于 2011-08-06T09:57:24.687 回答