C#中pictureBox重绘、Timer控件、选择文件夹、响应键盘

花了点时间用C#写了一个连连看,主要是想熟悉下基本语法和常用类库。现在从工程里面截点代码做记录,高手请飘过。

 

在pictureBox的重绘问题上花了不少时间,开始我在OnPaint中的写的绘图函数,但图像总是一闪而过,好像图像是被后面的绘图给又覆盖了,后来就换了下面这种方法。

//PictureBox和Bitmap绑定,Graphics再和Bitmap绑定 PictureBox pictureBoxGrid; Bitmap bGrid = new Bitmap(pictureBoxGrid.Width, pictureBoxGrid.Height); Graphics gGrid = Graphics.FromImage(bGrid); pictureBoxGrid.Image = bGrid; //在这里用gGrid绘图 // pictureBoxGrid.Refresh();

 

Timer。

我当时要实现的效果是每隔一段时间更新pictureBox一次。

一开始用的System.Timers.Timer,但是在调用pictureBox的refresh函数时有问题,提示不能在外部线程调用控件。

后来我换成System.Windows.Forms.Timer,问题就解决了。

System.Windows.Forms.Timer timerGame; timerGame.Tick += new EventHandler(UpdateTimer); timerGame.Enabled = false;//控制是否出发Tick事件 timerGame.Interval = 1000; private void UpdateTimer(object Sender, EventArgs e) { //do something }

 

选择文件夹通用对话框

FolderBrowserDialog tmpDialog = new FolderBrowserDialog(); tmpDialog.Description = "请选择图片文件夹(包含按0至14编号的15个bmp格式图片文件)"; tmpDialog.ShowNewFolderButton = false; tmpDialog.RootFolder = Environment.SpecialFolder.MyComputer; tmpDialog.SelectedPath = Environment.CurrentDirectory + "//1"; if (tmpDialog.ShowDialog() == DialogResult.OK) { display.LoadPic(tmpDialog.SelectedPath); }

 

响应键盘事件

 

private void MainForm_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Space) { if (gameState == GameState.Doing) 暂停ToolStripMenuItem_Click(null, null); else if (gameState == GameState.Pause) 继续ToolStripMenuItem_Click(null, null); else 开始ToolStripMenuItem_Click(null, null); } }

 

 

你可能感兴趣的:(timer,object,C#,null)