<Grid >
<Canvas x:Name="ceshi" HorizontalAlignment="Left" Height="620" Margin="10,10,0,0" VerticalAlignment="Top" Width="380" PointerEntered="ceshi_PointerEntered"
PointerExited="ceshi_PointerExited">
<TextBlock x:Name="textblock1" HorizontalAlignment="Left" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="390" Width="300"
Canvas.Left="40" Canvas.Top="93"/>
</Canvas>
</Grid>
后台
public MainPage()
{
this.InitializeComponent();
ceshi.PointerEntered += new PointerEventHandler(ceshi_PointerEntered);
ceshi.PointerExited += new PointerEventHandler(ceshi_PointerExited);
this.Loaded += new RoutedEventHandler(Rect_Loaded);
}
private void ceshi_PointerEntered(object sender, PointerRoutedEventArgs e)
{
start = e.GetCurrentPoint(textblock1).Position;
}
private void ceshi_PointerExited(object sender, PointerRoutedEventArgs e)
{
Point end = e.GetCurrentPoint(textblock1).Position;
double angle = 0;
if (Math.Abs(end.X - start.X) < 1 && Math.Abs(end.Y - start.Y) < 1)
{
angle = 0;
}
else if (end.X > start.X)
{
if (end.Y > start.Y)
{
angle = 360 - Math.Atan((end.Y - start.Y) * 1.0 / (end.X - start.X)) * 180 / Math.PI;
}
else
{
angle = Math.Atan((start.Y - end.Y) * 1.0 / (end.X - start.X)) * 180 / Math.PI;
}
}
else if (end.X < start.X)
{
if (end.Y > start.Y)
{
angle = Math.Atan((end.Y - start.Y) * 1.0 / (start.X - end.X)) * 180 / Math.PI + 180;
}
else
{
angle = 180 - Math.Atan((start.Y - end.Y) * 1.0 / (start.X - end.X)) * 180 / Math.PI;
}
}
if (angle >= 45 && angle < 135)
{
m = "w";
}
else if (angle <= 45 || angle > 315)
{
m = "d";
}
else if (angle >= 135 && angle < 225)
{
m = "a";
}
else if (angle >= 225 && angle < 315)
{
m = "s";
}
}
为什么只有textblock区域可以监控的指针事件?我明明在Canvas添加的事件处理?