![]() |
Languages »
C# »
General
Intermediate
Use Reflection To Generate Complete Color ChartBy SoftomatixArtcile on use of reflection to get color values to draw the complete color chart |
C#, Windows, .NET 1.0, Visual Studio, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

In GDI+, for drawing any item we need to pick up a color for either creating
a brush or a pen. .NET framework has provided System.Drawing.Color
structure which contains 141 colors. That makes life pretty easy. But
there are some developers like me who have hard time corelating the color names
with what actually they look like.
To solve this probelm, we decided to come up with a chart that will display
all the colors along with the names used in Color structure. The
crude approach could have been that we use a huge switch statement
with each case representing the colors defined in the structure.
But there is a very nice approach that we took. .NET framework procides a
very powerful feature called Reflection. All the colors in
System.Drawing.Color structure are declared as public
static properties. So the idea is pretty simple.
Type of System.Drawing.Color strcuture.
GetProperties method on Type instance. Make
sure that you use the appropriate BindingFlags attribute to get
only the properties that are of interest. In our case we are only interested in
public static properties. Therefore we will use
BindingFlags.Public, BindingFlags.Static and
BindingFlags.DeclaredOnly ORed together. The purpose of specifying
BindingFlags.DeclaredOnly attribute is to get only the
static properties that are declared only in this class only. We are
not interested in properties of any parent class or structure.
PropertyInfo array value returned
by GetProperties method. Call Name property on
PropertyInfo object to get the name of each color. And call
GetValue method to get the actual value of Color.
The complete code is attached with the article. Take a look at it for details.
Color testColor = Color.AliceBlue;
Type colorType = testColor.GetType();
if (null != colorType)
{
PropertyInfo[] propInfoList =
colorType.GetProperties(BindingFlags.Static|BindingFlags.DeclaredOnly
|BindingFlags.Public);
int nNumProps = propInfoList.Length;
for (int i = 0; i < nNumRows; i++)
{
PropertyInfo propInfo = (PropertyInfo)propInfoList[nIdx];
Color color = (Color)propInfo.GetValue(null, null);
string strColorName = propInfo.Name;
}
}
The complete color chart is available at our web site at Complete Color Chart.
| You must Sign In to use this message board. | |||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 15 Apr 2002 Editor: Nishant Sivakumar |
Copyright 2002 by Softomatix Everything else Copyright © CodeProject, 1999-2009 Web11 | Advertise on the Code Project |