讨论已久的获取显示器物理尺寸的方法- 翔鹤岭- 博客园

好像在CSDN上看过很多次讨论的都没结果,昨天看书偶有感悟。如果那个......,就当......吧。

 

原理:

字符(串)长度像素/字符串长度厘米 = 显示器长宽像素/显示器长宽厘米。

但在不同分辨率下,计算结果会有些偏差,应该是获取的字符串长度厘米有偏差,因为这个只能xx到0.01毫米,在标准分辨率下获取的比较准确。\(^o^)/~

 

void CWindowsDisignDlg::OnButton1()
{
    CClientDC dc(this);
    CString str = "0000000000000000000000000";
    /*
    TEXTMETRIC me;
    dc.GetTextMetrics(&me);
    int i = me.tmHeight;
    dc.SetMapMode(MM_HIMETRIC);
    dc.GetTextMetrics(&me);
    int j = (int)me.tmHeight;
    */
    CSize size = dc.GetTextExtent(str);
    int i = size.cx;

 

    dc.SetMapMode(MM_LOMETRIC);
    size = dc.GetTextExtent(str);
    int j = size.cx;

    int length_mix = GetSystemMetrics(SM_CXSCREEN);
    int height_mix = GetSystemMetrics(SM_CYSCREEN);
    double height = 1.0*j*height_mix/i/1000;
    double length = 1.0*j*length_mix/i/1000;
    CString message;
    message.Format("i=%d j=%d\n%lfCM * %lfCM",i,j,length,height);
    MessageBox(message);
}


郑重声明:资讯 【讨论已久的获取显示器物理尺寸的方法- 翔鹤岭- 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——