【发布时间】:2019-09-13 18:51:50
【问题描述】:
我目前是 getting started with Win32 和 Direct2D 并已到达 chapter on DPI and DIP。在最底部,它说ID2D1RenderTarget::GetSize 以 DIP 形式返回大小,ID2D1RenderTarget::GetPixelSize 以物理像素形式返回。他们的个人文件证实了这一点。
但是我无法观察到ID2D1RenderTarget::GetSize 实际上返回 DIP。
我测试过
- 将我的两个其他相同显示器之一的比例设置为 175%,
- 将
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>添加到我的应用程序清单中, -
获得
D2D1_SIZE_U sizeP = pRenderTarget->GetPixelSize(); D2D1_SIZE_F size = pRenderTarget->GetSize();在来自this 示例的方法
MainWindow::CalculateLayout中(并打印值), - 并将窗口从一个屏幕移动到另一个屏幕,并任意调整其大小。
当从一个显示器移动到另一个显示器时,我可以看到窗口边框的大小发生变化。但是,sizeP 和 size 中的值(除了 int 和 float)总是相同的,并且对应于 ID2D1HwndRenderTarget 的 物理 大小。
由于我不希望文档有缺陷,我想知道我缺少什么才能真正获得ID2D1HwndRenderTargetpRenderTarget 的窗口的 DIP。
【问题讨论】: