讨论已久的获取显示器物理尺寸的方法

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

 

原理:

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

但在不同分辨率下,计算结果会有些偏差,应该是获取的字符串长度厘米有偏差,因为这个只能精确到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);
}

转载于:https://www.cnblogs.com/aoyihuashao/archive/2010/04/09/1708100.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值