web-dev-qa-db-ja.com

ピクチャーボックスにテキストを描く方法は?

「pictureboxC#にテキストを描画する」をグーグルで検索しましたが、役立つものが見つかりませんでした。「フォームC#にテキストを描画する」をグーグルで検索したところ、コードが見つかりましたが、希望どおりに機能しません。

    private void DrawText()
    {
        Graphics grf = this.CreateGraphics();
        try
        {
            grf.Clear(Color.White);
            using (Font myFont = new Font("Arial", 14))
            {
                grf.DrawString("Hello .NET Guide!", myFont, Brushes.Green, new PointF(2, 2));
            }
        }
        finally
        {
            grf.Dispose();
        }
    }

関数を呼び出すと、フォームの背景色が白になります(デフォルトでは黒です)。

私の質問:

1:これはピクチャーボックスで機能しますか?

2:問題を解決する方法は?

13
Ivan Prodanov

Clear()の呼び出しは望ましくありません。そのため、背景が白くなり、画像が隠されてしまいます。

PictureBoxでPaintイベントを使用したいとします。 e.Graphicsからグラフィックリファレンスを取得し、サンプルにあるDrawString()を使用します。

これがサンプルです。フォームに画像ボックスを追加し、Paintイベントのイベントハンドラーを追加するだけです。

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    using (Font myFont = new Font("Arial", 14))
    {
        e.Graphics.DrawString("Hello .NET Guide!", myFont, Brushes.Green, new Point(2, 2));
    }
}

(デザイン時にはテキストが表示されないことに注意してください。ペイントするにはプログラムを実行する必要があります)。

34
Jon B