Para una aplicación aún más robusto, debe calcular los factores de DPI en el sistema y trabajar con esos factores un valor normal DPI es 96, pero algunos monitores pueden tener valores diferentes. Considere que su código puede estar ejecutándose en un monitor que tiene un valor de DPI diferente a 96. Considere este código:
private static void CalculateDpiFactors()
{
Window MainWindow = Application.Current.MainWindow;
PresentationSource MainWindowPresentationSource = PresentationSource.FromVisual(MainWindow);
Matrix m = MainWindowPresentationSource.CompositionTarget.TransformToDevice;
thisDpiWidthFactor = m.M11;
thisDpiHeightFactor = m.M22;
}
continuación, puede utilizar esas proporciones para obtener los valores finales:
CalculateDpiFactors();
double ScreenHeight = SystemParameters.PrimaryScreenHeight * thisDpiHeightFactor;
double ScreenWidth = SystemParameters.PrimaryScreenWidth * thisDpiWidthFactor;
Los valores de ScreenHeight y ScreenWidth entonces debe coincidir con lo que se ve en la ventana Propiedades del monitor.
Lo he probado, el resultado es el mismo con el primer post mío! –
ok eso es raro. ¿Qué sucede si cambias la resolución de tu pantalla desde el panel de control? –
Cambié la resolución a 1680 * 1050, el resultado: altura = 1002.0; ancho = 1680.0. Por cierto: el DPI es 125% –