在写一个五子棋程序,背景是一张图(非纯色),我想做一个光标,将鼠标所在位置的那个格子高亮出来。
现在遇到的问题是,当鼠标切换格子的时候,我需要将上一个格子的光标清除,同时在现在这个格子上绘制新光标。
我用的方法是: Graphics g = form_main.pictureBox_Main.CreateGraphics();
g.DrawImage(form_main.pictureBox_Main.BackgroundImage, 0, 0, 800, 600);
这样能达到我要的效果,但是每次移动一个格子,窗口上所有棋子得重绘一次,这样就有闪烁。
请问有其他办法解决么?
现在遇到的问题是,当鼠标切换格子的时候,我需要将上一个格子的光标清除,同时在现在这个格子上绘制新光标。
我用的方法是: Graphics g = form_main.pictureBox_Main.CreateGraphics();
g.DrawImage(form_main.pictureBox_Main.BackgroundImage, 0, 0, 800, 600);
这样能达到我要的效果,但是每次移动一个格子,窗口上所有棋子得重绘一次,这样就有闪烁。
请问有其他办法解决么?
来创建透明图层 底图层为棋盘, 再上面一次画棋子, 然后拼合起来
实际Graphics.Clear(Color .FromArgb (0));
为清除所有像素数据;
但是默认的为黑色。如果画出全部是黑色就是清除成功了。
http://topic.csdn.net/u/20120814/10/CCF59B0E-A2B8-4B0E-A2B5-9EA3A81CF023.html
有我的发光字画法。或许可以给你一些启发。
或者调用控件的Invalidate,整个重绘
或者用绘制底图覆盖原来的对象打到清除的目的。比如你底图黑色 你选框白色 你再画一个黑色的选框来覆盖。