C# PictureBox无法正常刷新?

C# PictureBox无法正常刷新?,c#,image,winforms,picturebox,pixel,C#,Image,Winforms,Picturebox,Pixel,如果我问了一个愚蠢的问题,请原谅我是新手 我试图显示实时图像,我从一个实时摄像头获得。当我启动程序时,picturebox能够显示对象(请参阅picture1)。当我移除该对象时,它会显示此图像(请参阅图2)。但问题是,当我把物体放回原处时,我应该能够得到一个类似于图1的图像,但它看起来像图2。 是因为pictureBox没有正确刷新吗 //R Mode Tab private void RModeToolStripMenuItem_Click(object sender, Ev

如果我问了一个愚蠢的问题,请原谅我是新手

我试图显示实时图像,我从一个实时摄像头获得。当我启动程序时,picturebox能够显示对象(请参阅picture1)。当我移除该对象时,它会显示此图像(请参阅图2)。但问题是,当我把物体放回原处时,我应该能够得到一个类似于图1的图像,但它看起来像图2。 是因为pictureBox没有正确刷新吗

    //R Mode Tab
    private void RModeToolStripMenuItem_Click(object sender, EventArgs e)
    {

        // There is a method, which will obtain the data value and pass to this drawpix
        drawPix(x, y, (int)data, (int)data, (int)data);

        pictureBox.Refresh();

        // Release camera buffer
        camera.Release();
    }

    private void drawPix(int x, int y, int r, int g, int b)
    {
        ((Bitmap)pictureBox.Image).SetPixel(x, y, Color.FromArgb(r, g, b));
        return;
    }
(图1)这是我启动程序时得到的图像

(图2)这是我移除对象后的图像


在我看来,一旦将“黑色”绘制到pictureBox,它似乎就无法消失。

您需要将所有绘制逻辑都放在pictureBox的绘制事件中。此事件激发时,所有内容都将重新绘制。要手动引发此调用,请执行picturebox.Invalidate()


因此,将drawPix内容放入paint事件中,并使用按钮单击中的picturebox.Invalidate()强制picturebox刷新。

OK我将尝试,如果可行,将向上投票。非常感谢!对于drawPix部分,是这样的吗?私有void pictureBox_Paint(对象发送器,PaintEventArgs e,int x,int y,int r,int g,int b){((位图)pictureBox.Image).SetPixel(x,y,Color.FromArgb(r,g,b));return;}