2009-05-11 28 views
11

"Resim kutusu C# üzerinde çizim metni" için arama yaptım, ancak yararlı bir şey bulamadım.O zaman "C# formunda metin çizme" için arama yaptım ve bazı kodlar buldum, ancak çalışmasını istediğim şekilde çalışmıyor.Resimde metin nasıl çizilir?

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

İşlevi çağırdığımda, formun arka plan rengi beyaz olur (varsayılan olarak siyahtır).

Sorularım:

1: Bir PictureBox bu işe yarayacak mı?

2: Sorunu nasıl düzeltebilirim?

+0

Sadece bir Label nesnesi oluşturabilir, üzerine yazabilir ve istediğiniz koordinatı ayarlayabilirsiniz. – BobbyShaftoe

+1

görüntünün bir ben metin yazmak istediğiniz gibi etiketin arka plan rengini aynı olacak değil. –

cevap

34

Bu aramayı Clear() yapmasını istemezsiniz - bu yüzden arka planı beyaza çevirir ve fotoğrafınızı kapatacaktır.

Paint olayını PictureBox'ta kullanmak istiyorsunuz. Grafik referansını e.Graphics'ten alırsınız ve daha sonra numunenizde bulunan DrawString() öğesini kullanırsınız.

İşte bir örnek verilmektedir. Sadece forma bir resim kutusu ekleyin ve Boya olay için bir olay işleyicisi ekleyin:

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

(tasarım zamanında metni görmek unutmayın - Bunun için programı çalıştırmak gerekecek boyamak için).

+0

Sorunun nasıl giderileceğini anlamıyorum. Bana birkaç dakika ver –

+0

ve bazı örnek kodlar göndeririz ... –

+1

1; @John: Sadece Paint etkinliğinde e.Graphics nesnesini atın; sadece "ödünç alıyorsun". –