问题
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?
回答1:
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.
回答2:
In the Font constructor, you can combine multiple FontStyles using the OR operator:
Font font = new Font(this.Font, FontStyle.Bold | FontStyle.Underline);
回答3:
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);
来源:https://stackoverflow.com/questions/2813134/how-to-set-multiple-fontstyles-when-instantiating-a-font