Сохранение состояния pictureBox при рисовании C#

Проблема следующая: есть метод рисования клетки в определенных координатах. После рисования этой клетки, координаты меняются и следующая клетка должна нарисоваться рядом, но предыдущая почему-то пропадает при повторном вызове метода. Как можно сохранять нарисованные ранее примитивы?

        public void MoveAnt()
    {
        Bitmap bmp = bmpMethod();
        Graphics g = loadGrid();

        if (((Bitmap)pictureGrid.Image).GetPixel(x, y).ToArgb() == Color.White.ToArgb())//проверка на то, что клетка белая
            {
                cellWhite = true;
                g.FillRectangle(blackBrush, x, y, sizeGrid, sizeGrid);
                    
            else if (((Bitmap)pictureGrid.Image).GetPixel(x, y).ToArgb() == Color.Black.ToArgb())
            {
                cellWhite = false;
                g.FillRectangle(whiteBrush, x, y, sizeGrid, sizeGrid);
            }
            if (cellWhite)
            {
                rotate -= 1;
            }
            else
            {
                rotate += 1;
            }
            if (rotate > 3)
                rotate = 0;
            if (rotate < 0)
                rotate = 3;

            switch (rotate)
            {
                case 0:
                    {
                        y -= sizeGrid;
                    }
                    break;
                case 1:
                    {
                        x -= sizeGrid;
                    }
                    break;
                case 2:
                    {
                        y += sizeGrid;
                    }
                    break;
                case 3:
                    {
                        x += sizeGrid;
                    }
                    break;
            
            }
    }

Это код рисования одной клетки. Если вызвать этот метод два раза, то клетка останется всего одна, а необходимо оставлять все ранее нарисованные клетки.

public Graphics loadGrid()//метод для рисования поля.
    {
        Bitmap bmp = bmpMethod();
        Graphics g = Graphics.FromImage(bmp);

        for(int i = 0; i < width/sizeGrid; i++)
        {
            g.DrawLine(blackPen, i*sizeGrid, 0, i*sizeGrid, height);
        }
        for(int i = 0; i < height/sizeGrid; i++)
        {
            g.DrawLine(blackPen, 0, i * sizeGrid, width, i*sizeGrid);
        }
        pictureGrid.Image = bmp;
        return g;//возвращаем g для переиспользования
    }

Ответы (1 шт):

Автор решения: YD359
  1. Возможно, вы создаете новый экземпляр Bitmap в методе bmpMethod.
  2. Возможно, вы выполняете очистку поля (Clear) перед рисованием. Приложите код методов bmpMethod и loadGrid.
→ Ссылка