vb.net中的多个字体样式组合

时间:2016-02-05 12:56:06

标签: vb.net fonts

如果我想创建一个具有多种样式组合的字体,例如粗体和下划线,我必须放置'或'它之间的陈述,如下例所示:

fail

如果你加粗'和'强调,它不会起作用,你只能获得2中的1个(就像或者声明应该如何工作),而这将是逻辑上的方法。这背后的原因是什么?

2 个答案:

答案 0 :(得分:1)

试试这个:

lblArt.Font = New Drawing.Font("Tahoma", _
                               18,  _
                               FontStyle.Bold or FontStyle.Italic)

使用“New Drawing.Font”代替单独的Font Source

答案 1 :(得分:1)

布尔逻辑的工作方式与我们在英语中使用这些术语的方式略有不同。这里发生的是枚举的FontStyle值实际上是位标志,为了操作位标志,你使用bitwise operations

组合两个位标志,你可以将它们组合在一起。 OR运算组合了这两个值。因此,假设FontStyle.Bold为2,FontStyle.Underline为4.当你将它们组合在一起时,你得到6 - 你把它们组合在一起。在布尔逻辑中,如果两个操作数中的位 ,则可以将OR运算视为返回“true”(,在结果中设置该位)如果两个操作数中的位都没有设置,则设置为“false”。

您可以为此类操作编写真值表,如下所示:

| A | B | A OR B |
|---|---|--------|
| 0 | 0 |   0    |
| 0 | 1 |   1    |
| 1 | 0 |   1    |
| 1 | 1 |   1    |

请注意,结果更接近于我们用非正式英语称之为“和”的内容。如果其中任何一个设置了,那么结果也设置了它。

与OR相反,按位AND操作仅返回“true”(,在结果中设置该位),如果两个操作数中的两个已设定。否则,结果为“false”。同样,可以写一个真值表:

| A | B | A AND B |
|---|---|---------|
| 0 | 0 |    0    |
| 0 | 1 |    0    |
| 1 | 0 |    0    |
| 1 | 1 |    1    |

再次假设FontStyle.Bold的值为2且FontStyle.Underline的值为4,如果你和它们在一起,则得到0.这是因为这些值有效地相互抵消了。最终结果是你没有得到任何字体样式 - 正是在你写FontStyle.Bold And FontStyle.Underline时它无法正常工作的原因。

在VB中,使用Or运算符执行按位OR运算。 And运算符执行按位AND运算。因此,为了按比例包含值,这是组合位标志的方法,您可以使用Or运算符。