Hallo,
Ich bin gerade mit dem GDI (System.Drawing) Koordinatensystem auf Kriegsfuss.
Ich rendere (= x,y Koordinaten berechnen) meine Geometrische Form und zeichne sie danach über das Graphics Objekt in ein Bild.
In GDI/System.Drawing ist das Koordinatensystem allerdings an der y Achse gespiegelt, und daher stimmen oben/unten bez. links/rechts nicht.
Ich dachte mir, na was solls, transformiere ich halt das Koordinatnsystem mit der y Flip Matrix (1, 0, 0, -1, 0, 0) und verschiebe den Koordinaten-Ursprungspunkt in die untere linke Ecke, und meine Linien/bögen wurden korrekt gezeichnet.
Nur leider steht nun der Text auf dem Kopf o.0, was nach kurzem Nachdenken auch ganz verständlich war.
Meine Frage:
Wie gehe ich es am besten an, dass ich meine Figuren richtig zeichnen kann? Ich möchte nur sehr ungern bei meinen Koordinaten Berechnungen überall y * -1 rechnen... Was ist der eleganteste Weg?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| public void RenderForm() {
if (!IsInitialized) return;
if (FormFrame == null) return;
using (var G = Graphics.FromImage(FormFrame)){
G.SmoothingMode = SmoothingMode.AntiAlias; G.Clear(FORM_BACKGROUND_COLOR); G.Transform = Common.FlipY; G.TranslateTransform(0, -FormFrame.Size.Height);
foreach (var FormElement in FormElements) { try { FormElement.Geometry.Draw(G); } catch (Exception) { return; } } } } |