Silverlight 八方向按键移动

 1.新建项目

 2.加代码


前台
<Grid x:Name="LayoutRoot" >
<Button x:Name="button" Margin="256,176,0,0" VerticalAlignment="Top" Content="Button" HorizontalAlignment="Left" Width="80" RenderTransformOrigin="0.5,0.5" >
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform x:Name="tt"/>
</TransformGroup>
</Button.RenderTransform>
</Button>
</Grid>

后台代码
public enum emUserDir
{
上, 下, 左, 右, 左上, 右上, 左下, 右下, 中
}

public partial class MainPage : UserControl
{
emUserDir[,] UserDir
= new emUserDir[3, 3]
{
{emUserDir.左上,emUserDir.上,emUserDir.右上},
{emUserDir.左,emUserDir.中,emUserDir.右},
{emUserDir.左下,emUserDir.下,emUserDir.右下}
};
public int horizontal = 1;
public int vertical = 1;

public MainPage()
{
InitializeComponent();
this.button.KeyDown += new KeyEventHandler(button_KeyDown);
this.button.KeyUp += new KeyEventHandler(button_KeyUp);

}

void button_KeyUp(object sender, KeyEventArgs e)
{
string temp = e.Key.ToString();
switch (e.Key)
{
case Key.Up:
if (vertical < 2)
vertical
+= 1;
break;
case Key.Down:
if (vertical > 0)
vertical
-= 1;
break;
case Key.Left:
if (horizontal < 2)
horizontal
+= 1;
break;
case Key.Right:
if (horizontal > 0)
horizontal
-= 1;
break;
}
}

void button_KeyDown(object sender, KeyEventArgs e)
{
string temp = e.Key.ToString();
switch (e.Key)
{
case Key.Up:
if (vertical > 0)
vertical
-= 1;
break;
case Key.Down:
if (vertical < 2)
vertical
+= 1;
break;
case Key.Left:
if (horizontal > 0)
horizontal
-= 1;
break;
case Key.Right:
if (horizontal < 2)
horizontal
+= 1;
break;

}

switch (UserDir[vertical, horizontal])
{
case emUserDir.右上:
tt.X
++;
tt.Y
--;
break;
case emUserDir.右下:
tt.X
++;
tt.Y
++;
break;
case emUserDir.左上:
tt.X
--;
tt.Y
--;
break;
case emUserDir.左下:
tt.X
--;
tt.Y
++;
break;

case emUserDir.上:
tt.Y
--;
break;
case emUserDir.下:
tt.Y
++;
break;
case emUserDir.左:
tt.X
--;
break;
case emUserDir.右:
tt.X
++;
break;

}

}
}

3.运行点击选中一下 Button  按下键盘 上下左右 ,左上, 右上, 左下, 右下可以八方移动

原文地址:https://www.cnblogs.com/honeymoon/p/1750224.html