Можем ли мы переместить форму (алмаз) в C # - PullRequest
0 голосов
/ 23 апреля 2010

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

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 ]

2 голосов
/ 23 апреля 2010

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

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


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

int xOffset = 0;

Затем в вашем таймере: отметка:

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 голосов
/ 23 апреля 2010

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

...