duilib:修復win10高dpi下截圖demo的bug

修復官方截圖demo的bug

bug效果圖:
(稍後會貼出)
描述:就是在win10高dpi(125%)下,在打開截圖的時候出現的畫面會被放大。

解決辦法:
就是再做截圖操作之前獲取的電腦屏幕的像素正確,是正好我們電腦屏幕的像素。被放大的原因就是高dpi下獲取的電腦屏幕的高度和寬度是高dpi下的,所以導致了放大。
在獲取電腦屏幕長寬的前面加上:

auto tmp = SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
//禁止縮放

引入

#include "ShellScalingAPI.h"
#pragma comment (lib,"Shcore.lib")

以上的方法可能#include “ShellScalingAPI.h”不存在,因爲使用的SDK下沒有這個文件
解決辦法:

        FARPROC spdpia = GetProcAddress(GetModuleHandle(TEXT("user32")), "SetProcessDPIAware");
    #ifndef NODPI  
        if (spdpia != NULL) spdpia(); // 去掉這一句可看到DPI縮放效果  
    #endif 

這樣子我們截圖的時候就不會放大了。注意:只有在高dpi下才能測試出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章