2017-12-22 34 views
0

바보 같은 질문을하는 경우 프로그래밍면에서 처음이에요.PictureBox가 제대로 새로 고침되지 않습니까?

라이브 카메라에서 얻은 실시간 이미지를 표시하려고합니다. 프로그램을 시작할 때, picturebox는 객체를 보여줄 수 있습니다 (그림 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; 
    } 

내가 프로그램

(Picture2) 내가 나에게

그것이 것 같다 개체를 제거한 후에이이 이미지를 시작할 때 (PICTURE1) 이것은 내가 얻을 이미지 한번 "black"이 pictureBox에 그려지면, 사라지지 않을 것 같습니다.

답변

1

모든 그림 논리를 그림 상자의 페인트 이벤트에 넣어야합니다. 이 이벤트가 발생하면 모든 항목이 다시 그려집니다. 이 호출을 수동으로 발생 시키려면 picturebox.Invalidate()를 호출하십시오.

그래서 paint 이벤트에 drawPix 항목을 넣고 picturebox를 사용하여 그림 상자를 강제로 새로 고칩니다. 단추를 클릭하면 무효화()됩니다.

+0

Okok 내가 그것을 시도합니다, 그것이 작동하는 경우 upvote 것입니다. 고마워! – Jarad

+0

drawPix 부분은 이렇게됩니까? – Jarad

+0

private void pictureBox_Paint (객체 발신자, PaintEventArgs, int x, int y, int r, int g, int b) { (비트 맵) pictureBox.Image) .SetPixel (x, y, Color.FromArgb (r, g, b)); 반환; } – Jarad