Windows 8 XAML でアナログ ダイヤルを実装しましたが、ほとんど機能します。
ただ、ダイヤルを回すとガタガタと揺れます。動かしながら時計回りと反時計回りにほぼ90度回転しているように見えます。PointerPressed
を使用しPointerReleased
て実装しました。PointerMoved
マイコード
private void dial_PointerPressed(object sender, PointerRoutedEventArgs e)
{
dialPressed = true;
}
private void dial_PointerReleased(object sender, PointerRoutedEventArgs e)
{
dialPressed = false;
}
private void dial_PointerMoved(object sender, PointerRoutedEventArgs e)
{
if(dialPressed)
{
Windows.UI.Input.PointerPoint currentLocation =
e.GetCurrentPoint(dial);
Point dialCenter =
new Point(dial.ActualHeight / 2, dial.ActualWidth / 2);
double radians = Math.Atan(
(currentLocation.Position.Y - dialCenter.Y) /
(currentLocation.Position.X - dialCenter.X));
RotateTransform r = new RotateTransform();
r.Angle = radians * 180 / Math.PI;
if (currentLocation.Position.X - dialCenter.X < 0)
{
r.Angle += 180;
}
TransformGroup t = new TransformGroup();
t.Children.Add(r);
dial.RenderTransform = t;
}
}
さまざまなイベントに対してバインドする必要がありますか? ダイヤルが揺れている原因は何ですか?