2010-04-23 3 views
0

Я хочу перемещать алмазную форму в форме (например, 2 пикселя каждые 200 мс) горизонтально. Я использовал следующий код в событии From_Paint.Можем ли мы перемещать форму (Алмаз) в C#

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

ответ

2

Вам нужно будет отслеживать текущее местоположение в переменной уровня. Если вы это сделаете, ваше событие Form1_Paint может изменять местоположение X-пикселя каждый раз, когда он рисует.

Просто добавьте таймер в вашу форму и установите интервал до 200 мс. Каждые 200 мс добавьте 2 к текущему X-пикселю и аннулируйте свой контроль (чтобы он перерисовывал).


Редактировать: Добавьте это в форме:

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); 
} 
+0

ну вот мои координаты .... как можно заставить их увеличивать 2 пикселя на каждом тике ... Я пытался использовать + = оператор, но не работает. Точка p1 = новая точка (5,0); Точка p2 = новая точка (10, 5); Точка p3 = новая точка (5, 10); Точка p4 = новая точка (0, 5); – Ani

+0

Вам нужно сохранить на уровне класса целое число, которое является вашей координатой X (или смещением) ... –

+0

@Ani: Я добавил код для демонстрации ... –

0

использование Timer затем перерисовывать на каждом тике.

+0

как я могу увеличить баллы Diamonds ... на каждый тик до тех пор, пока он не достигнет конца формы – Ani

Смежные вопросы