簡體   English   中英

像素在顯示器上是不是正方形?

[英]Are pixels ever not a square on a monitor?

我正在努力使用這個MSDN指南使我的應用程序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)函數嗎? 這樣做會有不利之處嗎?

在此先感謝您的幫助。

這在理論上是可行的,但我不知道最近使用非方形像素的顯示器。 方形像素有很多優點,而且現有的軟件都采用方形像素,主流顯示器似乎不太可能采用非方形像素模式。

在許多情況下,如果你確實有與非方形像素監視器,你也許可以應用轉換,使其看起來好像它有方形像素(例如,通過設置映射模式)。

也就是說, 打印機通常使用非方形設備單元。 他們中的許多人在一個維度上具有比在另一個維度中更高的分辨率。 某些驅動程序使調用者可以使用此解決方案。 其他人會讓它看起來好像有正方形像素。 如果您想重新使用代碼進行打印,我建議您不要混淆水平和垂直縮放。

LCD面板的硬件像素始終是方形的。 使用CRT,您可以使用矩形正方形,例如在4:3監視器上使用320x200320x400分辨率(這些分辨率是實際使用的)。 在LCD上,您可以通過在顯示器上使用非原生分辨率獲得矩形像素 - 在5:4顯示器上使用寬屏分辨率,反之亦然。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM