【问题标题】:Multiple Pen objects C#多个 Pen 对象 C#
【发布时间】:2013-01-17 16:16:39
【问题描述】:

我有一个表格,我在其中使用 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)

【问题讨论】:

  • 编译器/抖动应该为您优化它,但由于 Pen 是一个 win32 非托管资源,我建议使用 1 个实例,并在其周围加上 using 子句。

标签: c# object draw pen


【解决方案1】:

如果我是你

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

【讨论】:

  • 这似乎是一个不错的选择。根据 msdn using 语句“使用语句获取一个或多个资源,执行一个语句,然后处置资源。”谢谢。
【解决方案2】:

看看这个:What happens if I don't call Dispose on the pen object? 这里似乎解释得很好……

为了简短起见,这个似乎更好:

Pen green = new Pen(Color,size);

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

green.Dispose();

【讨论】:

    猜你喜欢
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多