无聊时所创,也忘了写注释,看起来可能有点费劲。代码保留下来,或许做个C#的俄罗斯方块或者五子棋之类的东西会有用。 
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 frmConfig : Form
{
public frmConfig()
{
InitializeComponent();
}
private bool[,] arr = new bool[5, 5];
private Color blockColor = Color.Red;
private void lblModle_Paint(object sender, PaintEventArgs e)
{
Graphics gp = e.Graphics;
gp.Clear(Color.Black);
Pen p = new Pen(Color.White);
for (int i = 30; i < 156; i += 31)
{
gp.DrawLine(p, 1, i, 155, i);
}
for (int i = 30; i < 156; i += 31)
{
gp.DrawLine(p, i, 1, i, 155);
}
SolidBrush s = new SolidBrush(blockColor);
for (int x = 0; x < 5; x++)
{
for (int y = 0; y < 5; y++)
{
if (arr[x, y])
{
gp.FillRectangle(s,31*x,31*y,30,30);
}
}
}
}
private void lblModle_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Left)
return;
int xPoint, yPoint;
xPoint = e.X / 31;
yPoint = e.Y / 31;
arr[xPoint, yPoint] = !arr[xPoint, yPoint];
bool b = arr[xPoint, yPoint];
Graphics gp = lblModle.CreateGraphics();
SolidBrush s = new SolidBrush(b?blockColor:Color.Black);
gp.FillRectangle(s,31*xPoint,31*yPoint,30,30);
gp.Dispose();
}
private void lblColor_Click(object sender, EventArgs e)
{
colorDialog1.ShowDialog();
blockColor = colorDialog1.Color;
lblColor.BackColor = colorDialog1.Color;
lblModle.Invalidate();
}
private void btnAdd_Click(object sender, EventArgs e)
{
bool isEmpty = false;
foreach (bool i in arr)
{
if (i)
{
isEmpty = true;
break;
}
}
if (!isEmpty)
{
MessageBox.Show("图案为空,请您绘制图案!","提示");
return;
}
StringBuilder sb = new StringBuilder(25);
foreach (bool i in arr)
{
sb.Append(i ? "1" : "0");
}
&nb
sp; string blockString = sb.ToString();
foreach (ListViewItem item in lstBlockSet.Items)
{
if (item.SubItems[0].Text == blockString)
{
MessageBox.Show("该图已经存在!", "提示");
return;
}
}
ListViewItem myItem = new ListViewItem();
myItem = lstBlockSet.Items.Add(blockString);
myItem.SubItems.Add(Convert.ToString(blockColor.ToArgb()));
}
private void lstBlockSet_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
{
blockColor = Color.FromArgb(int.Parse(e.Item.SubItems[1].Text));
lblColor.BackColor
style="font: 10pt Fixedsys; color: #0a246a">= blockColor;
string s = e.Item.SubItems[0].Text;
for (int i = 0; i < s.Length; i++)
{
arr[i / 5, i % 5] = (s[i] == '1') ? true : false;
}
} lblModle.Invalidate();
}
}
}




