2011-05-15 9 views
5

Quindi mi rendo conto che mi sto avventurando al di fuori dell'uso previsto di una tela qui e probabilmente dovrò trovare una soluzione più manuale. Tuttavia, non essendo eccessivamente esperto in WPF speravo che potesse esserci qualche soluzione che mi avrebbe permesso di continuare ad usare un controllo Canvas e le funzionalità che ti dà gratuitamente.Zoom in una tela senza modificare le dimensioni dei controlli figlio specifici

Il problema ruota attorno a una tela che viene utilizzata per ingrandire e ridurre un'immagine e un certo numero di controlli figlio che appartengono alla tela. Questi controlli figlio devono essere posizionati in varie posizioni sull'immagine e, come tale, la tela funziona bene in quanto gestisce tutto il layout/posizionamento per me quando eseguo lo zoom avanti o indietro.

Tuttavia, uno svantaggio è che la tela ridimensiona questi controlli secondari mentre zoomo nell'immagine, causandone la dimensione troppo grande da poter essere utilizzata nella pratica. Quello che sto cercando è una soluzione che mi permetta di ingrandire un'immagine che appartiene a una tela senza anche ingrandire le dimensioni dei controlli figlio, preferibilmente gestendo il layout per me.

Ho provato a modificare la larghezza e l'altezza di questi controlli figlio quando il fattore di zoom aumenta o diminuisce, ma c'è un leggero ritardo e tutto appare un po '"a scatti".

Se si tratta di esso, eseguirò semplicemente tutto lo zoom/panning/layout, ma ho pensato di chiederlo prima solo per assicurarmi che non mi manchi nulla che mi permetta di dire al Canvas di non ridimensiona le dimensioni di determinati controlli. Grazie in anticipo.

risposta

2

È possibile collegare RenderTransform bambini all'inverso della trasformazione della tela, vedere la risposta a this similar question on rotation.

+0

Grazie mille per la risposta qui, sembra proprio quello di cui ho bisogno. –

2

Questo è più di un pensiero che una risposta, ma cosa succede se si imposta una trasformazione sull'elemento che non si voleva ridimensionare che era l'opposto della tela stessa. Quindi, ad esempio, se il canvas ha una trasformazione di scala di 2.0, imposta l'elemento in modo che abbia una trasformazione di scala di 0,5. Probabilmente si potrebbe ottenere questo vincolando i valori di trasformazione usando un convertitore di valori.

Probabilmente vorrete assicurarvi che l'elemento abbia un'origine di trasformazione del rendering di 0,5,0.5 in modo che si riduca dal centro.

+0

Bel pensiero! Penso che funzionerà molto bene, ma non riesco a immaginare che non funzionerà. Grazie ancora, torna a codice non-ui per me ora :) –

Problemi correlati