• c/c++ 计算屏幕的PPI


    PPI(pixels per inch)是图像分辨率的单位,表示的是每英寸所拥有的像素(pixel)数目。那如何计算勒?其实PPI计算有这相应的公式,公式为:sqrt(横向的平方+纵向的平方)/屏幕尺寸,注意此处的屏幕尺寸是英寸。
    知道了公式,那么计算PPI就没有什么问题了。另外,公式中的横向是指屏幕的x分辨率,纵向是指屏幕的y分辨率。那怎么计算英寸?我们平常使用的是厘米,毫米什么的,其实他们之间也有一个等价换算,即:1英寸=25.4毫米。
    知道了这些,那么如何计算屏幕的英寸大小?计算英寸,我们首先要计算知道屏幕对角线的长度(平常所说的英寸是屏幕对角线的长度),计算对角线的长度就是计算斜边的长度,计算斜边,使用勾股定理计算,公式如下:
    sqrt(x平方+y平方)。知道了这些公式,那么代码就简单了,代码如下:
    int nXScr = 0;//屏幕X分辨率
    int nYScr = 0;//屏幕Y分辨率
    int nXWidth = 0;//屏幕的宽度
    int nYHeight = 0; //屏幕的高度
    double dScrLeng = 0:
    int nPPI = 0;
    
    nXScr = GetSystemMetrics(SM_CXSCREEN);//屏幕X分辨率
    nYScr =  GetSystemMetrics(SM_CYSCREEN); //屏幕Y分辨率
    
    
    HDC hdcScreen = GetDC(NULL);   //获取HDC句柄
    nXWidth = GetDeviceCaps(hdcScreen, HORZSIZE);//屏幕的宽度
    nYHeight = GetDeviceCaps(hdcScreen, VERTSIZE); //屏幕的高度
    ReleaseDC(NULL, hdcScreen);
    
    dScrLeng = sqrt((double) (nXWidth * nXWidth + nYHeight * nYHeight )); 
    nPPI = (int)(sqrt(nXScr *nXScr + nYScr *nYScr )/(dScrLeng *0.03937007));
    

      

  • 相关阅读:
    SAXParseException;前言中不允许有内容的错误
    FATAL Alert:BAD_CERTIFICATE
    DB2的递归
    在Unity中针对屏幕自适应,我们该如何做呢?
    原码与反码的区别?
    在Unity 3D中加入Image图片
    你的外接键盘的小键盘在Num Lock键亮着的,但是数字按了不能用,解决办法在这里
    唯美英文(一)
    如何使用gcc编译器
    C++中const的用法
  • 原文地址:https://www.cnblogs.com/happinessday/p/6902252.html
Copyright © 2020-2023  润新知