繁体   English   中英

如何获得所有笔和画笔的阵列?

[英]How do I get an array of all Pens and Brushes?

我正在开发一个生成Mandelbrot集表示形式的应用程序。 我已经做好了,请看下面的图片,很酷的东西!

在此处输入图片说明

对于颜色,我使用这样的数组:

Pen[] pens = {
    Pens.Red,
    Pens.Green,
    Pens.Blue,
    Pens.Cyan,
    Pens.Magenta,
    Pens.Yellow
};

在我的代码中,我进一步使用此数组使用以下代码段填充像素:

while(iteration > 6)
{
    iteration -= 6;
}

graphics.DrawRectangle(pens[iteration-1], rectangle);

这给了我正确的颜色(您可以看到颜色图案一遍又一遍地重复)

我想给我的代码一个更大的颜色调色板,并利用所有可用的BrushesPens

但是,当我们查看Pens文档( https://msdn.microsoft.com/zh-cn/library/system.drawing.pens(v=vs.110).aspx )时,您会看到Pens类包含属性只要。

如何获得所有这些笔的阵列,而无需自己逐个颜色声明它? 这将占用大量的代码,在我看来,这似乎可以更轻松地完成。 谢谢!

如@stuartd所述,您将需要使用Reflection来获取这些。

var pens = typeof(Pens).GetProperties(BindingFlags.Static | BindingFlags.Public)
                       .Select(p => p.GetValue(null))
                       .OfType<System.Drawing.Pen>()
                       .ToArray();

上面的代码将返回一个Pen数组。 请记住,您还将获得其中可能要保留或删除的Transparent

如果将Pen换为Brush,则上面的相同代码将起作用。

您似乎对事情的运作方式有误解。

是的,有一堆预定义的笔通常可以避免程序不得不创建和销毁笔。 但是,您可以制作任何颜色的笔,而不仅限于已定义的笔。 因此,可能有1600万支笔(尽管如果Windows不尝试创建那么多笔,我会感到惊讶。)

获取所有预定义的笔不会得到所有可能的笔。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM