2017-12-22 19 views
0

私は愚かな質問をしている場合、私はプログラミングの初心者です。PictureBoxが正しくリフレッシュされませんか?

ライブカメラから取得したリアルタイムの画像を表示しようとしています。プログラムを起動すると、ピクチャボックスはオブジェクトを表示することができます(picture1参照)。オブジェクトを削除すると、このイメージが表示されます(図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; 
    } 

(Picture1の)これはこれは私が私にオブジェクト

を削除した後、それはのように思えるの画像である私はプログラム

(写真2)を起動したときに私が得る画像です一度 "黒"がpictureBoxに描画されると、それは消え去ることができないようです。

答えて

1

すべての描画ロジックをpictureboxのpaintイベントに配置する必要があります。このイベントが発生すると、すべてが再描画されます。この呼び出しを手動で呼び出すには、picturebox.Invalidate()を呼び出します。

drawPixのものをペイントイベントに入れて、ピクチャボックスをpictureboxを使用して強制的に更新するようにします。ボタンのクリックで無効にします。

+0

私はそれを試してみましょう、それが動作する場合upvoteします。どうもありがとう! – Jarad

+0

drawPix部分については、このようなものですか? (ビットマップ)pictureBox.Image).SetPixel(x、y、Color.FromArgb(r、int、int、int、int、int b) – Jarad

+0

プライベートvoid pictureBox_Paint g、b)); リターン; } – Jarad

関連する問題