从一个屏幕尺寸和分辨率到其他屏幕尺寸和分辨率的x,y坐标外推

时间:2015-09-24 07:35:43

标签: screen coordinates device squish extrapolation

很快我拥有的!! 我有一个明确的屏幕尺寸(5.5英寸)和分辨率(500像素宽度和350像素高度),我在这个屏幕上有某个位置(x,y)的坐标。

我会拥有什么! 我将有新屏幕尺寸(8.2英寸)和分辨率(1020像素宽和730像素高)的规格。

我需要计算/推断/查找什么? 我需要使用新分辨率在新屏幕尺寸上找到相同的x,y位置。我需要一个通用的解决方案,可以适用于任何屏幕尺寸或分辨率。

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:2)

屏幕尺寸可能并不重要,我们关心的只是分辨率。

鉴于旧坐标,我们可以除以旧分辨率,然后乘以新分辨率。

这给出了一个位于同一比例位置的坐标。 (类似于图像上点的位置,当您调整其大小时。)

伪代码示例:

function newCoords(oldCoords) {
    newCoords.x = oldCoords.x / oldResolution.x * newResolution.x;
    newCoords.y = oldCoords.y / oldResolution.y * newResolution.y;
    return newCoords;
}

答案 1 :(得分:0)

public static Point GetRelativeCoordinates(Point absoluteCoordinates)
   {
       double x, y;

       Point newCoords = new Point();
       // if theese are not doubles it truncates to zero . 
       x = absoluteCoordinates.X;
       y = absoluteCoordinates.Y;

       newCoords.X = Convert.ToInt16( x / 1920 * Screen.PrimaryScreen.Bounds.Width);
       newCoords.Y = Convert.ToInt16( y / 1080 * Screen.PrimaryScreen.Bounds.Height);

       return newCoords;
   }