Delphi 分辨率如何改变X&;Y形绳索

Delphi 分辨率如何改变X&;Y形绳索,delphi,math,pixel,Delphi,Math,Pixel,我正在以1920×1080的分辨率跟踪X&Y像素的颜色,我只是想知道是否有任何数学方法可以在不同分辨率下跟踪同一像素保持精确。 像素没有移动,是静态的,但我知道,更改分辨率会影响显示器的缩放和X&Y系统。 因此,任何建议都将是伟大的 由于始终填充整个屏幕区域,该物理屏幕上的相同位置(由X位置除以X宽度和Y位置除以Y高度的比率确定,以厘米或英寸为单位)也将始终与X像素索引除以X总像素和Y像素索引除以Y总像素的比率相同 假设目标像素具有xreference和yReference,分辨率为WidthR

我正在以1920×1080的分辨率跟踪X&Y像素的颜色,我只是想知道是否有任何数学方法可以在不同分辨率下跟踪同一像素保持精确。
像素没有移动,是静态的,但我知道,更改分辨率会影响显示器的缩放和X&Y系统。

因此,任何建议都将是伟大的

由于始终填充整个屏幕区域,该物理屏幕上的相同位置(由X位置除以X宽度和Y位置除以Y高度的比率确定,以厘米或英寸为单位)也将始终与X像素索引除以X总像素和Y像素索引除以Y总像素的比率相同

假设目标像素具有
xreference
yReference
,分辨率为
WidthReference
HeightReference
,其中这些坐标标记所需像素。
假设您有屏幕大小的
WidthCurrent
HeightCurrent
,以像素为单位,用于将像素定位在同一物理位置的分辨率。
假设需要确定
xCurrent
yCurrent
作为当前分辨率中像素的坐标

然后计算当前坐标,如下所示:

xCurrent = (1.0 * WidthCurrent) /  WidthReference * xReference;
yCurrent = (1.0 * HeightCurrent)/ HeightReference * yReference;

您能保证在所有分辨率下,屏幕的相同可见区域都被覆盖吗?或者你在某些地方看到黑色边框了吗?@yunnosch没有黑色边框谢谢你的回答。假设我运行的显示器的最大分辨率为1920×1080,那么这种方法是否适用于不同的显示器?如果其他用户在4k屏幕上运行该程序(分辨率为4k),这个公式是否仍然成立?或者,如果用户在最大分辨率为1600×1200的监视器上运行该程序,情况可能正好相反。谢谢你说的“跟踪同一像素”和“跨不同显示器”是什么意思?如何定义“不同显示器上的同一像素”?如何定义“用户在最大分辨率为1600 X 1200的显示器上运行程序”。与“在4k屏幕上运行程序”相反?我有一个程序需要X,Y处设置像素的颜色信息,现在在我当前的设置(1920 X 1080p)中,程序运行良好,正确返回设置像素的颜色。但是,我需要一种方法,在各种不同的设置(即显示器的宽度和高度不同)上以数学方式返回完全相同的像素。请定义“相同像素”。相同的坐标显然不是你的意思。你似乎不同意“X宽度的相同部分和Y高度的相同部分”。那个像素在哪里?你以哪种方式指定位置?距离左侧和顶部屏幕边缘的厘米?显示器的玻璃/塑料上是否有锐利的标记?当改变显示时,这是如何工作的?