请教 怎么让paint事件不停的刷新?

xiaoyue520 2010-04-28 10:01:29
private void pic_Paint(object sender, PaintEventArgs e)
{
}
...全文
260 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-04-28
  • 打赏
  • 举报
回复
控件.CreateGraphics()
xiaoyue520 2010-04-28
  • 打赏
  • 举报
回复
用timer tick事件e.Graphics怎么用?定义变量?
lpingz 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiaoyue520 的回复:]

是这样,我想实现一个报警功能,当温度超标,Picture 上面绘制一个红绿相间的小方块作为报警,所以需要不停的闪动交替
[/Quote]
直接用timer定时切换图片吧。刷新不是很必要。
兔子-顾问 2010-04-28
  • 打赏
  • 举报
回复
或是弄个timer定时修改控件背景色也可以。
或是复杂点,呵呵。自定义控件,在控件里定义好start,stop等方法,也要定义定时器,来更新控件自己。我估计直接用一个定时器,间隔时间刷新控件背景对你来说比较容易。
xiaoyue520 2010-04-28
  • 打赏
  • 举报
回复

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();
}



我的代码是这样的
xiaoyue520 2010-04-28
  • 打赏
  • 举报
回复
不知道这种功能,有没有其它方法可以代替?
兔子-顾问 2010-04-28
  • 打赏
  • 举报
回复
用picturebox,然后弄个gif图片就可以闪了。
xiaoyue520 2010-04-28
  • 打赏
  • 举报
回复
是这样,我想实现一个报警功能,当温度超标,Picture 上面绘制一个红绿相间的小方块作为报警,所以需要不停的闪动交替
兔子-顾问 2010-04-28
  • 打赏
  • 举报
回复
不知道你想实现什么。呵呵。
这样的设计是很不合理的,除非是恶作剧软件。
如果是游戏或多个需要反复修改的图形操作,一般是写一个游戏引擎,然后写个死循环对屏幕绘制的,例如
public GameEngine
{
....
public void Update()
{
....
}
}

public class Game
{
public static void Main()
{
GameEngine ge = new GameEngine();
while(running)
{
ge.Update();
//GetUserInput();
}
}
}
xiaoyue520 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyazhe 的回复:]
为什么要不停的刷新呢?那不是很闪?不停的刷新容易,Paint方法里加一句
(sender as Control).Invalidate();
[/Quote]

再请教一下,我有N个控件都是用的paint都想让他不停的刷新有没有好的办法

(sender as Control).Invalidate();

只能让一个不停的刷新,其它的控件都好像处于假死状态



兔子-顾问 2010-04-28
  • 打赏
  • 举报
回复
为什么要不停的刷新呢?那不是很闪?不停的刷新容易,Paint方法里加一句
(sender as Control).Invalidate();

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧