獲取螢幕的解析度 多螢幕或者單螢幕

2021-09-25 23:31:52 字數 1777 閱讀 6076

我們在做專案的時候,往往會有想要獲取螢幕的解析度的需求。現在我們就來總結一下如何獲取螢幕解析度,不管是單屏還是多屏。 

1、rect deskrect; 

getwindowrect(getdesktopwindow(),&deskrect); 

該函式只能獲取主屏的解析度,也就是說如果有多個顯示器的話,這個函式只能獲取主屏解析度。 

而且該函式獲得的結果會受螢幕縮放影響,比如原分變率為1920*1080,且在顯示設定裡設定了125%的縮放的話,得到的結果為1536*864。如果縮放為100%的話,結果為1920*1080. 

2、  hdc hdc = getdc(null); 

int hdcwidth, hdcheight; 

hdcwidth = getdevicecaps(hdc, desktophorzres); 

hdcheight = getdevicecaps(hdc, desktopvertres); 

releasedc(null, hdc); 

該方法也是只能獲取主屏解析度,與第一種方法一樣,所不同的是它是無視縮放的。即不管你縮放是100%還是125%還是多少,得到的結果都是1920*1080 

3、  int allx = getsystemmetrics(sm_cxscreen); 

int ally = getsystemmetrics(sm_cyscreen); 

該方法也是只能獲取主屏解析度,與第一種方法得到的結果一模一樣,受縮放影響。 

4、 struct allmonitorinfo 

hmonitor hmonitor; 

rect     rect; 

bool     isprimary; 

bool callback monitorenumproc(__in  hmonitor hmonitor, __in  hdc hdcmonitor, __in  lprect lprcmonitor, __in  lparam dwdata) 

vector& infoarray = *reinterpret_cast* >(dwdata); 

allmonitorinfo monitorinfo; 

monitorinfo.hmonitor = hmonitor; 

//下面這句**已經獲取到了螢幕的解析度,不管你有多少個螢幕都可以獲取到,但是該解析度是受縮放影響的。 

monitorinfo.rect = *lprcmonitor; 

infoarray.push_back(monitorinfo); 

//這裡是另一種獲取螢幕解析度的辦法。 

monitorinfo moninfo; 

moninfo.cbsize = sizeof(monitorinfo); 

//這個方法也是會受縮放影響,****. 

bool isget = getmonitorinfo(hmonitor, &moninfo); 

if (isget == true)

float itemp = iphsx * iphsx + iphsy * iphsy;

float finch = sqrt(itemp) * inch ;

itemp = ix * ix + iy * iy;

float fpixel = sqrt(itemp);

float idpi = fpixel / finch;    // dpi pixel/inch

cout<<"dpi:"

}int _tmain(int argc, _tchar* ar**)

獲取螢幕的解析度 多螢幕或者單螢幕

我們在做專案的時候,往往會有想要獲取螢幕的解析度的需求。現在我們就來總結一下如何獲取螢幕解析度,不管是單屏還是多屏。rect deskrect getwindowrect getdesktopwindow deskrect 該函式只能獲取主屏的解析度,也就是說如果有多個顯示器的話,這個函式只能獲取主...

獲取手機螢幕解析度

獲取手機螢幕解析度的類 displaymetrics dm new displaymetrics getwindowmanager getdefaultdisplay getmetrics dm 獲得手機的寬頻和高度畫素單位為px string str 手機螢幕解析度為 dm.widthpixels...

IOS獲取螢幕解析度

from 獲取螢幕解析度是個很有用的功能,尤其在一些遊戲相關的開發中,圖形的繪製與螢幕解析度密不可分。得到當前螢幕的解析度是必不可少的支援。獲取螢幕解析度可以兩步走 1 得到當前螢幕的尺寸 cgrect rect screen uiscreen mainscreen bounds cgsize si...