使用System.Drawing.Graphics在c#中绘制镜像

本文关键字:绘制 镜像 System Drawing Graphics 使用 | 更新日期: 2023-09-27 18:04:35

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

我从另一个类中调用这个函数,这个类有时会对它进行转换。旋转和平移都可以,但现在我想强制辅助函数把整个东西映射到y轴上。

我试图使用

g.ScaleTransform(0, -1);

之前调用辅助函数,但它抛出了一个异常。

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

使用System.Drawing.Graphics在c#中绘制镜像

你需要调用

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,谢谢,这是一个打字错误,我修复了。