zoukankan      html  css  js  c++  java
  • 讨论已久的获取显示器物理尺寸的方法

    好像在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);
    }

  • 相关阅读:
    手动创建DataSet数据集
    Ado.Net 参数化操作
    序列化和反序列化
    封装多个集合在一个类中
    窗体之间的传递
    C程序设计语言练习题1-12
    C程序设计语言练习题1-11
    C程序设计语言练习题1-10
    C程序设计语言练习题1-9
    C程序设计语言练习题1-8
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/1708100.html
Copyright © 2011-2022 走看看