¿Cómo se puede aplicar varios estilos de fuente para el texto?

System.Drawing.Font MyFont = new System.Drawing.Font(
    thisTempLabel.LabelFont,
    ((float)thisTempLabel.fontSize),
    FontStyle.Bold + FontStyle.Italic,    //+ obviously doesn't work, but what am I meant to do?
    GraphicsUnit.Pixel
);

Gracias por la ayuda!

  • ¿Desea aplicar más de uno de los estilos de fuente para el mismo conjunto de caracteres? ¿Cómo es eso posible? O ¿desea aplicar diferentes estilos a diferentes personajes en la misma palabra?
  • Quiero que sea Cursiva y Negrita.
  • ok ..lo tengo ahora
InformationsquelleAutor Tom Gullen | 2011-03-18

5 Comentarios

  1. 46
    System.Drawing.Font MyFont = new System.Drawing.Font(
        thisTempLabel.LabelFont,
        ((float)thisTempLabel.fontSize),
        FontStyle.Bold | FontStyle.Italic,    //+ obviously doesn't work, but what am I meant to do?
        GraphicsUnit.Pixel
    );

    Quizás quiso utilizar el operador or (|)

    • Que parece que funciona, gracias! No entiendo la lógica de que a pesar de que?
    • es un «bit a bit O un» operador. Los valores subyacentes de la FontStyles enum (que debe tener un [Flags] atributo) están diseñados para ser combinados en este camino.
    • gracias, creo que lo entiendo ahora, de modo que | evaluará todas las condiciones, independientemente de que cualquiera de ellos son de verdadero/falso?
    • esa es la forma en que funciona para bools. Para enteros combina los bits: 0011 | 0101 == 0111 (3/5==7)
    • Las enumeraciones son básicamente enteros. Como dijo Hans, hay enumeraciones marcado con [Banderas] atributo de modo que la representación binaria de cada valor es tal que sólo tiene un 1 (lo siento por todos los juegos de palabras en mi post…) y todos los 0s, y ningún otro valor 1 en esa posición. Así, bitwising ANDing y ORing mantiene información acerca de todos los valores elegidos. Cuando el back-end se lee el valor, las pruebas contra la «activación» de una bandera por ANDing con el valor de la prueba (de modo que si (valor && FontStyle.en cursiva) renderItalic(), algo así)
    • ahhhh ok! Así que la enumeración de estilo de la fuente que va a ser como 0000 y, a continuación, cada estilo es como 1000 0100 0010 0001 y combinamos todos ellos para hacer una 1111 para todos, que se establece en verdadero derecho?
    • exactamente. 0000 suele ser el «default» o «vacío» valor

  2. 10

    FontStyle es un indicador de la enumeración y, por tanto, puede definir varios estilos:

    FontStyle.Bold | FontStyle.Italic
  3. 2

    Hola, yo estaba escribiendo un simple Editor de Texto y tuve el mismo problema, no he encontrado nada útil en internet. Si , por el contrario, si el método no es óptima si hay muchos botones en el formulario, así que pensé ¿por qué no tomar la fuente existente.estilo y agregar a mediante el símbolo | como la gente se sugirió anteriormente. He probado este código y funciona. Yo llamo a este método de control pictureBox me clic.

    Actualización. He encontrado un bug. cuando se anula la selección de una fuente, se restablece todos los demás para regular también. Pero el código que combina obras.

    private void ChangeFontStyle(PictureBox p)
            {
                if (p == pictureBox1)
                {
                    if (BClicked)
                    {
                        richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Bold);
                    }
                    else 
                    {
                        richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
                    }
                }
                else if (p == pictureBox2)
                {
                    if (IClicked)
                    {
                        richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Italic);
                    }
                    else 
                    {
                        richTextBox1.SelectionFont = new Font(richTextBox1.Font,  richTextBox1.Font.Style | FontStyle.Regular);
                    }
                }
                else if (p == pictureBox3)
                {
                    if (UClicked)
                    {
                        richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.SelectionFont.Style | FontStyle.Underline);
                    }
                    else
                    {
                        richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
                    }
                }
            }         

    P. S I utiliza los cuadros de imagen en lugar de los botones y las variables booleanas como BClicked indicar si están activados o no.

  4. 1

    Creo que usted podría beneficiarse de una Fuente de la clase:

    /*controlName*/.SelectionFont=new Font(maintext.Font, FontStyle.Italic);

Dejar respuesta

Please enter your comment!
Please enter your name here