วันพุธที่ 27 มิถุนายน พ.ศ. 2561

การหา Scale ของ Display Window 10

เวลาทำการ Scale หน้า Screen ของ Window 10 เช่น 100,125,150% จะมีปัญหา ในการ map point widnow ไปยัง Screen จะต้องใช้ scale เช่น 125 คือ 1.25 คุณ กับ พิกัด เดิม 
ปัญหา คือ ไม่มี API โดยตรงในการหา Scale ต้องคำนวน

 Graphics g = Graphics.FromHwnd(IntPtr.Zero);
        IntPtr desktop = g.GetHdc();
        int LogicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
        int PhysicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);
        int logpixelsy = GetDeviceCaps(desktop, (int)DeviceCap.LOGPIXELSY);
        float screenScalingFactor = (float)PhysicalScreenHeight / (float)LogicalScreenHeight;
        float dpiScalingFactor = (float)logpixelsy / (float)96;
VERTRES = 10,
        DESKTOPVERTRES = 117,
        LOGPIXELSY = 90,