Frage

Wie kann ich die Breite in Pixeln für eine Leinwand bestimmen (was eine bestimmte Breite hat)?

Ich habe eine Bitmap in einer Animationsimage -Steuerung und kenne die Breite der Bitmap in Pixel, und ich möchte die Bitmap so skalieren, dass sie horizontal genau zur Leinwand passt. Wie kann ich diese Skala bestimmen?

HINWEIS: Ich muss RendertargetBitMap nicht verwenden, da die Bitmap bereits geladen ist.

War es hilfreich?

Lösung

In WPF -Einheiten sind Geräteunabhängige. Die Formel, um die tatsächliche Pixelgröße einer Einheit herauszufinden, lautet:

Pixel pro WPF -Einheit = constantWPFunit -Größe * Monitor DPI;

Größe Ihres Elements in Pixel = Pixel pro WPF -Einheit * MyElement.

Die konstante WPF -Einheitsgröße beträgt 1/96. Wenn ich mich korrekt erinnere, kann der Monitor -DPI als Eigenschaften in der Klasse gefunden werden, die von SystemInformation zurückgegeben wurden.

Die tatsächliche Breite eines FrameworkElements befindet sich in Geräteunabhängigen Einheiten und ist die Breite, die das Element nach dem Layout tatsächlich aufnimmt. Multiplizieren Sie diese Eigenschaft einfach mit den Pixel pro WPF -Einheit, die Sie oben berechnen, und Sie werden Ihre Antwort haben.

Ich habe den Verdacht, dass Sie jedoch viel manuelles Codieren tun. Das Dehnen von Bildern und anderen visuellen Elementen auf gewünschte Weise kann normalerweise einfach erreicht werden, indem Eigenschaften auf der betreffenden Steuerung/Pinsel festgelegt werden. Haben Sie versucht, Horizontalalignment = "Stretch" und Verticalalignment = "Zentrum" für das Element, das die Bitmap enthält, zu machen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top