Paint 问题

2001JinCheng 2008-03-06 07:50:38
我在Form1的picturebox控件中的Paint事件中写了很多代码,以下举例
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
SolidBrush solidBrush = new SolidBrush(Color.Black);
e.Graphics.FillRectangle(solidBrush,10,10,20,30 );
}
当我在Form1中在显示Form2时,当移动Form2在pictureBox1区域时,就不断触发Form1中pictureBox1_Paint事件,
由于在Paint事件中写了较多复杂计算的代码,这引起Form1中pictureBox1区域就抖动的比较厉害,
请问各位有没有办法解决?
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
2001JinCheng 2008-03-08
  • 打赏
  • 举报
回复
谢谢,用ONPaint基本上不闪了
sjm2003 2008-03-07
  • 打赏
  • 举报
回复
GDI很耗资源,你在picturebox的paint事件放太多代码是不行的,paint事件是重绘事件,当部分被遮盖然后显示时,它就会重绘被遮盖的部分!这样你移一次就重绘一次!你看看能不能把画图的代码,分开来写!放在protected override void OnPaint(pageEventArgs e)里,覆盖base.OnPaint(e),看下行不,不行的话就按3楼说的,用双缓存吧!
lalac 2008-03-07
  • 打赏
  • 举报
回复
DoubleBuffer
王集鹄 2008-03-06
  • 打赏
  • 举报
回复
建议先把绘制到位图(Bitmap)上
让后再DrawImage(Bitmap)到PictureBox上
这样Paint事件中只绘制那张位图而已。
空间换时间
Choi57671452 2008-03-06
  • 打赏
  • 举报
回复
如果Form1不是Active时就不计算咯。

110,534

社区成员

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

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

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