2009-07-27 13 views
12

Ho un sacco di punti dati che vorrei legare in due direzioni a punti su una tela.Come modificare l'origine x, y della tela in basso a sinistra e capovolgere le coordinate y?

I punti assumono valori y maggiori si riflettono in una direzione verso l'alto come la maggior parte dei grafici matematici.

Come modificare l'origine x, y della tela nell'angolo in basso a sinistra e invertire l'interpretazione della coordinata y?

(mi piacerebbe rimanere in XAML)

+0

Ciao, so che questo è vecchio ma hai funzionato a doppio senso? Sto cercando di selezionare il punto (i) facendo clic su di esso –

risposta

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

Grazie per questo, ma non sono ScaleX, CentreX e CenterY ridondanti? Basta usare ScaleY = "- 1" sembra fare il trucco. Inoltre, altri fanno attenzione che questo capovolgerà anche qualsiasi testo capovolto. –

+3

sì le altre proprietà sono ridondanti, ma è convenzione (da quello che ho visto) includere tali proprietà. E sì, capovolgerà il testo, ma se stai disegnando i punti dovresti essere ok. se hai bisogno di disegnare del testo, puoi disegnarlo su una seconda tela trasparente che si trova in cima al grafico Canvas – kenwarner

+0

@qntmfred, qualsiasi esempio di implementazione di implementazione del testo. perché il sistema di punti influenza anche il posizionamento del testo – RobinAtTech

0

Se si utilizza l'associazione dati è possibile utilizzare un TypeConvertor, ma per questo si deve andare al di fuori della XAML e avete bisogno di conoscere la dimensione della tela in anticipo.

+0

Ciao, cosa intendi per associazione dati? Sto provando a selezionare punti facendo clic su di essi. TypeConverter ha qualcosa a che fare con questo? –

0

Probabilmente creerei un pannello personalizzato invece di usare Canvas e dargli le proprietà allegate che hanno senso per le tue esigenze. Ecco un esempio di implementazione di un pannello personalizzato:

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

Qualcosa di simile Canvas è molto semplice dal momento che non c'è bisogno di fare molto nella misura e organizzare le sostituzioni.

Potresti anche essere in grado di ereditare da Canvas e sovrascrivere ArrangeOverride, non l'ho provato ma potrebbe funzionare.

+0

Bill, non dici cosa c'è di sbagliato nell'usare Canvas? –

+0

Beh, non vedo come puoi farlo con una tela dritta, se la riduci -1 in Y tutto sarà capovolto. Immagino che potresti anche scalare tutti gli elementi -1. –

0

Ho provato il metodo ScaleTransform in modo estensivo: non funziona. Cambia solo una delle 2 coordinate, mai entrambe. Questo, tuttavia, funziona come pubblicizzato:

<Canvas Name="myCanvas" Width="0" Height="0" RenderTransform="1 0 0 -1 0 0" 
    HorizontalAlignment="Center" VerticalAlignment="Center" > 
Problemi correlati