gpt4 book ai didi

c++ - 为什么 wxDC::GetTextExtent() 对于 wxWidgets 中的高 DPI 显示返回相同的值?

转载 作者:行者123 更新时间:2023-12-02 18:14:47 25 4
gpt4 key购买 nike

我正在尝试使用 wxWidgets 扩展用 c++ 编写的应用程序以实现高 DPI 显示器。我遵循 official link 中的指南。到目前为止,除了 wxDC::GetTextExtent() 的返回值之外,一切工作正常。功能。当我将窗口移动到具有不同 DPI 的显示器时,字体大小会缩放,但 wxDC 的返回值保持与以前相同。但是如果我使用 wxWindow::GetTextExtent() ,它返回正确的值!在文档中,它说所有wxWidgets API都使用逻辑像素,但看起来并非如此。

换句话说,如果您尝试在高 DPI 显示器的设备上下文 (dc) 上绘制“文本”,则绘制的文本会很小,因为 wxDC 测量的字体高度值很小(例如不规模 )。然而,wxWindow 绘制的所有其他文本都可以正确缩放。

这种行为是故意的吗?我应该怎么做才能获得正确的值?我正在使用 wxWidgets 3.1.5 和 Win 10。

还不清楚 wxWidgets 是使用设备独立像素(DIP)还是逻辑像素?

最佳答案

wxDC::GetTextExtent()wxWindow::GetTextExtent() 应该返回相同的值,如果我在最小示例中插入此代码:

void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxClientDC dc(this);
wxLogMessage("wxDC: %d, wxWindow: %d",
dc.GetTextExtent("Hello").x,
GetTextExtent("Hello").x);
}

它在默认 DPI 屏幕下显示“wxDC: 28, wxWindow: 28”,在 wxWidgets 3.1.6 中使用 200% DPI 缩放时显示“wxDC: 56, wxWindow: 56”,因此您可能只需要更新到此版本.

关于c++ - 为什么 wxDC::GetTextExtent() 对于 wxWidgets 中的高 DPI 显示返回相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71761445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com