Question

Je reçois des valeurs à virgule flottante comme (471, 326,723333333333) d'appeler MouseEventArgs.GetPosition() sur mon contrôle des frontières. Alors que je peux toujours autour des chiffres, je manuellement demandais s'il y a une sorte de mise à obtenir des nombres entiers.

Je pensais mettre SnapsToDevicePixels à vrai sur mon contrôle des frontières aiderait mais il n'a pas, comme il est probablement sans rapport.

Toutes les idées?

Merci!

Était-ce utile?

La solution

Dans WPF, vous aurez toujours le positionnement retourné des valeurs en virgule flottante. Si vous voulez arrondir, vous devrez le faire manuellement.

Ceci est dû à l'indépendance de la résolution, et par la conception.

Autres conseils

Depuis WPF est indépendant de l'appareil et tous les appareils partagent la taille même de pixels passant MouseEvents avec coordonnées fractionnaires est logique (vous pouvez également mettre des contrôles dans l'espace 3D où l'ensemble de coordonner des trucs de traduction du système ne se produira pas avec des valeurs de pixel intégrales) .

SnapsToDevicePixels est juste un bien contrôler la façon dont un contrôle est affiché et en ce que les bords et les lignes droites se trouvent de préférence sur des pixels complets que dans l'intervalle. Il n'a rien à voir avec la façon dont les événements de souris sont traitées (comme vous l'avez remarqué).

En règle générale, tout en WPF est mesurée en valeurs double, donc soit vivre avec elle (vous vérifie serait probablement le même de toute façon) ou de continuer arrondi à int si vous aimez si: -)

Positionnement de votre souris est continue. Positionnement sur votre moniteur est discret. Les valeurs des coordonnées que vous obtenez sont meilleurs que ce que vous avez besoin et arrondi vous donnera toujours les pixels les plus proches. En fait, et arrondir ne vous inquiétez pas à ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top