Несколько объектов Pen C#

У меня есть форма, в которой я рисую линии с помощью объекта Pen.

Мне интересно, следует ли мне использовать одну общую объектную ручку или одну объектную ручку для каждой нарисованной линии.

Лучше использовать: (один объект, общий для всех строк)

Pen green;
green = new Pen(Color,size);
foreach(line to be drawn)
   graphics.DrawLine(green, x1, y1, x2, y2);

Или следующее: (каждая строка является объектом)

foreach(line to be drawn)
   Pen green = new Pen(Color.Green, 3);
   graphics.DrawLine(green, x1, y1, x2, y2);
   green.Dispose();

На самом деле оба примера делают то, что я хочу, но мне интересно, что больше всего рекомендуется в этом случае.

Примечание. Я использую C# (WinForms).


person guanabara    schedule 17.01.2013    source источник
comment
Компилятор/дрожание должны оптимизировать его для вас, но, поскольку Pen является неуправляемым ресурсом win32, я бы предложил 1 экземпляр с предложением using вокруг него.   -  person asawyer    schedule 17.01.2013


Ответы (2)


На твоем месте

using (var green = new Pen(Color,size)
{
    foreach(line to be drawn)
    {
        graphics.DrawLine(green, x1, y1, x2, y2);
    }
}
person Mehmet Ataş    schedule 17.01.2013
comment
Это кажется хорошим вариантом. Согласно msdn оператор using Оператор using получает один или несколько ресурсов, выполняет оператор и затем удаляет ресурс. Спасибо. - person guanabara; 17.01.2013

Взгляните на это: Что произойдет, если Я не вызываю Dispose для объекта пера? Кажется, это прекрасно объяснено здесь...

Если коротко, то этот лучше:

Pen green = new Pen(Color,size);

foreach(line to be drawn)
   graphics.DrawLine(green, x1, y1, x2, y2);

green.Dispose();
person Leo Chapiro    schedule 17.01.2013