How to set multiple FontStyles when instantiating a font?

时光毁灭记忆、已成空白 提交于 2019-11-30 00:48:40

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!