【问题标题】:Make font italic and bold使字体斜体和粗体
【发布时间】:2011-07-18 01:34:15
【问题描述】:

如何将多种字体样式应用于文本?

System.Drawing.Font MyFont = new System.Drawing.Font(
    thisTempLabel.LabelFont,
    ((float)thisTempLabel.fontSize),
    FontStyle.Bold + FontStyle.Italic,    // + obviously doesn't work, but what am I meant to do?
    GraphicsUnit.Pixel
);

感谢您的帮助!

【问题讨论】:

  • 您想对同一组字符应用多个字体样式吗?这怎么可能?或者您想对同一个单词中的不同字符应用不同的样式?
  • @Unmesh,我希望它是斜体和粗体。

标签: c# fonts


【解决方案1】:
System.Drawing.Font MyFont = new System.Drawing.Font(
    thisTempLabel.LabelFont,
    ((float)thisTempLabel.fontSize),
    FontStyle.Bold | FontStyle.Italic,
    GraphicsUnit.Pixel
);

也许您想使用 OR 运算符 (|)

【讨论】:

  • 这似乎有效,谢谢!但是我不明白它的逻辑?
  • @Tom - 这是一个“按位或”运算符。 FontStyles 枚举的基础值(必须具有[Flags] 属性)旨在以这种方式组合。
  • @Hans,谢谢,我想我现在明白了,所以 |将评估所有条件,无论其中任何一个是真/假?
  • 枚举基本上是整数。正如汉斯所说,有一些特殊的枚举用 [Flags] 属性标记,因此每个值的二进制表示只有一个 1(对不起,我的帖子中的所有文字游戏......)和全 0,没有其他值在该位置为 1。因此,按位 ANDing 和 ORing 保留有关所有所选值的信息。当后端读取该值时,它会通过与要测试的值进行“与”运算来测试标志的“激活”(因此 if (value && FontStyle.italic) renderItalic(),类似的东西)
  • @dj @hans,啊啊啊好吧!所以字体样式的枚举就像 0000 一样,然后每种样式就像 1000 0100 0010 0001 ,我们将它们全部组合起来,使 1111 全部设置为 true 对吗?
【解决方案2】:

您好,我正在编写一个简单的文本编辑器,但我遇到了同样的问题,我在互联网上没有找到任何有用的东西。如果表单中有很多按钮, if , else if 方法不是最佳的,所以我想为什么不采用现有的 font.style 并使用 | 添加到它像上面建议的人一样的符号。我测试了这段代码,它可以工作。我从点击的图片框中调用此方法。

更新。我发现了一个错误。当您取消选择一种字体时,它也会将所有其他字体重置为常规字体。但是组合它们的代码是有效的。

private void ChangeFontStyle(PictureBox p)
        {
            if (p == pictureBox1)
            {
                if (BClicked)
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Bold);
                }
                else 
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
                }
            }
            else if (p == pictureBox2)
            {
                if (IClicked)
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Italic);
                }
                else 
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font,  richTextBox1.Font.Style | FontStyle.Regular);
                }
            }
            else if (p == pictureBox3)
            {
                if (UClicked)
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.SelectionFont.Style | FontStyle.Underline);
                }
                else
                {
                    richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
                }
            }
        }         

P.S 我使用图片框而不是按钮和 BClicked 等布尔变量指示它们是否被激活。

【讨论】:

    【解决方案3】:

    我认为你可以从 Font 类中受益:

    /*controlName*/.SelectionFont=new Font(maintext.Font, FontStyle.Italic);
    

    【讨论】:

      【解决方案4】:

      我认为是 FontStyle.Bold |字体样式.斜体

      您通常使用管道(按位或)符号来组合这些函数中的多个标志

      这个页面解释它

      http://www.blackwasp.co.uk/CSharpLogicalBitwiseOps_2.aspx

      【讨论】:

        【解决方案5】:

        FontStyle 是一个标志枚举,因此您可以通过以下方式设置多种样式:

        FontStyle.Bold | FontStyle.Italic
        

        【讨论】:

          猜你喜欢
          • 2012-12-10
          • 2016-08-10
          • 2019-07-20
          • 1970-01-01
          • 2010-11-25
          • 2016-01-02
          • 1970-01-01
          • 1970-01-01
          • 2013-01-07
          相关资源
          最近更新 更多