我有一个PictureBox,它用作画布。
List<RectangleObj>
aprox 8000的数组大小。
“RectangleObj”是一个简单的矩形类,一旦你调用它的Draw(Graphic g)
方法就会绘制
g.DrawRectangle(...)
和g.FillRectangle(...)
在应用程序Form.cs中,我使用pictureBox1_Paint(...)
循环RectangleObj
数组并调用该类的Draw
方法。
喜欢这个。
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
for (int i = 0; i < RectList.Count(); i++) //List<RectangleObj> count = 8000
RectList[i].Draw(e.Graphics);
}
每次鼠标点击RectangleObj
并拖动更改其位置(鼠标移动事件)时,都会调用paint事件。由于数组的数量很大,因此paint事件没有足够的时间来完成循环并且充满鼠标移动。所以,这会使Paint事件变慢。
有人可以建议我如何优化此程序。
答案 0 :(得分:3)
您是否考虑过绘制到内存位图,然后将其blit到屏幕?
答案 1 :(得分:1)
这里有几件事情:
答案 2 :(得分:0)
根据移动矩形的位置及其先前位置确定需要重绘哪些矩形,并仅重绘这些矩形。将绘画剪辑为仅包含已失效的部分。