Laden...

WPF -> Pixelumrechnung für Bilder

Erstellt von Kaji vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.997 Views
K
Kaji Themenstarter:in
593 Beiträge seit 2007
vor 13 Jahren
WPF -> Pixelumrechnung für Bilder

Hallo Community,

ich habe eine Frage bezüglich eine Frage zu WPF. So wie ich es gelesen und gelernt habe ist WPF nicht mehr Pixelorientiert sondern DPI oriniert. Zudem gibt man eigentlich nur noch an wo man etwas haben möchte und in welchem verhältniss. Dadurch skalieren Anwendungen wunderbar in WPF. Das ist auch schön.

Nun ist es aber in einer meiner Anwendungen das ich ein Bild anzeige. (Was je nach Auflösung und größe des aktuellen Programms verzehrt sein kann bzw. nicht 1:1 dargestellt wird) Über dieses Bild muss ich Boxen zur Auswahl von bereichen legen. Das ist jetzt an und für sich auch nicht so schwer. Aber ist es überhaupt möglich in WPF genau und zuverlässig ( auch unabhängig der DPI einstellungen ) zu errechnen welche Pixel die WPF Box im Bild genau markiert? Bzw. wie geht man dort am sinnvollsten damit um? Hat dort jemand schon ähnliche Erfahrungen gemacht?

Viele Grüße,

Kaji

L
862 Beiträge seit 2006
vor 13 Jahren

Hallo.

Du kannst WPF-Einheiten in Pixel umrechnen und umgekehrt.
Beim platzieren von Elementen per WPF können Ungenauigkeiten von 0-1Pixel entstehen die sich durch das setzen von SnapToDevicePixels ausgleichen lassen sofern deine Elemente nicht gedreht sind.

Bitte beachte auch dass solche Ungenauigkeiten auch entstehen können wenn du WPF-Einheiten in Pixel umrechnest da am Schluss immer Double-Zahlen herauskommen (sofern nicht 96dpi eingestellt sind).

K
Kaji Themenstarter:in
593 Beiträge seit 2007
vor 13 Jahren

Hallo Lector,

das bedeutet ich lege eine Box über das Bild. Muss dann erstmal das Image-Control in Pixel umrechnen. Dann muss ich umrechnung in welchen verhältniss meine Box über den Bild liegt um auch in Pixel umrechnen um zu wissen wo die Box ist in Pixel um dann die Verhätlnisse wie das Bild gedehnt, gestrecht, oder ähnliches umzurechnen nur um zu Wissen wo die Box in Pixel über dem Bild ist?

Gibt es dort nicht etwas eleganteres. Das klingt irgendwie nicht so richtig cool und elegant..^^

Viele Grüße,

Kaji

L
862 Beiträge seit 2006
vor 13 Jahren

Angenommen du hast eine Bitmap mit einer Größe von 100x100 Pixel.
Wenn du nun ein Image-Control mit dieser Bitmap anzeigst dann ist diese nicht 100 Pixel breit sondern 100 * (1/96 * dpi). Den eingeklammerten Wert kannst du auslesen.
Wenn du nun also ein WPF-Control so platzieren willst dass es genau über der Bitmap liegt musst du vorher die Bitmap-Größe auf WPF-Einheiten umrechnen und diese dann hernehmen um deine Box zu platzieren.

Das ist zugegeben etwas umständlich allerdings ergibt es durchaus Sinn dass WPF nicht mehr mit Pixeln sondern mit 'Geräteunabhängigen Einheiten' arbeitet. Wenn du auf diese Weise mit Bitmaps arbeitest musst du dafür allerdings ein klein wenig Mehraufwand tragen.