Najczęstsze pytanie dotyczące umieszczania elementu wewnątrz Canvas
brzmi "Jak ustawić środek elementu (zamiast Górny lewy róg)".Pozycjonowanie elementu wewnątrz płótna za jego środek (zamiast lewego górnego rogu) za pomocą tylko XAML w Silverlight/WinRT
- WPF: Resizing a circle, keeping the center point instead of TopLeft?
- WPF Center Ellipse at X, Y
- WPF element positioning on a Canvas
Kilka rozwiązania są prezentowane, ale wszystkie one mają wady.
Czy istnieje prosty (tylko XAML) metoda, aby umieścić element wewnątrz płótno tak, że jego Canvas.Left
i Canvas.Top
odpowiadają środka elementu i obie wielkość i położenie właściwości mogą być zobowiązane do niektórych innych właściwości?
Znalazłem bardzo prosty sposób, aby to zrobić w WPF (wystarczy ustawić Margin="-1000000"
Positioning an element inside the Canvas by its center (instead of the top left corner) using only XAML in WPF), ale to nie działa dla Silverlight/WinRT. Jedyną inną znaną mi metodą jest wykonanie ValueConverter
w celu wykonania obliczeń x *= -0.5
(która nie jest tylko XAML).
Dość genialny! Próbowałem rozwiązać system z kilkoma równaniami transformacji, aby dojść do takiego rozwiązania, ale się nie udało. Ta podwójna transformacja ładnie działa. P.S. Wartości RenderTransformOrigin mogą również wynosić '0,0'; "0.25,0.25" lub "-0.25, -0.25"; "0,0". Muszą tylko spełniać równanie 'Internal - External = 1/4'. –