假设我有一个分配了图像的PictureBox,我只想在它上面绘制一个较小的位图。
这是我的代码:
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;
但是,在我的程序中,它在一个单独的线程中循环运行,所以我得到一个错误:
对象正在其他地方使用
有没有办法直接绘制到Picturebox
本身?而不是得到它的位图和绘图,并再次分配?或者至少我如何解决上述异常?
感谢。
答案 0 :(得分:0)
这会对你有所帮助
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);
}
}