我读到你可以通过绘制事件来增加绘制速度/时间,并且你也可以绘制未缩放的。
所以我非常想在我的面板上尝试一下。
问题是,图像是在另一个线程中收到的,然后是 GUI,我不知道如何将它提供给绘图事件。
我真的不想调用和东西(因为这非常慢,至少当我使用它时)。
代码看起来像这样。
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);
}
有一个“工作”的,除了我无法得到它的图像。
我尝试制作一个图像变量,然后将图像保存在该变量中,然后绘制它。但是paint永远不会在其中看到图像,它无法访问图像,猜测是因为它是从另一个线程写入的。
//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);
}
这就是我尝试的方式,但失败了。