学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

制作方块出了问题

制作方块出了问题

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

namespace tetris
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private bool[,] struArr = new bool[5, 5];
        Color blockColor = Color.Red;
        private void label1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gp = e.Graphics;
            Pen p = new Pen(Color.White);
            for (int i = 0; i < 155; i = i + 31)//0 not 1
            {
                gp.DrawLine(p, 1, i, 155, i);
            }
            for (int i = 0; i < 155; i = i + 31)
            {
                gp.DrawLine(p, i, 1, i, 155);
            }
        }

        private void label1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            
                return;
            
            int xPos, yPos;
            xPos = e.X / 31;
            yPos = e.Y / 31;
            struArr[xPos, yPos] = !struArr[xPos, yPos];

            bool b = struArr[xPos, yPos];
            Graphics gp = label1.CreateGraphics();
            SolidBrush s = new SolidBrush(b ? blockColor : Color.Black);
            gp.FillRectangle(s, 31 * xPos + 1, 31 * yPos + 1, 30, 30);
            gp.Dispose();
        }
    }
}                                                                                                                当你移动鼠标时
      回自动画黑线
  不知哪儿错了
如附件所示
附件: 您所在的用户组无法下载或查看附件

TOP

你说的应该不是画线吧,是定制方块的第一步,改变颜色
也不是鼠标移动,而是点击,
我以前做过,视频bbs上有

TOP

private bool[,] struArr = new bool[5, 5];
        private Color blockColor = Color.Red;
private void lblMode_Paint(object sender, PaintEventArgs e)
        {
            Graphics gp = e.Graphics;
            gp.Clear(Color.Black);
            Pen p = new Pen(Color.White);
            for (int i = 31; i < 155; i = i + 31)//竖线
            {
                gp.DrawLine(p, i, 1, i, 155);
            }
            for (int i = 31; i < 155; i = i + 31) //横线
            {
                gp.DrawLine(p, 1, i, 155, i);
            }

            SolidBrush s = new SolidBrush(blockColor);
            for (int x = 0; x < 5; x++)
            {
                for (int y = 0; y < 5; y++)
                {
                    if (struArr[x, y])
                    {
                        gp.FillRectangle(s, 31 * x + 1, 31 * y + 1, 30, 30);
                    }
                }
            }
        }

        private void lblMode_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }
            else
            {
                int xPos, yPos;
                xPos = e.X / 31;
                yPos = e.Y / 31;
                struArr[xPos, yPos] = !struArr[xPos, yPos];
                bool b = struArr[xPos, yPos];
                Graphics gp = lblMode.CreateGraphics();
                SolidBrush s = new SolidBrush(b ? blockColor : Color.Black);
                gp.FillRectangle(s, 31 * xPos + 1, 31 * yPos + 1, 30, 30);
                gp.Dispose();
            }
        }

TOP

发新话题