Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to draw text on picturebox?

Tags:

c#

image

graphics

I googled for "Drawing text on picturebox C#" ,but I couldnt find anything useful.Then I googled for "Drawing text on form C#" and I found some code,but it doesnt work the way I want it to work.

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

When I call the function,the background color of the form becomes white(it's black by default).

My questions:

1:Will this work on a picturebox?

2:How to fix the problem?

like image 399
Ivan Prodanov Avatar asked May 11 '09 18:05

Ivan Prodanov


1 Answers

You don't want that call to Clear() - that's why it's turning the background white, and it will cover up your picture.

You want to use the Paint event in the PictureBox. You get the graphics reference from e.Graphics, and then use the DrawString() that you have in your sample.

Here's a sample. Just add a picture box to your form, and add an event handler for the Paint event:

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

(Note that you won't see the text at design time - you'll have to run the program for it to paint).

like image 125
Jon B Avatar answered Sep 21 '22 09:09

Jon B