在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(); 定义变量.