<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Ellipse x:Name="ell" Grid.Row="0" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" Fill="Orange"/>
<TextBlock Name="data" Grid.Row="1" FontSize="28"/>
</Grid>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (Accelerometer.IsSupported == false)
{
data.Text = "不支持傳感器";
return;
}
if (acceler == null)
{
acceler = new Accelerometer();
acceler.TimeBetweenUpdates = TimeSpan.FromMilliseconds(500);
acceler.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<AccelerometerReading>>(change);
}
acceler.Start();
if (projiection == null)
{
projiection = new PlaneProjection();
this.ell.Projection = projiection;
}
}
void change(object sender, SensorReadingEventArgs<AccelerometerReading> e)
{
Dispatcher.BeginInvoke( () => {
Vector3 v3 = e.SensorReading.Acceleration;
projiection.LocalOffsetX = Convert.ToDouble(250 * v3.X);
projiection.LocalOffsetY = Convert.ToDouble(250 * v3.Y);
projiection.LocalOffsetZ = Convert.ToDouble(300 * v3.Z);
data.Text = string.Format("X={0}, Y={0}, Z={2}", v3.X.ToString(), v3.Y.ToString(), v3.Z.ToString());
});
}
}