2009-05-11 12 views
11

Ich googelte für "Zeichnung Text auf Bildbox C#", aber ich konnte nichts nützliches finden. Dann googelte ich für "Zeichnen von Text auf Formular C#" und ich fand etwas Code, aber es funktioniert nicht so, wie ich es will.Wie zeichne Text auf Bildbox?

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

Wenn ich die Funktion aufrufen, wird die Hintergrundfarbe des Formulars weiß (es ist standardmäßig schwarz).

Meine Fragen:

1: Wird diese Arbeit auf einem picturebox?

2: Wie behebt man das Problem?

+0

Sie könnten einfach ein Label-Objekt erstellen, darauf schreiben und es auf die von Ihnen gewünschte Koordinate einstellen. – BobbyShaftoe

+1

Die Hintergrundfarbe des Labels wird nicht mit der des Bildes übereinstimmen, in das ich den Text schreiben möchte. –

Antwort

34

Sie wollen diesen Aufruf nicht löschen() - deshalb wird der Hintergrund weiß und Ihr Bild wird verdeckt.

Sie möchten das Paint-Ereignis in der PictureBox verwenden. Sie erhalten die Grafikreferenz von e.Graphics und verwenden dann die DrawString(), die Sie in Ihrem Beispiel haben.

Hier ist ein Beispiel. Fügen Sie einfach ein Bildfeld auf dem Formular, und fügen Sie einen Ereignishandler für das Paint-Ereignis:

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

(Beachten Sie, dass Sie den Text nicht zur Entwurfszeit sehen - Sie müssen das Programm für sie laufen anstreichen).

+0

Ich verstehe nicht, wie Sie das Problem beheben können. –

+0

Geben Sie mir ein paar Minuten und ich werde einige Beispielcode posten ... –

+1

+1; @ John: Rufen Sie einfach nicht Dispose des e.Graphics-Objekts im Paint-Ereignis auf; Sie leihen es nur "aus". –