1

我读到你可以通过绘制事件来增加绘制速度/时间,并且你也可以绘制未缩放的。

所以我非常想在我的面板上尝试一下。

问题是,图像是在另一个线程中收到的,然后是 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);          
        }

这就是我尝试的方式,但失败了。

4

0 回答 0