Pergunta

Como posso determinar a largura em pixels para uma tela (que tem uma certa largura)?

Eu tenho um bitmap em um controle de animação e sei a largura do bitmap em pixels, e quero escalar o bitmap para que ele se encaixe horizontalmente exatamente na tela. Como posso determinar essa escala?

Nota: Não preciso usar o RenderTargetBitMap, porque o bitmap já está carregado.

Foi útil?

Solução

Nas unidades WPF são independentes do dispositivo. A fórmula para descobrir o tamanho real do pixel de uma unidade é:

Pixels por unidade wpf = tamanho constantewpfunit * monitor dpi;

Tamanho do seu elemento em pixels = pixels por unidade WPF * MyElement.ActualWidth

O tamanho da unidade WPF constante é 1/96. Se bem me lembro, o DPI do Monitor pode ser encontrado como propriedades da classe retornada do SystemInformation.getPrimaryMonitor ou algo semelhante.

A largura real de uma estrutura de estrutura está em unidades independentes de dispositivos e tem a largura que o elemento realmente ocupa após o layout. Simplesmente multiplique essa propriedade pelos pixels por unidade WPF que você calcula acima e você terá sua resposta.

No entanto, tenho uma suspeita que você está fazendo com muita codificação manual. Esticar imagens e outros elementos visuais de qualquer maneira desejada geralmente podem ser realizados simplesmente definindo propriedades no controle/pincel em questão. Você já tentou fazer Horizontalalignment = "Stretch" e Verticalalignment = "Center" para o elemento que contém o bitmap?

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