我非常简单地尝试移动我从图形类中绘制的矩形,根据按下的键上下移动。但是,我不知道如何移动图形对象,但只是主要形成组件。
这是我的代码到目前为止,但我不确定我应该怎么做。
private Graphics paddle1;
public void Move(Keys key)
{
switch (key)
{
case Keys.W:
paddle1.Top -= 20;
break;
}
}
我已将我的图形对象分配给名称' paddle1'我不能简单地使用.Top来获取图形矩形的位置。
还有另一种方法吗?
编辑:
我用不同的方法绘制矩形:
public void Draw()
{
paddle1.FillRectangle(brush, position.X, position.Y, 20, 100);
}
我使用控制器类来绘制球拍,然后移动它。变量Key' key'由于某种原因未被承认?
public void Run()
{
paddle1.Move(Keys key); //This is unrecognized from my paddle class.
paddle1.Draw();
答案 0 :(得分:0)
以下是一些示例代码,允许您使用箭头键移动矩形。目前它错过了一些边界检查,但它应该给你一个很好的起点。
public partial class Form1 : Form
{
private Rectangle _SelectedArea;
public Form1()
{
InitializeComponent();
_SelectedArea = new Rectangle(0, 0, 20, 20);
}
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if (!e.Handled)
{
switch (e.KeyData)
{
case Keys.Down:
_SelectedArea.Offset(0, 1);
break;
case Keys.Up:
_SelectedArea.Offset(0, -1);
break;
case Keys.Left:
_SelectedArea.Offset(-1, 0);
break;
case Keys.Right:
_SelectedArea.Offset(1, 0);
break;
}
e.Handled = true;
// The Invalidate() call causes the control to be redrawn.
// Check https://msdn.microsoft.com/en-us/library/598t492a.aspx
Invalidate();
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
using (var pen = new Pen(Color.Red))
using (var brush = new HatchBrush(HatchStyle.Percent10, Color.Blue, Color.Transparent))
{
e.Graphics.FillRectangle(brush, _SelectedArea);
e.Graphics.DrawRectangle(pen, _SelectedArea);
}
}
}