Как установить несколько FontStyles при создании экземпляра шрифта?
При взгляде на конструкторы для класса System.Drawing.Font есть параметр для передачи в одном из FontStyles, определенных в перечислении System.Drawing.FontStyle.
т. Жирный курсивный регулярное Подчеркивание
и существуют булевы свойства для Bold, Italic, Underline и т.д. в экземплярированном объекте, но они доступны только для чтения.
Что делать, если я хочу, чтобы мой шрифт имел несколько стилей, таких как Bold и Underline?
Как я могу это сделать?
Ответы
Ответ 1
Переменная FontStyle
представляет собой перечисление Flags
. Это означает, что его члены имеют все полномочия в два, что позволяет вам комбинировать их с помощью двоичного OR.
Например, если вы хотите полужирный и подчеркивающий, вы должны передать
FontStyle.Bold | FontStyle.Underline
Вертикальная строка (|
) является двоичным оператором OR.
Ответ 2
В конструкторе Font вы можете комбинировать несколько FontStyles с помощью оператора OR:
Font font = new Font(this.Font, FontStyle.Bold | FontStyle.Underline);
Ответ 3
Вы можете использовать что-то вроде этого, чтобы избежать множественных 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);