How to set multiple FontStyles when instantiating

2019-02-21 12:25发布

In looking at the constructors for the System.Drawing.Font class there is a parameter to pass in one of the FontStyles defined in the System.Drawing.FontStyle enum.

ie. Bold Italic Regular Underline

and there are boolean properties for Bold, Italic, Underline etc. in the instantiated object, but they are read only.

What if I want to define my font to have multiple styles like Bold and Underline?

How can I do this?

3条回答
我只想做你的唯一
2楼-- · 2019-02-21 12:54

You could use something like this, in order to avoid multiple ifs for each case:

//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);
查看更多
神经病院院长
3楼-- · 2019-02-21 13:10

The FontStyle enum is a Flags enum. This means that its members are all powers of two, allowing you to combine them using a binary OR.

For example, if you want bold and underline, you'd pass

FontStyle.Bold | FontStyle.Underline

The vertical bar (|) is the binary OR operator.

查看更多
聊天终结者
4楼-- · 2019-02-21 13:13

In the Font constructor, you can combine multiple FontStyles using the OR operator:

Font font = new Font(this.Font, FontStyle.Bold | FontStyle.Underline);
查看更多
登录 后发表回答