편집 :
좋아, 각 방향 모드에서 올바른 X 어떤 Y를보고 당신은 WP 툴킷의 제스처 수신기를 사용하고 있지만 어떤 이유로 I합니다. 귀하의 경우에 어떤 방향 모드를 감지하고 필요한 조정을해야합니다.
방향이 가로 방향 인 경우 축이 전환되는 것처럼 보입니다. 가로 방향 왼쪽 모드에서 X 축이 반전되고 가로 방향 오른쪽 모드에서 Y 축이 반전됩니다. 당신은 당신의 페이지 XAML에 OrientationChanged
이벤트를 추가 할 필요가
bool _switchAxis;
bool _invertX ;
bool _invertY;
private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) {
_switchAxis = (e.Orientation | PageOrientation.LandscapeLeft | PageOrientation.LandscapeRight) == (PageOrientation.LandscapeLeft | PageOrientation.LandscapeRight);
_invertX = e.Orientation == PageOrientation.LandscapeLeft;
_invertY = e.Orientation == PageOrientation.LandscapeRight;
}
private void Touch_FrameReported(object sender, System.Windows.Input.TouchFrameEventArgs e) {
var width = Application.Current.Host.Content.ActualWidth;
var height = Application.Current.Host.Content.ActualHeight;
var primaryPoint = e.GetPrimaryTouchPoint(null);
if (_switchAxis) {
if (_invertY) imgStar.X = height - primaryPoint.Position.Y; else imgStar.X = primaryPoint.Position.Y;
if (_invertX) imgStar.Y = width - primaryPoint.Position.X; else imgStar.Y = primaryPoint.Position.X;
} else {
imgStar.X = primaryPoint.Position.X;
imgStar.Y = primaryPoint.Position.Y;
}
}
: 코드에 따라 당신의 문제를 해결해야
<phone:PhoneApplicationPage
<!-- ... -->
OrientationChanged="PhoneApplicationPage_OrientationChanged"
/>
가로 모드에서
, 눈에 보이는 응용 프로그램 막대 및 시스템 트레이의 뜻 혼란을 X 너를 위해서. 당신이 응용 프로그램 막대가있는 경우
는, 당신은 또한 페이지로드 이벤트
XAML에 그렇게 X의 수동 조정을 피하기 위해 시스템 트레이를 숨길 필요가
ApplicationBar.Mode = ApplicationBarMode.Minimized
최소화로의 모드를 설정 :
<phone:PhoneApplicationPage
<!-- stuff -->
Loaded="PhoneApplicationPage_Loaded"
/>
코드 숨김
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) {
SystemTray.IsVisible = false;
}
,
또한 X에서 image.Width/2를 뺀 다음 Y에서 image.Height/2를 빼서 손가락 끝 중심에 정확히 맞 춥니 다.
imgStar.X = PrimaryPoint.Position.X - (img.Width/2);
imgStar.Y = PrimaryPoint.Position.Y - (img.Height/2);
이렇게하면 문제가 해결됩니다.
위의 제안이 작동하지 않으며 어쨌든 SystemTray를 사용하지 않습니다 ... 어떻게 된 일인지 // var PrimaryPoint = e.GetPrimaryTouchPoint (null); // 예를 들어 0,0 포인트를 반환합니다. 보통 세로 모드에서와 같이 왼쪽 하단 모서리를 클릭하십시오. 그러나 이미지는 왼쪽 상단 모서리 (480,0)에 대 향하여 놓입니다. 어떤 아이디어? # –
위의 편집을 참조하십시오. –
그게 다야! 이제 완벽하게 작동합니다. 그 점을 지적 해 주셔서 고맙습니다. –