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 按下键盘 上下左右 ,左上, 右上, 左下, 右下可以八方移动