c/c++ 计算屏幕的PPI
生活随笔
收集整理的這篇文章主要介紹了
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));
知道了公式,那么計算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));
轉載于:https://www.cnblogs.com/happinessday/p/6902252.html
總結
以上是生活随笔為你收集整理的c/c++ 计算屏幕的PPI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xml元素 标签 属性
- 下一篇: FlexRay 简介