gpt4 book ai didi

windows - 显示器上的像素不是正方形吗?

转载 作者:可可西里 更新时间:2023-11-01 13:06:26 26 4
gpt4 key购买 nike

我正在努力使用 this MSDN guide 使我的应用程序对 DPI 敏感其中缩放技术使用来自设备上下文的 X 和 Y 逻辑像素。

int _dpiX = 96, _pdiY = 96;   
HDC hdc = GetDC(NULL);
if (hdc)
{
_dpiX = GetDeviceCaps(hdc, LOGPIXELSX);
_dpiY = GetDeviceCaps(hdc, LOGPIXELSY);
ReleaseDC(NULL, hdc);
}

然后您可以使用缩放 X 和 Y 坐标

int ScaleX(int x) { return MulDiv(x, _dpiX, 96); }
int ScaleY(int y) { return MulDiv(y, _dpiY, 96); }

是否存在 GetDeviceCaps(hdc, LOGPIXELSX)GetDeviceCaps(hdc, LOGPIXELSY) 会为监视器返回不同数字的情况。我真正关心的唯一设备是监视器,所以我需要有单独的 ScaleX(int x)ScaleY(int y) 函数吗?我可以只使用一个 Scale(int px) 函数吗?这样做会有不利影响吗?

在此先感谢您的帮助。

最佳答案

理论上是可行的,但我不知道最近有哪台显示器使用非方形像素。方形像素有如此多的优点,而且现有的许多软件都假定方形像素,因此主流显示器似乎不太可能推出非方形像素模式。

在许多情况下,如果您确实有一个非正方形像素的显示器,您可能可以应用一个转换使其看起来像正方形像素(例如,通过设置映射模式).

也就是说,打印机 具有非方形设备单元是很常见的。他们中的许多人在一个维度上的分辨率比另一个维度高得多。一些驱动程序使调用者可以使用此解决方案。其他人会让它看起来好像有方形像素。如果您想重复使用您的代码进行打印,我建议您不要将水平缩放和垂直缩放混为一谈。

关于windows - 显示器上的像素不是正方形吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451353/

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