PictureBox没有正常刷新?

时间:2017-12-22 06:51:58

标签: c# image winforms picturebox pixel

如果我问一个愚蠢的问题,我是编程的新手,原谅我。

我正在尝试显示从实时相机中获取的实时图像。当我启动程序时,图片框能够显示对象(参见图1)。当我删除对象时,它会显示此图像(参见图2)。但问题是当我放回物体时,我应该能够得到一个类似于picture1的图像,但它看起来像picture2。 是因为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,它似乎无法消失。

1 个答案:

答案 0 :(得分:1)

您需要将所有绘图逻辑放在图片框的绘图事件中。当此事件触发时,所有内容都将重新绘制。手动提升此调用picturebox.Invalidate()。

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