Connect 4 C # (Как нарисовать сетку) - PullRequest
2 голосов
/ 11 марта 2010

Я разработал большую часть кода и имею несколько игровых классов. Один момент, на котором я застрял в данный момент, это как нарисовать реальную сетку Connect 4. Может кто-нибудь сказать мне, что не так с этим for цикл? Я не получаю ошибок, но сетка не появляется. Я использую C #.

private void Drawgrid() 
{
    Brush b = Brushes.Black;
    Pen p = Pens.Black;
    for (int xCoor = XStart, col = 0; xCoor < XStart + ColMax * DiscSpace; xCoor += DiscSpace, col++)
    {
        // x coordinate beginning; while the x coordinate is smaller than the max column size, times it by
        // the space between each disc and then add the x coord to the disc space in order to create a new circle.
        for (int yCoor = YStart, row = RowMax - 1; yCoor < YStart + RowMax * DiscScale; yCoor += DiscScale, row--)
        {
            switch (Grid.State[row, col])
            {
                case GameGrid.Gridvalues.Red:
                    b = Brushes.Red;
                    break;
                case GameGrid.Gridvalues.Yellow:
                    b = Brushes.Yellow;
                    break;
                case GameGrid.Gridvalues.None:
                    b = Brushes.Aqua;
                    break;
            }
        }
        MainDisplay.DrawEllipse(p, xCoor, yCoor, 50, 50);
        MainDisplay.FillEllipse(b, xCoor, yCoor, 50, 50);
    }
    Invalidate();
}

1 Ответ

2 голосов
/ 11 марта 2010

Код в Drawgrid() необходимо выполнить, когда окно перерисовывается.

Вызов Invalidate() сообщает приложению, что ему нужно перерисовать содержимое окна (оно вызывает перерисовку вашего окна).Этот код (за исключением вызова Invalidate()) должен быть в вашем переопределенном методе OnPaint(), в противном случае все, что будет нарисовано этим кодом, будет немедленно перезаписано кодом рисования по умолчанию в OnPaint() (который по умолчанию будетвероятно, нарисуйте белый фон), когда вы делаете вызов Invalidate().

protected override void OnPaint(PaintEventArgs e)
{
    Graphics g = e.Graphics;

    // (your painting code here...)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...