首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历“Brush”

遍历“Brush”
EN

Stack Overflow用户
提问于 2011-06-15 05:26:32
回答 3查看 624关注 0票数 1

我想要得到所有的笔刷,这基本上是伪代码,它将解释我正在尝试做的事情:

代码语言:javascript
复制
For Each B in Brushes
   'Something with Brushes
End For

笔刷是一种类型,那么我如何才能做到这一点呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-15 06:08:39

不使用反射:

代码语言:javascript
复制
Dim brushes = [Enum].GetValues(GetType(KnownColor)) _
    .Cast(Of KnownColor)() _
    .Where(Function(k) k >= KnownColor.Transparent AndAlso k < KnownColor.ButtonFace) _ '//Exclude system colors
    .Select(Function(k) New SolidBrush(Color.FromKnownColor(k)))

编辑(来自Thomas comment)

获取颜色名称(用于笔刷)

代码语言:javascript
复制
Dim brushColorNames = [Enum].GetValues(GetType(KnownColor)) _
    .Cast(Of KnownColor)() _
    .Where(Function(k) k >= KnownColor.Transparent AndAlso k < KnownColor.ButtonFace) _ '//Exclude system colors
    .Select(Function(k) k.ToString())
票数 3
EN

Stack Overflow用户

发布于 2011-06-15 05:32:13

你能做到吗?

代码语言:javascript
复制
dim brush as new Brush() 'needs a proper brush instance, not sure where there is one, so this line won't work
Dim type As Type = GetType(System.Drawing.Brushes)
Dim properties As PropertyInfo() = type.GetProperties(BindingFlags.Static)
For Each [property] As PropertyInfo In properties
    Console.WriteLine("{0} = {1}", [property].Name, [property].GetValue(brush, Nothing))
Next
票数 4
EN

Stack Overflow用户

发布于 2011-06-15 06:08:11

这取决于你想用画笔做什么。

代码语言:javascript
复制
For Each b in GetType(Brushes).GetProperties
  Dim colorName = b.Name ' If you want color names (AliceBlue through YellowGreen)
  Dim brushValue = b.GetValue(Nothing, Nothing) ' Gives you a Brush
  Dim brushColor = brushValue.Color ' Gives you the hex color of the brush (AliceBlue = #FFF0F8FF)
Next
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6350376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档