修復官方截圖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下才能測試出來。