Вопрос: Как установить несколько FontStyles при создании экземпляра шрифта?


При взгляде на конструкторы для класса System.Drawing.Font есть параметр для передачи в одном из FontStyles, определенных в перечислении System.Drawing.FontStyle.

то есть.     Жирный     курсивный     регулярное     подчеркивание

и существуют булевы свойства для Bold, Italic, Underline и т. д. в экземплярированном объекте, но они доступны только для чтения.

Что делать, если я хочу, чтобы мой шрифт имел несколько стилей, таких как Bold и Underline?

Как я могу это сделать?


14


источник


Ответы:


FontStyle enum - это Flags ENUM. Это означает, что его члены обладают всеми правами двух, что позволяет объединить их с помощью двоичного OR.

Например, если вы хотите смело и подчеркнуто, вы должны пройти

FontStyle.Bold | FontStyle.Underline

Вертикальная черта ( |) является двоичным оператором OR.


33



В конструкторе Font вы можете комбинировать несколько FontStyles с помощью оператора OR:

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

10



Вы можете использовать что-то вроде этого, чтобы избежать множественных ifs для каждого случая:

//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