创建一个不受系统缩放设置(DPI)影响的绘图窗口
2020-7-31 ~ 2021-10-6
(0)
现在的屏幕分辨率都比较高,为了使屏幕字体不至于太小,通常在 Win10 的显示设置里面设为放大 125% 或 150% 或更大,这样就会导致像素实际上被放大了。
如果你的程序不希望受系统缩放设置影响,你需要使用一个新的 API 函数:SetProcessDpiAwareness
注意这个 API 函数的使用条件:
- Win8.1 及以上版本
- 头文件 ShellScalingApi.h
- 库文件 Shcore.lib
以下是一个完整的范例程序,该范例创建一个不受系统缩放设置影响的绘图窗口,并画一个圆:
// 编译环境:Win10 + VS2019 + EasyX_20200727
//
// 设定操作系统版本为 Win10(需要放到 #include <graphics.h> 前面)
#define WINVER 0x0A00
#define _WIN32_WINNT 0x0A00
#include <graphics.h>
#include <conio.h>
#include <ShellScalingApi.h> // 引用头文件
#pragma comment(lib, "Shcore.lib") // 链接库文件
int main()
{
// 设置该进程不受系统 DPI 设置影响
SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
// 创建图形窗口,并画一个圆
initgraph(640, 480);
circle(320, 240, 200);
// 按任意键关闭绘图窗口
_getch();
closegraph();
return 0;
}
关于 SetProcessDpiAwareness 函数更详细的使用方法,请参考微软官方文档:SetProcessDpiAwareness function
添加评论
取消回复