首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在Picturebox中图片上绘制矩形解决方案

2012-04-14 
在Picturebox中图片上绘制矩形事先通过以下方法为picturebox1添加图片C# codeprivate void toolStripButto

在Picturebox中图片上绘制矩形
事先通过以下方法为picturebox1添加图片

C# code
  private void toolStripButton1_Click(object sender, EventArgs e)        {            OpenFileDialog open = new OpenFileDialog();            open.Filter = "文本|*.jpg";            open.InitialDirectory = Directory.GetCurrentDirectory();            open.RestoreDirectory = true;            if (open.ShowDialog()==DialogResult.OK)            {                backpicture = open.FileName;                curimage = Image.FromFile(backpicture);            }            if (curimage != null)            {                pbitmap = new Bitmap(curimage);                pictureBox1.Image = pbitmap;                getbitmaparr(pbitmap);            }                    }


然后再通过在picturebox1上的单击事件绘制矩形这个矩形的绘制函数写在picturebox1的Paint事件中如程序
C# code
Graphics recte = e.Graphics;//pictureBox1.CreateGraphics();                                ivisible = newf.iwires;                itemp = iarrbitmapindex * ivisible;                ilocationy = (itemp / curimage.Width) * ivisible;   //得到Y坐标                ilocationx = itemp % curimage.Width;                 //得到X坐标                Pen rectpen = new Pen(Color.Green, 2);                Rectangle rect = new Rectangle(ilocationx, ilocationy, ivisible, ivisible);                                recte.DrawRectangle(rectpen, rect);                rectpen.Dispose();                this.Invalidate(true);   

症状是:开始添加图片还很正常,cpu使用率都在一个正常水平,但当我点击图片时,图片上没有反应,这时我把窗口缩小一下(开始时最大化)该软件的CPU的使用率突然达到25%,而且绘制的矩形也出现了,再次点击窗口矩形也能正常画上去;
这是因为什么啊CPU怎么占用那么高,而且还必须改变一下窗口的大小才能显示

[解决办法]
控件重绘时才触发Paint事件。所以当点击图片时,图片上没有反应是正常的。
[解决办法]
CPU的使用率突然增大,也正常。因为CPU要处理窗口变化数据。想要开始就有反应那就把画矩形的代码放到toolStripButton1_Click事件中。使用Graphics recte = pictureBox1.CreateGraphics(); 定义变量.

热点排行