在绘画事件中使用新画笔是否更好,即
protected override void OnPaint(PaintEventArgs e) {
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
using (SolidBrush b = new SolidBrush(Color.FromArgb(129, 242, 121))) {
for (int i = 0; i < 12; i++) {
e.Graphics.FillPath(b, path[i]);
}
}
base.OnPaint(e);
}
或者在顶部定义一次,并在dispose方法中进行dispose,即
SolidBrush _brush;
protected SolidBrush Brush {
get {
if (_brush == null)
_brush = new SolidBrush(Color.FromArgb(129, 242, 121));
return _brush;
}
}
最佳答案
创建和销毁画笔和画笔之类的绘图对象非常便宜,大约需要一微秒。实际绘制的代码成本的一小部分,通常以毫秒为单位。因此,您应该避免存储它们,这只会占用操作系统gdi对象堆中的宝贵空间,而gdi对象堆是需要由所有正在运行的进程共享的资源。唯一昂贵的绘图对象是字体。然而,winforms通过在内部缓存字体来解决这个问题。
使其一致,始终将using语句应用于您创建的图形对象。