C#五子棋开发问题:下棋不见棋子
C#五子棋开发问题:下棋不见棋子,但是把窗体拖出屏幕外又拖回来,来回几次,棋子有在棋盘上(刚才鼠标点击的地方)。代码如下:
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 Gobang
{
public partial class GobangFrm : Form
{
int[,] arr = new int[15, 15];
private PictureBox[,] GobangpictureBox = new PictureBox[15, 15];
public GobangFrm()
{
InitializeComponent();
GobangBox.Paint += new PaintEventHandler(GobangBox_Paint);
GobangBox.MouseClick += new MouseEventHandler(GobangBox_MouseClick);
}
private void GobangBox_Paint(object sender, PaintEventArgs e)//画棋盘和重绘棋子
{
Graphics paper = e.Graphics;
Pen pen = new Pen(Color.Black, 2);
SolidBrush Brush = new SolidBrush(Color.White);
for (int l = 0; l < 600; l += 40)
{
paper.DrawLine(pen, 20, l + 20, 580, l + 20);//画横线
paper.DrawLine(pen, 20 + l, 20, l + 20, 580);//画竖线
}
paper.FillEllipse(Brush, 297, 297, 5, 5);
//下面是重绘代码
for (int i = 0; i < 15; i++)
for (int j = 0; j < 15; j++)
{
if (arr[i, j] == 1)
{
int m = i * 40 + 4;
int n = j * 40 + 4;
Graphics Repaper=e.Graphics;
Repaper = GobangBox.CreateGraphics();
Image pic = Image.FromFile("white.gif");
Repaper.DrawImage(pic, m, n, 30, 30);
}
}
}
private void GobangBox_MouseClick(object sender, MouseEventArgs e)//下棋
{
if (e.Button == MouseButtons.Left)//判断是否点的是鼠标左键
{
double h = (e.X) / 40;
double t = (e.Y) / 40;
int i = (int)Math.Floor(h);
int j = (int)Math.Floor(t);
int m = i * 40 + 4;
int n = j * 40 + 4;
GobangpictureBox[i,j] = new PictureBox();
GobangpictureBox[i, j].Image = global::Gobang.Properties.Resources.white;
arr[i, j] = 1;
}
}
}
}
想要解决的问题:1。当鼠标点击时把棋子显示出来、2。当把窗体最小化还原后棋子不消失或者把窗体拖出屏幕外在托回来后棋子不消失。
--------------------编程问答--------------------
if (flag)
{
paper.DrawImage(imgBlackStone, m * 40, n * 40, imgBlackStone.Width, imgBlackStone.Height);
}
else
{
paper.DrawImage(imgWhiteStone, m * 40, n * 40, imgWhiteStone.Width, imgWhiteStone.Height);
}
楼主可以参考参考这,,
http://www.cnblogs.com/esshs/archive/2005/04/01/129824.html --------------------编程问答--------------------
if (flag)
{
paper.DrawImage(imgBlackStone, m * 40, n * 40, imgBlackStone.Width, imgBlackStone.Height);
}
else
{
paper.DrawImage(imgWhiteStone, m * 40, n * 40, imgWhiteStone.Width, imgWhiteStone.Height);
}
楼主可以参考参考这,,
http://www.cnblogs.com/esshs/archive/2005/04/01/129824.html --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 怎么看不到我回复的帖子?
1、2楼都看不到了,难道被删回复了,?? --------------------编程问答-------------------- http://www.cnblogs.com/esshs/archive/2005/04/01/129824.html --------------------编程问答-------------------- 这里有个五子棋的例子,你可以参考一下:
http://download.csdn.net/detail/linxi729778865/3056350 --------------------编程问答--------------------
内附下载地址http://files.cnblogs.com/esshs/FiveStones(v1.0.0).rar --------------------编程问答-------------------- 在任何你想重绘棋子的时候触发的事件里面重绘一下GobangBox,Refresh或者什么的 --------------------编程问答-------------------- 木有Refresh() --------------------编程问答-------------------- 没有重绘 --------------------编程问答-------------------- 我也做个这个来练练。 --------------------编程问答-------------------- arr[i, j] = 1;
下面加上GobangBox.Refresh();
--------------------编程问答-------------------- --------------------编程问答-------------------- 系统维护为什么我的C#板块进不了,你们都能进?
我是在我回复的帖子中点连接进来的的,,悲剧。。。
补充:.NET技术 , C#