es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo exponer los XBrushes de PDFSharp para ser seleccionados desde la interfaz gráfica de usuario (GUI)?

Primer vez trabajando con PDFSharp, tengo un formulario de Windows que permite al usuario seleccionar una fuente y su tamaño para el PDF a crear. La aplicación también dibuja algunos rectángulos en la página con un color actualmente codificado de la siguiente manera:

rect = new XRect(5, 300, 25, 15);
gfx.DrawRectangle(XBrushes.SeaShell, rect); // Establecer color al rectángulo
tf.Alignment = XParagraphAlignment.Center;
tf.DrawString("No", invoiceItemsHeaderFont, XBrushes.Black, rect, XStringFormats.TopLeft);

Quiero que el usuario pueda seleccionar el color a través de un menú desplegable. ¿Cómo puedo cargar todos los colores de XBrushes en una lista y luego analizarlos de esta manera? Este es uno de los intentos:

foreach (XBrushes xbrush in typeof(XBrushes))
{
    colorsRect.Add(xbrush.ToString());
}

¡Gracias a todos!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para cargar todos los colores de XBrushes en una lista y analizarlo, puedes usar el siguiente código:

    List<string> colorsRect = new List<string>();
    Type brushesType = typeof(XBrushes);
    PropertyInfo[] properties = brushesType.GetProperties(BindingFlags.Static | BindingFlags.Public);
    foreach (PropertyInfo property in properties)
    {
        if (property.PropertyType == typeof(XSolidBrush))
        {
            XSolidBrush brush = (XSolidBrush)property.GetValue(null, null);
            colorsRect.Add(brush.Color.ToString());
        }
    }
    

    Este código obtiene todas las propiedades del tipo XBrushes, verifica si son del tipo XSolidBrush y agrega su color a la lista colorsRect. Luego, puedes vincular esta lista a un control desplegable para que el usuario pueda seleccionar un color para los rectángulos.

    Una vez que el usuario selecciona un color, puedes obtener el objeto XSolidBrush correspondiente de la siguiente manera:

    XSolidBrush brush = (XSolidBrush)new XBrushConverter().ConvertFromString(selectedColor);
    

    Donde selectedColor es la representación de cadena del color seleccionado (por ejemplo, “Rojo”). Luego, puedes establecer el color del rectángulo de la siguiente manera:

    gfx.DrawRectangle(brush, rect);
    

    Espero que esto ayude. Hazme saber si tienes alguna otra pregunta.

Comments are closed.