/ / Rysuj dublowany w C # za pomocą System.Drawing.Graphics - c #, winforms, grafika, transformacja, lustro

Narysuj odbicie lustrzane w C # za pomocą System.Drawing.Graphics - c #, winformy, grafika, transformacja, lustro

Napisałem małą funkcję pomocnika, która wykonuje pewne operacje rysowania, które są dość złożone.

Nazywam tę funkcję inną klasą, któraczasami stosuje do tego transformacje. Obracanie i tłumaczenie działa dobrze, ale teraz chcę zmusić funkcję pomocnika, aby narysowała całość odzwierciedloną na osi y.

Próbowałem użyć

g.ScaleTransform(0, -1);

przed wywołaniem funkcji pomocnika, ale zgłosił wyjątek.

Jak więc można rysować w odbiciu lustrzanym za pomocą obiektu System.Drawing.Graphics?

Odpowiedzi:

11 dla odpowiedzi nr 1

Musisz zadzwonić

g.ScaleTransform(1, -1);

Zauważ, że teraz twój obraz zostanie narysowany za górną krawędzią ekranu. Aby to naprawić, musisz zadzwonić g.TranslateTransform przed g.ScaleTransform:

g.TranslateTransform(0, YourImageHeightHere);
g.ScaleTransform(1, -1);

1 dla odpowiedzi nr 2

W ten sposób robi się to z bitmapą, możesz narysować obraz z grafiki i przerysować obiekt graficzny za pomocą zmodyfikowanego.

    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;
}

Edycja: @MattSlay, dzięki, że to literówka, naprawiłem to.