7

ある種の描画操作を実行する小さなヘルパー関数を作成しましたが、これはかなり複雑です。

この関数は、変換を適用する別のクラスから呼び出します。回転と平行移動は正常に機能しますが、ヘルパー関数に y 軸にミラーリングされた全体を強制的に描画させたいと考えています。

使ってみた

g.ScaleTransform(0, -1);

ヘルパー関数を呼び出す前ですが、例外がスローされました。

では、System.Drawing.Graphics オブジェクトを使用してミラーリングされた描画を行うにはどうすればよいでしょうか?

4

2 に答える 2

13

電話する必要があります

g.ScaleTransform(1, -1);

画像が画面の上端の後ろに描画されることに注意してください。g.TranslateTransformそれを修正するには、前に呼び出す必要があります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 に答える