2009-07-27 21 views
12

Mam kilka punktów danych, które chciałbym dwukierunkowego powiązania z punktów na płótnie.Jak zmienić x, y pochodzenie płótna w lewym dolnym rogu i odwrócić współrzędne y?

Punkty przyjmują, że większe wartości y są odbijane w górę, jak większość wykresów matematycznych.

Jak zmienić pochodzenie x, y płótna w lewym dolnym rogu i odwrócić jego interpretację współrzędnej y?

(chciałbym zatrzymać się w XAML)

+0

Witam Wiem, że to jest stare, ale czy działa to dwukierunkowo? Próbuję wybrać punkt (y), klikając na niego. –

Odpowiedz

22
<Canvas> 
    <Canvas.LayoutTransform> 
     <ScaleTransform ScaleX="1" ScaleY="-1" CenterX=".5" CenterY=".5" /> 
    </Canvas.LayoutTransform> 
</Canvas> 
+3

Dzięki za to, ale czy ScaleX, CentreX i CenterY nie są nadmiarowe? Wystarczy użyć ScaleY = "- 1". Pamiętaj też, że spowoduje to przewrócenie tekstu do góry nogami. –

+3

Tak, inne właściwości są zbędne, ale to konwencja (z tego, co widziałem), aby zawrzeć te właściwości. I tak, to odwróci tekst, ale jeśli tylko rysujesz punkty, powinno być dobrze. jeśli chcesz narysować tekst, możesz narysować go na drugim przezroczystym płótnie znajdującym się na górze wykresu Płótno – kenwarner

+0

@qntmfred, dowolna przykładowa implementacja implementacji tekstu. ponieważ system punktowy wpłynie również na umieszczanie tekstu – RobinAtTech

0

jeśli używasz Databinding można użyć TypeConvertor, ale do tego trzeba wyjść na zewnątrz XAML i trzeba znać rozmiar płótna wcześniej.

+0

Witam, co masz na myśli przez powiązanie danych? Próbuję wybrać punkty, klikając je. TypeConverter ma coś z tym wspólnego? –

0

Najprawdopodobniej utworzę niestandardowy panel, zamiast używać Canvas i nadaję mu właściwości, które pasują do twoich potrzeb. Oto przykład wdrożenia panel niestandardowy:

http://blog.boschin.it/articles/silverlight-radialpanel.aspx

Coś płótnie jest bardzo prosta, ponieważ nie mają wiele do zrobienia w tej mierze i zorganizować przesłonięcia.

Możesz również być w stanie dziedziczyć z Canvas i przesłonić ArrangeOverride, nie próbowałem tego, ale może działać.

+0

Bill, nie mówisz, co jest nie tak z używaniem Canvas? –

+0

Cóż, nie widzę sposobu, w jaki można to zrobić za pomocą prostego płótna, jeśli skaluje się je -1 w Y, wszystko zostanie odwrócone. Myślę, że możesz skalować także wszystkie elementy -1. –

0

Próbowałem szeroko metody ScaleTransform: To nie działa. Przesuwa tylko jedną z dwóch współrzędnych, nigdy obie. Działa to jednak jak w reklamie:

<Canvas Name="myCanvas" Width="0" Height="0" RenderTransform="1 0 0 -1 0 0" 
    HorizontalAlignment="Center" VerticalAlignment="Center" > 
Powiązane problemy