tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルVB2010 ピクチャーボックスの動作について。
記事No11888
投稿日: 2017/08/21(Mon) 17:48
投稿者kou
お世話になります。

ボタンをクリックすると3回カメラから画像(JPEG)を取り込んで、フォルダに作成したファイル
(jpeg_data.jpg)をピクチャーボックスに3回表示して抜けるプログラムを作成しました。

ところが実際の動作は、3回目に取り込んだ画像は表示しますが、1回目と2回目はフォーム
ロード時のデフォルトの画像が表示されたままです。回数を変えても最終回のみ更新されます。

ファイル(jpeg_data.jpg)は3回とも正しく画像を取り込んで作成されています。

何か知見がございましたらご教示宜しくお願い致します。

〜以下、プログラム抜粋〜

Private Sub Button1_Click 〜略〜
        
   〜略〜

Do While value < 3

    Call sendcmd(bda, rdata)   <-画像取り込み

    PictureBox1.ImageLocation = "C:\Users\kou\Desktop\VB express\jpeg_data.jpg"

    value = value + 1

Loop

[ツリー表示へ]
タイトルRe: VB2010 ピクチャーボックスの動作について。
記事No11889
投稿日: 2017/08/21(Mon) 18:35
投稿者魔界の仮面弁士
> ボタンをクリックすると3回カメラから画像(JPEG)を取り込んで、

3 枚の JPEG があるのでしょうか?

それとも、1 枚の JPEG が都度上書きされていて、
読み込むタイミングによって別画像になるということでしょうか。


> Do While value < 3
>     Call sendcmd(bda, rdata)   <-画像取り込み
>     PictureBox1.ImageLocation = "C:\Users\kou\Desktop\VB express\jpeg_data.jpg"
>     value = value + 1
> Loop

イベントの中で 3 回読み込んではいけません。

読み込んだ画像が実際に表示されるのは、ImageLocation をセットしたときではなく、
セットし終わって「そのイベントが End Sub で抜けた後」だからです。

(イベントの処理中はビジー状態なので、再描画やユーザー操作を受け付けない状態になります)


「3 枚の JPEG を 3 個の PictureBox に表示」なら、それぞれ異なるパスが必要です。

「3 枚の JPEG を 1 個の PictureBox に表示」あるいは
「都度書き換わる 1 つの JPEG を、1 つの PictureBox に表示」なら、
どのタイミングで PictureBox の画像をセットしなおすのかを、考えねばなりません。

たとえば、Button1_Click されるたびに読み直すようにするのか、
あるいは、Timer 等で定期的に読み直すようにするのか、ということです。

[ツリー表示へ]
タイトルRe^2: VB2010 ピクチャーボックスの動作について。
記事No11890
投稿日: 2017/08/21(Mon) 22:24
投稿者kou
魔界の仮面弁士様。
御教示ありがとうございます。

> > ボタンをクリックすると3回カメラから画像(JPEG)を取り込んで、
>
> 3 枚の JPEG があるのでしょうか?
>
> それとも、1 枚の JPEG が都度上書きされていて、
> 読み込むタイミングによって別画像になるということでしょうか。

->JPEG画像は1回ごとに取り込んだものを(ファイル名は同じ)、都度1個のPictureBoxに順に表示したい
 というのがプログラムの意図です。
>
> > Do While value < 3
> >     Call sendcmd(bda, rdata)   <-画像取り込み
> >     PictureBox1.ImageLocation = "C:\Users\kou\Desktop\VB express\jpeg_data.jpg"
> >     value = value + 1
> > Loop
>
> イベントの中で 3 回読み込んではいけません。
>
> 読み込んだ画像が実際に表示されるのは、ImageLocation をセットしたときではなく、
> セットし終わって「そのイベントが End Sub で抜けた後」だからです。
>
> (イベントの処理中はビジー状態なので、再描画やユーザー操作を受け付けない状態になります)
>
>
> 「3 枚の JPEG を 3 個の PictureBox に表示」なら、それぞれ異なるパスが必要です。
>
> 「3 枚の JPEG を 1 個の PictureBox に表示」あるいは
> 「都度書き換わる 1 つの JPEG を、1 つの PictureBox に表示」なら、
> どのタイミングで PictureBox の画像をセットしなおすのかを、考えねばなりません。
>
> たとえば、Button1_Click されるたびに読み直すようにするのか、
> あるいは、Timer 等で定期的に読み直すようにするのか、ということです。

->現象と一致し、納得致しました。Timerによるイベント起動など考えたいと思います。
 ありがとうございました。

kou

[ツリー表示へ]