Để triển khai mạnh mẽ hơn, bạn nên tính toán các yếu tố DPI trên hệ thống của bạn và làm việc với các yếu tố đó. là 96, nhưng một số màn hình có thể có các giá trị khác nhau.Hãy xem mã của bạn có thể đang chạy trên màn hình có giá trị DPI khác với 96. Hãy xem xét mã này:
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;
}
Sau đó bạn có thể sử dụng những tỷ lệ để có được những giá trị cuối cùng:
CalculateDpiFactors();
double ScreenHeight = SystemParameters.PrimaryScreenHeight * thisDpiHeightFactor;
double ScreenWidth = SystemParameters.PrimaryScreenWidth * thisDpiWidthFactor;
Các giá trị của ScreenHeight và ScreenWidth sau đó phải phù hợp với những gì bạn nhìn thấy trong cửa sổ Properties của màn hình của bạn.
Tôi đã thử nghiệm nó, kết quả là giống với bài đăng đầu tiên của tôi! –
ok thật lạ. Điều gì sẽ xảy ra nếu bạn thay đổi độ phân giải màn hình của bạn từ bảng điều khiển? –
Tôi đã thay đổi độ phân giải thành 1680 * 1050, kết quả: height = 1002.0; width = 1680.0. BTW: DPI là 125% –