我在 .Net Compact Framework 中绘制一些形状时发现了一些令人惊讶的结果。
方法1和方法2绘制了一些矩形,但方法1比方法2更快,代码如下:
方法一:
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 属性。这个属性可能会导致一些耗时的计算,将其放在循环外的局部变量中充当缓存。
关于c# - 在 C# 中访问控件的高度、宽度属性较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687820/