简体   繁体   中英

C# Draw on a PictureBox

Suppose i have an PictureBox with image assigned to it, and i just want to draw a smaller bitmap above it.

This is my code:

 Bitmap a = Getimage();//just a small function generates a new image.
 Bitmap f = (Bitmap) pictureBox1.Image;//getting the picturebox image.
 Graphics g = Graphics.FromImage(f);
 g.DrawImage(a,150,200);//draws a on f at (150,200).
 PictureBox1.Image=f;

However, in my program it runs on a loop in a seperated thread, so im getting an Error:

Object is in use elsewhere

Is there any way to draw directly to the Picturebox itself? instead of getting it's bitmap and draw, and assign again? Or at least how may i solve the above exception?

Thanks.

this will help you

    public Form1()
    {
        InitializeComponent();
        new Thread(MyDraw).Start();
    }

    private void MyDraw()
    {
        while(true)
        {
            Invoke(new Action(DrawItem));
            Thread.Sleep(1000);
        }
    }

    private void DrawItem()
    {
        using (var graphics = Graphics.FromImage(pictureBox1.Image))
        {
            graphics.DrawString("Hello", new Font("Arial", 20), Brushes.Yellow, PointF.Empty);
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM