Pergunta

Eu estou recebendo valores de ponto flutuante como (471, 326,723333333333) de chamar MouseEventArgs.GetPosition() no meu controle de fronteira. Enquanto eu sempre pode rodada os números manualmente, eu queria saber se há algum tipo de configuração para obter números inteiros.

Eu pensei que colocar SnapsToDevicePixels como True no meu controle de fronteira ajudaria, mas isso não acontece, como é provavelmente não relacionado.

Todas as idéias?

Obrigado!

Foi útil?

Solução

Em WPF, você sempre vai ter posicionamento retornou em valores de ponto flutuante. Se você deseja arredondar-lo, você precisa fazer isso manualmente.

Isto é devido à independência de resolução, e é por design.

Outras dicas

Desde WPF é independente do dispositivo e nem todos os dispositivos compartilham os mesmos tamanhos de pixel passando MouseEvents com coordenadas fracionários faz sentido (também você pode colocar controles no espaço 3D onde toda a coordenar coisas tradução sistema não vai acontecer com valores de pixel integrais) .

SnapsToDevicePixels é apenas uma propriedade controle como um controle é exibida e que bordas e linhas retas se encontram de preferência em pixels completos do que no meio. Não tem nada a ver com a forma como os eventos do mouse são tratados (como você também ter notado).

Como uma regra geral, tudo no WPF é medido em valores double, por isso ou viver com ele (você verifica provavelmente seria a mesma de qualquer maneira) ou continuar o arredondamento para int se você gosta assim: -)

Posicionamento do seu rato é contínua. Posicionando no seu monitor é discreto. Os valores das coordenadas que você está recebendo são melhores do que o que você precisa e arredondando sempre lhe dará os pixels mais próximos. Basicamente, em volta dele e não se preocupe com isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top