2016-04-25 138 views
0

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

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

有人可以告诉我为什么TouchPanel分辨率是不一样的tl.position使用的分辨率?有没有办法来解决这个问题?

回答

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分辨率缩放的触摸点)。