visual studio net lineas form example dibujar .net graphics

.net - studio - system.drawing.graphics c# example



¿Cómo puedo obtener una colección de todos los colores en System.Drawing.Color? (7)

Además de lo que dijo jons911, si solo quiere los colores "nombrados" y no los colores del sistema como "ActiveBorder", la clase Color tiene una propiedad IsSystemColor que puede usar para filtrarlos.

¿Cómo puedo extraer la lista de colores en System.Drawing.Color struct en una colección o matriz?

¿Hay una manera más eficiente de obtener una colección de colores que usar esta estructura como base?


Deberá usar el reflejo para obtener los colores de System.Drawing.Color struct.

System.Collections.Generic.List<string> colors = new System.Collections.Generic.List<string>(); Type t = typeof(System.Drawing.Color); System.Reflection.PropertyInfo[] infos = t.GetProperties(); foreach (System.Reflection.PropertyInfo info in infos) if (info.PropertyType == typeof(System.Drawing.Color)) colors.Add(info.Name);


En System.Drawing hay un Enum KnownColor, que especifica los colores conocidos del sistema.

List <>: List allColors = new List (Enum.GetNames (typeof (KnownColor)));

Array [] string [] allColors = Enum.GetNames (typeof (KnownColor));


Prueba esto:

foreach (KnownColor knownColor in Enum.GetValues(typeof(KnownColor))) { Trace.WriteLine(string.Format("{0}", knownColor)); }


Aquí hay una página en línea que muestra una muestra útil de cada color junto con su nombre.


La mayoría de las respuestas aquí resultan en una colección de nombres de colores (cadenas) en lugar de objetos System.Drawing.Color. Si necesita una colección de colores reales del sistema, use esto:

using System.Collections.Generic; using System.Drawing; using System.Linq; ... static IEnumerable<Color> GetSystemColors() { Type type = typeof(Color); return type.GetProperties().Where(info => info.PropertyType == type).Select(info => (Color)info.GetValue(null, null)); }


Entonces lo harías:

string[] colors = Enum.GetNames(typeof(System.Drawing.KnownColor));

... para obtener una variedad de todos los collors.

O ... Podrías usar el reflejo para obtener los colores. KnownColors incluye elementos como "Menú", el color de los menús del sistema, etc. Esto podría no ser lo que deseaba. Entonces, para obtener solo los nombres de los colores en System.Drawing.Color, puede usar reflection:

Type colorType = typeof(System.Drawing.Color); PropertyInfo[] propInfoList = colorType.GetProperties(BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.Public); foreach (System.Reflection.PropertyInfo c in propInfoList) { Console.WriteLine(c.Name); }

Esto escribe todos los colores, pero usted puede adaptarlo fácilmente para agregar los nombres de los colores a una lista.

Consulte este proyecto de Proyecto de código para crear una tabla de colores .