2010-05-11 9 views
14

Al observar los constructores de la clase System.Drawing.Font, hay un parámetro para pasar en uno de los FontStyles definidos en System.Drawing.FontStyle enum.¿Cómo establecer múltiples estilos de fuente al crear una instancia de una fuente?

es decir. Negrita Cursiva Regular Subrayado

y hay propiedades booleanas para negrita, cursiva, subrayado etc. en el objeto instanciado, pero que son de sólo lectura.

¿Qué ocurre si quiero definir mi fuente para que tenga varios estilos como Negrita y Subrayado?

¿Cómo puedo hacer esto?

Respuesta

31

FontStyle enum es un Flags enum. Esto significa que sus miembros son todos poderes de dos, lo que le permite combinarlos utilizando un OR binario.

Por ejemplo, si desea negrita y subrayado, te pasas

FontStyle.Bold | FontStyle.Underline 

La barra vertical (|) es el operador OR binario.

+0

Trabajado perfectamente gracias! Este tipo de cosas son conceptos nuevos para nosotros, adictos a Java. – anon58192932

10

En el constructor de fuentes, puede combinar múltiples FontStyles utilizando el operador OR:

Font font = new Font(this.Font, FontStyle.Bold | FontStyle.Underline); 
0

usted podría utilizar algo como esto, con el fin de evitar una multiplicidad de IFS para cada caso:

//define a font to use. 
Font font; 

font = new Font(fontname, fontsize, GraphicsUnit.Pixel); 

if (bold) 
    font = new Font(font, font.Style^FontStyle.Bold); 
if (italic) 
    font = new Font(font, font.Style^FontStyle.Italic); 
if (underline) 
    font = new Font(font, font.Style^FontStyle.Underline); 
if (strikeout) 
    font = new Font(font, font.Style^FontStyle.Strikeout); 
+0

Esto es terriblemente ineficiente ... Usa las banderas enumeradas para establecer múltiples estilos a la vez. – Tim

Cuestiones relacionadas