如何移动图形.矩形和我的钥匙
本文关键字:我的 钥匙 图形 何移动 移动 | 更新日期: 2023-09-27 18:12:51
我很简单地尝试移动我从图形类中绘制的矩形,根据按下的键上下移动。然而,我不知道如何移动图形对象,但主要是表单组件。
这是我的代码到目前为止,但我不确定我应该怎么做。
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 '由于某种原因无法识别?
public void Run()
{
paddle1.Move(Keys key); //This is unrecognized from my paddle class.
paddle1.Draw();
下面是一些示例代码,允许您使用箭头键移动矩形。目前,它错过了一些边界检查,但它应该给你一个很好的起点。
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);
}
}
}