web-dev-qa-db-ja.com

フォントを斜体で太字にする

複数のフォントスタイルをテキストにどのように適用しますか?

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
);

助けてくれてありがとう!

27
Tom Gullen
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
);

OR演算子(|

FontStyleはフラグ列挙であるため、次の方法で複数のスタイルを設定できます。

FontStyle.Bold | FontStyle.Italic
10
anothershrubery

FontStyle.Boldだと思います| FontStyle.Italic

通常、これらの関数で複数のフラグを結合するには、パイプ(ビットごとのOR)シンボルを使用します。

このページで説明します

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

4
Gordon Thompson

こんにちは、私は簡単なテキストエディタを書いていましたが、同じ問題を抱えていました。インターネット上で役に立つものは見つかりませんでした。フォームに多くのボタンがある場合、if、else ifメソッドは最適ではありません。上記の人のようなシンボル。このコードをテストしたところ、動作します。クリックしたpictureBoxからこのメソッドを呼び出します。

更新。バグを見つけました。フォントの選択を解除すると、他のすべてのフォントも通常にリセットされます。しかし、それらを組み合わせたコードは機能します。

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);
                }
            }
        }         

追伸:ボタンの代わりにピクチャボックスを使用し、BClickedなどのブール変数はそれらがアクティブかどうかを示します。

2
user3552161

Fontクラスの恩恵を受けることができると思います:

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