在.Net Compact Framework中绘制某些形状时,我发现了一些令人惊讶的结果。
Method1和Method2绘制了一些矩形,但是Method1比Method2快,这是代码:
方法1:
int height = Height;
for (int i = 0; i < data.Length; i++)
{
barYPos = Helper.GetPixelValue(Point1, Point2, data[i]);
barRect.X = barXPos;
barRect.Y = barYPos;
barRect.Height = height - barYPos;
//
//rects.Add(barRect);
_gBmp.FillRectangle(_barBrush, barRect);
//
barXPos += (WidthOfBar + DistanceBetweenBars);
}
方法2:
for (int i = 0; i < data.Length; i++)
{
barYPos = Helper.GetPixelValue(Point1, Point2, data[i]);
barRect.X = barXPos;
barRect.Y = barYPos;
barRect.Height = Height - barYPos;
//
//rects.Add(barRect);
_gBmp.FillRectangle(_barBrush, barRect);
//
barXPos += (WidthOfBar + DistanceBetweenBars);
}
两者之间的唯一区别在于
Method1
我将控件的Height
存储在局部变量中。谁能解释.Net Compact Framework中绘图的原因和一些准则?
最佳答案
方法2较慢,因为在每次for循环迭代时都要访问Height属性。此属性可能会导致一些耗时的计算,并将其放在循环外部的局部变量中将充当缓存。