Frage

Ich erhalte Gleitkommazahlen wie (471, 326,723333333333) von MouseEventArgs.GetPosition() auf meiner Grenzkontrolle fordern. Während ich manuell die Zahlen immer rund, kann ich mich gefragt, ob es die Einstellung eine Art ist ganze Zahlen zu erhalten.

Ich dachte, setzen SnapsToDevicePixels auf True auf meinem Grenzkontrolle helfen würde, aber es funktioniert nicht, da es wahrscheinlich nicht verwandt ist.

Irgendwelche Ideen?

Danke!

War es hilfreich?

Lösung

In WPF, haben Sie immer Positionierung in Fließkommawerte zurück. Wenn Sie es runden möchten, müssen Sie dies manuell tun.

Dies ist aufgrund der Auflösung der Unabhängigkeit und ist konstruktionsbedingt.

Andere Tipps

Da WPF ist geräteunabhängig und nicht alle Geräte teilen die gleichen Größen Pixel mit Mouseevent fraktionieren Koordinaten macht Sinn vorbei (auch können Sie Steuerelemente im 3D-Raum gebracht, wo die ganze System Übersetzung Sachen koordinieren werden nicht mit integrierten Pixelwerten passieren) .

SnapsToDevicePixels ist nur eine Eigenschaft zu steuern, wie ein Steuerelement angezeigt wird, und dass Kanten und geraden Linien vorzugsweise auf vollständigen Pixeln liegen als dazwischen. Es hat nichts zu tun, wie Mausereignisse behandelt werden (wie Sie auch bemerkt haben).

Als allgemeine Faustregel gilt: alles in WPF ist in double Werte gemessen, also entweder mit ihr leben (Sie prüft wahrscheinlich das gleiche ohnehin wäre) oder weiter Rundung auf int, wenn Sie mögen, so: -)

Positionierung von der Maus ist stetig. Die Positionierung auf dem Monitor ist diskret. Die Koordinatenwerte Sie bekommen sind besser als das, was Sie brauchen, und Abrundung werden Sie immer die nächstgelegenen Pixel geben. Grundsätzlich runden es und mach dir keine Sorgen darüber.

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