Domanda

Come posso determinare la larghezza in pixel per una tela (che ha una certa larghezza)?

Ho una bitmap in un controllo AnimatedImage e conosco la larghezza della bitmap in pixel e desidero ridimensionare la bitmap in modo che si adatti perfettamente alla tela. Come posso determinare questa scala?

Nota: non è necessario utilizzare RenderTargetBitmap, poiché la bitmap è già caricata.

È stato utile?

Soluzione

In WPF le unità sono indipendenti dal dispositivo. La formula per capire la dimensione effettiva dei pixel di un'unità è:

Pixel per unità WPF = Dimensione unità ConstantWPF * monitor DPI;

Dimensione del tuo elemento in pixel = Pixel per unità WPF * MyElement.ActualWidth

La dimensione costante dell'unità WPF è 1/96. Se ricordo correttamente il DPI monitor può essere trovato come proprietà nella classe restituita da SystemInformation.GetPrimaryMonitor o qualcosa di simile.

ActualWidth di un FrameworkElement è in unità indipendenti dal dispositivo ed è la larghezza effettivamente occupata dall'elemento dopo l'esecuzione del layout. Basta moltiplicare questa proprietà per i pixel per unità WPF calcolati sopra e avrai la tua risposta.

Ho il sospetto che tu stia facendo molta codifica manuale comunque. Lo stiramento di immagini e altri elementi visivi in ??qualsiasi modo desiderato di solito può essere realizzato semplicemente impostando le proprietà sul controllo / pennello in questione. Hai provato a creare HorizontalAlignment = " Stretch " e VerticalAlignment = " Center " per l'elemento che contiene la bitmap?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top