我想在表格中移动钻石形状(例如每200毫秒2个像素)。 我在From_Paint Event中使用了以下代码。
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Point p1 = new Point(5,0);
Point p2 = new Point(10, 5);
Point p3 = new Point(5, 10);
Point p4 = new Point(0, 5);
Point[] ps = { p1, p2, p3, p4, p1 };
g.DrawLines(Pens.Black, ps);
}
我知道如何移动图片框但是如何处理形状。
谢谢, ANI
答案 0 :(得分:2)
您需要在表单级变量中跟踪当前位置。如果这样做,Form1_Paint事件可以在每次绘制时更改X像素位置。
只需在表单中添加一个Timer,并将其间隔设置为200ms。每200ms,将当前X像素加2,并使控件无效(重绘)。
修改:将其添加到您的表单:
int xOffset = 0;
然后,在你的timer_Tick:
private void timer1_Tick(object sender, EventArgs e)
{
if (xOffset < 500)
xOffset += 2;
else
timer1.Enabled = false; // This will make it only move 500 pixels before stopping.... Change as desired.
this.Invalidate(); // Forces repaint
}
将您的绘画事件更改为:
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Point p1 = new Point(5 + xOffset,0);
Point p2 = new Point(10 + xOffset, 5);
Point p3 = new Point(5 + xOffset, 10);
Point p4 = new Point(0 + xOffset, 5);
Point[] ps = { p1, p2, p3, p4, p1 };
g.DrawLines(Pens.Black, ps);
}
答案 1 :(得分:0)
使用Timer
,然后在每个刻度上重绘。