Domanda

sto ottenendo valori in virgola mobile come (471, 326,723333333333) di chiamare MouseEventArgs.GetPosition() sul mio controllo delle frontiere. Mentre posso sempre intorno ai numeri manualmente, mi chiedevo se c'è un qualche tipo di impostazione per ottenere numeri interi.

Ho pensato di mettere SnapsToDevicePixels True sul mio controllo delle frontiere avrebbe aiutato, ma non è così, come è probabilmente correlato.

Tutte le idee?

Grazie!

È stato utile?

Soluzione

In WPF, avrete sempre il posizionamento restituito valori in virgola mobile. Se si desidera arrotondare esso, sarà necessario farlo manualmente.

Questo è dovuto alla indipendenza dalla risoluzione, ed è in base alla progettazione.

Altri suggerimenti

Da WPF è indipendente dal dispositivo e non tutti i dispositivi condividono le stesse dimensioni dei pixel che passano MouseEvents con coordinate frazionarie senso (anche si può mettere controlli nello spazio 3D dove tutta la roba coordinate traduzione sistema non accadrà con valori di pixel integrali) .

SnapsToDevicePixels è solo una proprietà controllare come viene visualizzato un controllo e che i bordi e le linee rette preferibilmente giacciono su pixel complete che in mezzo. Non ha nulla a che fare con il modo gli eventi del mouse vengono gestiti (come anche voi avete notato).

Come regola generale, tutto ciò che in WPF è misurata in valori double, quindi o convivere con essa (voi controlli sarebbe probabilmente la stessa in ogni caso) o Continua arrotondamento per int se ti piace così: -)

Posizionamento dal mouse è continuo. Posizionamento sul monitor è discreto. I valori delle coordinate che stai ricevendo sono meglio di quello che ti serve e arrotondamento sempre dare i pixel più vicini. In sostanza, intorno ad esso e non ti preoccupare.

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