我读到你可以通过绘制paint事件来提高绘图速度/时间,并且你也可以绘制未缩放的绘图。
所以我非常想在我的面板上试一试。
问题是,图像在另一个线程中接收到GUI,我不知道如何将它提供给paint事件。
我真的不想调用和填充(因为这非常慢,至少当我使用它时)。
代码看起来像这样。
protected override void panel1_Paint(object sender, PaintEventArgs e, Image u)
{
e.Graphics.DrawImageUnscaled(u, Point.Empty);
}
虽然我尝试使用覆盖添加在字段中添加图像,但是我想让它静态,所以我可以从线程调用它。可悲的是我没有工作。
但是,我试过了。
private void panel1_Paint(object sender, PaintEventArgs e)
{
// e.Graphics.DrawImageUnscaled(u, Point.Empty);
}
有一个“工作”的,除了我无法获得图像。
我尝试制作图像变量,然后将图像保存在该变量中,然后绘制它。 但是油漆永远不会看到它中的图像,它无法访问图像,猜测它是从另一个线程写的。
//initialize
private Image Im;
////////
my Thread
Im = Image.FromStream(....);
////////////7
void panel1_Paint(object sender, PaintEventArgs e)
{
if(Im !=null)
e.Graphics.DrawImageUnscaled(Im, Point.Empty);
}
这就是我尝试过的方式,但失败了。