Monogame Touchlocation坐标与Touchpanel分辨率不匹配

时间:2016-04-25 17:48:47

标签: c# xna monogame screen-resolution touchscreen

我尝试在Monogame中获取触摸的坐标。 TouchPanel.DisplayWidthTouchPanel.DisplayHeight返回正确的值(1919 x 1080)。 但是,touchLocation的位置是720p分辨率内的坐标。这是代码:

TouchCollection touchCollection = TouchPanel.GetState();
    foreach (TouchLocation tl in touchCollection)
    {
        if (tl.State == TouchLocationState.Pressed)
        {
            Vector2 position = tl.Position;
            ...

有人可以告诉我为什么TouchPanel分辨率与tl.position使用的分辨率不同吗?有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我无法找到为什么会这样,但是从简单的谷歌搜索,我找到了应对这个问题的方法。

您可以使用缩放来获得接近真实的近似位置,因为可能将不需要手指触摸屏幕的实际像素精度位置。

for (int i = 0; i < touchCollection.Count; i++)
{
    InputPoints.Add(new Vector2
    (touchCollection[i].Position.X / Game1.ScalingFactor.X,
    touchCollection[i].Position.Y / Game1.ScalingFactor.Y));
}

我从here复制了此代码。

所以,我没有答案,但有一个解决方法(获得真正的分辨率,创建Vector2 scale,它将成为真实分辨率和720p分辨率之间的桥梁,并获得用户缩放720p分辨率的触摸点)。