为什么要不停的刷新呢?那不是很闪?不停的刷新容易,Paint方法里加一句 (sender as Control).Invalidate();
再请教一下,我有N个控件都是用的paint都想让他不停的刷新有没有好的办法(sender as Control).Invalidate();只能让一个不停的刷新,其它的控件都好像处于假死状态
不知道你想实现什么。呵呵。 这样的设计是很不合理的,除非是恶作剧软件。 如果是游戏或多个需要反复修改的图形操作,一般是写一个游戏引擎,然后写个死循环对屏幕绘制的,例如 public GameEngine { .... public void Update() { .... } }public class Game { public static void Main() { GameEngine ge = new GameEngine(); while(running) { ge.Update(); //GetUserInput(); } } }
(sender as Control).Invalidate();
再请教一下,我有N个控件都是用的paint都想让他不停的刷新有没有好的办法(sender as Control).Invalidate();只能让一个不停的刷新,其它的控件都好像处于假死状态
这样的设计是很不合理的,除非是恶作剧软件。
如果是游戏或多个需要反复修改的图形操作,一般是写一个游戏引擎,然后写个死循环对屏幕绘制的,例如
public GameEngine
{
....
public void Update()
{
....
}
}public class Game
{
public static void Main()
{
GameEngine ge = new GameEngine();
while(running)
{
ge.Update();
//GetUserInput();
}
}
}
private void pic_Paint(object sender, PaintEventArgs e)
{
PictureEdit pic = sender as PictureEdit; string code = pic.Name.Replace("pic", "") + "#"; if (this.btnItemForLink.Tag.ToString().Equals("linked") && pic.Tag.ToString() == "1")
{
Rectangle r = new Rectangle(pic.ClientRectangle.Width / 2 / 2, pic.ClientRectangle.Height / 2 / 2, 10, 10); if (this._brefreshpic)
{
e.Graphics.FillRectangle(Brushes.LimeGreen, r); this._brefreshpic = false;
}
else
{
e.Graphics.FillRectangle(Brushes.Red, r); this._brefreshpic = true;
} pic.Invalidate();
}我的代码是这样的
或是复杂点,呵呵。自定义控件,在控件里定义好start,stop等方法,也要定义定时器,来更新控件自己。我估计直接用一个定时器,间隔时间刷新控件背景对你来说比较容易。