请教一下,本人弄个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
{
public GobangFrm()//窗体初始化
{
InitializeComponent();
GobangBox.MouseDown += new MouseEventHandler(GobangBox_MouseDown);
}
private void GobangFrm_Load(object sender, EventArgs e)//窗体加载函数
{
}
private void GobangBox_Paint_1(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);
}
private void GobangBox_MouseDown(object sender, MouseEventArgs e)//鼠标在picturebox上下棋事件
{
double h = (e.X) / 40;
double t = (e.Y) / 40;
if (e.Button == MouseButtons.Left)//判断是否点的是鼠标左键
{
int m = (int)Math.Floor(h) * 40 + 4;
int n = (int)Math.Floor(t) * 40 + 4;
Graphics paper;
paper = GobangBox.CreateGraphics();
Image pic = Image.FromFile("white.gif");
paper.DrawImage(pic, m, n, 30, 30);
}
}
}
private void GobangBox_MouseMove(object sender, MouseEventArgs e)//鼠标移动时在label上显示坐标
{
if (e.X < 600 && e.Y < 600)
{
//取下棋点
double h = (e.X)/ 40;
double t = (e.Y)/ 40;
int m = (int)Math.Floor(h)+1;
int n = (int)Math.Floor(t)+1;
zblbl.Text = "X:" + m.ToString() + " Y:" + n.ToString();
}
}
}
}
各位大大看看,我在GobangBox_MouseDown里面下棋,但是如果把窗体移出屏幕外或者最小化还原后棋子消失,网上说是重写,小鸟不明白,恳求回复。 --------------------编程问答-------------------- 重绘问题没考虑吧 --------------------编程问答-------------------- 本人不懂如何处理,你的问题就是我要的,不知道能不能给个解决方案。 --------------------编程问答-------------------- GobangBox_MouseDown中记录下需要绘制的棋子位置
在GobangBox_Paint_1中把这个棋子都画上 --------------------编程问答--------------------
我以前做了一个 俄罗斯方块,坦克大战 的小游戏;
当窗体被 遮盖之后,在显示就发现 某些方块不见了;
因为程序没有将 没有在屏幕上显示的区域,再次显示时,进行重新绘制;
楼主可以判断,某些 事件:图片框 大小变化等,选择将 整个 图片框全部绘制,而不是只绘制一部分; --------------------编程问答-------------------- 顶!
每次拖动窗体(mouseUp)时,强制刷新! --------------------编程问答-------------------- 大家都把我问题提出来了,就是不知道能不能给个代码来解决一下,不够三楼的想法不错,但是我想要的是重绘代码,而不是在paint()里面重做。
补充:.NET技术 , C#