2009-05-11 5 views
11

私は「絵文字C#でテキストを描いている」と尋ねましたが、役に立たないものは見つかりませんでした。「フォームC#でテキストを描く」ためのグーグルで、コードがいくつか見つかりました。Pictureboxにテキストを描画するには?

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:問題を解決するにはどうすればよいですか?

+0

Labelオブジェクトを作成してそれを書き、必要な座標に設定できます。 – BobbyShaftoe

+1

ラベルの背景色は、テキストを書きたい画像のものと同じになることはありません。 –

答えて

34

あなたは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)); 
    } 
} 

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

+0

問題を解決する方法がわかりません。 –

+0

私に数分を与えると、私はいくつかのサンプルコードを投稿します... –

+1

+1; @ジョン:Paintイベントでe.GraphicsオブジェクトのDisposeを呼び出さないでください。あなたはそれを "借りる"だけです。 –

関連する問題