Das WPF Canvas hat ein Koordinatensystem, das bei (0,0) oben links im Steuerelement beginnt.WPF: Wie man das (0,0) in der Mitte eines Canvas erzeugt
Zum Beispiel die folgende Einstellung meiner Kontrolle erscheinen auf der oberen linken:
<Control Canvas.Left="0" Canvas.Top="0">
Wie kann ich es zum Standard cartesian coordinates ändern?
Grundsätzlich:
- (0,0) in der Mitte
- Flip Y
I bemerkte this post ähnlich ist, aber es spricht nicht über das Koordinatensystem zu übersetzen. Ich habe versucht, eine TranslateTransform hinzuzufügen, aber ich kann es nicht funktionieren lassen.
ok, das war was ich dachte. Danke, du hast es bestätigt. – decasteljau
Leider ist diese Antwort falsch :-(. Eine benutzerdefinierte Leinwand ist viel mehr Arbeit als nötig: Sie können genau denselben Effekt ohne Arbeit erzielen, indem Sie die Leinwandhöhe/-breite auf Null setzen, sie in ihrem Behälter zentrieren und spiegeln es auf render. Siehe meine Antwort. –
Ich stimme Ihrer Antwort @ Ray, aber wenn Sie eine re aisable Lösung, dann empfehle ich nicht Ihre Antwort., was bedeutet, wenn ich mein Kind Canvas.Left = 0,5 und Canvas. Oben = 0,5, wenn Sie die Größe des übergeordneten Fensters/Canvas ändern, wird die untergeordnete Position total durcheinander gebracht.Aber wenn Sie ein richtiges benutzerdefiniertes Steuerelement schreiben (nur 10-15 Zeilen Code), wird es immer auf (0.5.0.5) positioniert. Daher empfehle ich, ein benutzerdefiniertes Panel zu schreiben - Dieses resultierende 'UnitPanel' ist ein sehr nützliches als normales Canvas. :) –