Tworzenie planszy do szachów

0

Witam, mam taki o to kod:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
          
            bool drawBlack = true;
            for (int x = 0; x < 8; x++)
            {
                for (int y = 0; y < 8; y++)
                {
                    if (drawBlack)
                    {
                        System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
                        System.Drawing.Graphics formGraphics = this.CreateGraphics();
                        formGraphics.FillRectangle(myBrush, new Rectangle(20, 20, 20, 20));
                        myBrush.Dispose();
                        formGraphics.Dispose();
                    }
                    else
                    {
                        System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White);
                        System.Drawing.Graphics formGraphics = this.CreateGraphics();
                        formGraphics.FillRectangle(myBrush, new Rectangle(20, 20, 20, 20));
                        myBrush.Dispose();
                        formGraphics.Dispose();
                    }
                    drawBlack = !drawBlack;
                }
                drawBlack = !drawBlack; // zeby kolejnosc w nastepnej linii pol czarne-biale byla inna, niz w poprzedniej linii 
            } 
        }
    }
}

mający rysować planszę pod szachy jednak nie realizuje on się. Proszę o pomoc i Pozdrawiam.

1

Kod zadziała jak do Form1 dodasz zdarzenie Paint i tam go wkleisz.

Kod rysujący szachownicę:

private void Form1_Paint(object sender, PaintEventArgs e)
{
    int xPos = 10;
    int yPos = 10;

    bool drawBlack = true;
            
    for (int x = 0; x < 8; x++)
    {
        for (int y = 0; y < 8; y++)
        {
            if (drawBlack)
            {
                System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
                System.Drawing.Graphics formGraphics = this.CreateGraphics();
                formGraphics.FillRectangle(myBrush, new Rectangle(xPos, yPos, 20, 20));
                myBrush.Dispose();
                formGraphics.Dispose();
            }
            else
            {
                System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White);
                System.Drawing.Graphics formGraphics = this.CreateGraphics();
                formGraphics.FillRectangle(myBrush, new Rectangle(xPos, yPos, 20, 20));
                myBrush.Dispose();
                formGraphics.Dispose();
            }

            xPos += 20;
            drawBlack = !drawBlack;
        }

        yPos += 20;
        xPos = 10;
        drawBlack = !drawBlack; // zeby kolejnosc w nastepnej linii pol czarne-biale byla inna, niz w poprzedniej linii 
    }
}
0

Dzięki wielkie,
mam takie pytanie może głupie albo banalne ale.. jak próbuje uruchomić ten kod to w okienku Windows Form Application nic się nie pokazuje, żadnego efektu wizualnego nie ma

1

Musisz dodać zdarzenie Paint. Cały kod klasy Form1:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        int xPos = 10;
        int yPos = 10;

        bool drawBlack = true;

        for (int x = 0; x < 8; x++)
        {
            for (int y = 0; y < 8; y++)
            {
                if (drawBlack)
                {
                    System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
                    System.Drawing.Graphics formGraphics = this.CreateGraphics();
                    formGraphics.FillRectangle(myBrush, new Rectangle(xPos, yPos, 20, 20));
                    myBrush.Dispose();
                    formGraphics.Dispose();
                }
                else
                {
                    System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White);
                    System.Drawing.Graphics formGraphics = this.CreateGraphics();
                    formGraphics.FillRectangle(myBrush, new Rectangle(xPos, yPos, 20, 20));
                    myBrush.Dispose();
                    formGraphics.Dispose();
                }

                xPos += 20;
                drawBlack = !drawBlack;
            }

            yPos += 20;
            xPos = 10;
            drawBlack = !drawBlack; // zeby kolejnosc w nastepnej linii pol czarne-biale byla inna, niz w poprzedniej linii 
        }
    }
}
0

Dziękuję, świetnie działa. Już mam jakąś podstawę do dalszego tworzenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1