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 1Musisz 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.