Code Bye

c#生成一个5*5的宫格,并且点击格子变色

c#生成一个5*5的宫格,并且点击格子变色,求帮助
解决方案

40

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 宫格
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Text = "宫格";
            MouseDown += new MouseEventHandler(OnMouseDown);
        }
        Rectangle[] rects;
        protected override void OnLoad(EventArgs e)
        {
            int d = (Height - 60) / 5;
            int x = (Width - d * 5) / 2;
            int y = (Height - d * 5) / 4;
            
            rects = new Rectangle[25];
            for(var i = 0; i < 5; i++)
            {
                for(var j = 0; j < 5 ; j++)
                {
                    rects[i * 5 + j] = new Rectangle(x + i * d, y + j * d, d - 2, d - 2);
                }
            }
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            var g = e.Graphics;
            for (var i = 0; i < 5; i++)
            {
                for (var j = 0; j < 5; j++)
                {
                    g.DrawRectangles(Pens.Black, rects);
                }
            }
            if (fill != Rectangle.Empty) g.FillRectangle(Brushes.Red, fill);
        }
        Rectangle fill = Rectangle.Empty;
        void OnMouseDown(object sender, MouseEventArgs e)
        {
            foreach (var r in rects)
            {
                if(r.Contains(e.X, e.Y))
                {
                    fill = r;
                    Invalidate();
                    break;
                }
            }
        }
    }
}


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c#生成一个5*5的宫格,并且点击格子变色