C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: PictureBox1の処理中の描写について


(過去ログ 134 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■79158 / inTopicNo.1)  PictureBox1の処理中の描写について
  
□投稿者/ ひろみ (3回)-(2016/03/11(Fri) 16:04:23)

分類:[.NET 全般] 

質問します。
vb2010を使用しています。

form3の演出でスロットのように数字が代わる演出を見せたく以下のように致しました。
picのフォルダには、0〜9までの画像ファイルがあります。
処理は問題なく進みますが、処理中の演出は表示されず結果のみが処理が完了したら表示されてしまいます。

なぜ表示されないのかがわかりません。
form3の表示まではうまくいくのですが。
どなたかご教授くださいませ。




MYwait = 500
i = 0
Do
If i = 10 Then Exit Do
PictureBox1.ImageLocation = PsApp & "pic\" & CStr(i) & ".png"
Me.Show()
Me.Refresh()
System.Threading.Thread.Sleep(MYwait)

i = i + 1
Loop
PictureBox1.ImageLocation = PsApp & "pic\" & C1 & ".png"
引用返信 編集キー/
■79162 / inTopicNo.2)  Re[1]: PictureBox1の処理中の描写について
□投稿者/ shu (835回)-(2016/03/11(Fri) 16:36:04)
No79158 (ひろみ さん) に返信

>
> MYwait = 500
> i = 0
> Do
> If i = 10 Then Exit Do
> PictureBox1.ImageLocation = PsApp & "pic\" & CStr(i) & ".png"
> Me.Show()
> Me.Refresh()
> System.Threading.Thread.Sleep(MYwait)
>
Sleepしているので描画処理が抑えられていると思います。
Timerイベントなどを使用して描画を促進するようにしてみて下さい。

引用返信 編集キー/
■79165 / inTopicNo.3)  Re[2]: PictureBox1の処理中の描写について
□投稿者/ ひろみ (4回)-(2016/03/12(Sat) 01:31:47)
ご回答頂きありがとうございます。

ツールのタイマーを使用せずに行いたいのですが、他に方法は無いでしょうか?

引用返信 編集キー/
■79167 / inTopicNo.4)  Re[3]: PictureBox1の処理中の描写について
□投稿者/ 774RR (388回)-(2016/03/12(Sat) 07:16:32)
UI スレッドを Sleep させるということは Sleep 中は一切の描画を行わないというプログラマの意思表明だ。
そして「動画」っつか演出画面が人の目に見えるようにするには、コンピュータを待たせないといけない。
待たせるのに Sleep を使っちゃダメよ・・・ってのが今回の話題。

たぶんタイマーを使うのが最も簡単。
次点で、ワーカースレッドを起こして時間制御(ワーカースレッドの中では Sleep できる)
お勧めしないけど idle で Environment.TickCount 等でも時間制御できるだろう。


引用返信 編集キー/
■79168 / inTopicNo.5)  Re[4]: PictureBox1の処理中の描写について
□投稿者/ daive (80回)-(2016/03/12(Sat) 09:54:07)
2016/03/12(Sat) 10:01:10 編集(投稿者)
図表モードで投稿すると、イデントも反映されます。
分類:NET 全般 、ですが、VB.NET の様子?
’
MYwait = 500
i = 0
Do
  If i = 10 Then Exit Do
  PictureBox1.ImageLocation = PsApp & "pic\" & CStr(i) & ".png"
  Me.Show()
  Me.Refresh()
  System.Threading.Thread.Sleep(MYwait)
  '
  i = i + 1
Loop
PictureBox1.ImageLocation = PsApp & "pic\" & C1 & ".png"
’
優しい方々が回答されていますので、優しい回答になっていますが、
1.VB.NET / C# でも、イベント駆動型プログラミングモデルを採用しています。
検索ワード:イベント駆動型プログラミング、
  https://www.google.co.jp/search?hl=ja&q=%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E9%A7%86%E5%8B%95%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&lr=lang_ja&gws_rd=ssl
2.イベント駆動型プログラミングでは、今回の様な、無限ループを書いてはいけません。
  何故なら、無限ループ中は、他のイベントが受け取れない、別イベント処理が出来なくならからです。
  ⇒どうしてもの場合でも、タイマー機能と、実行順フラグ、FIFO、等を使った、シーケンス処理を実装するべき
   原則、DoEvents も使わない。
   私だったら、今回の場合は、ユーザーコントロールで実装してしまいます。
3.その他、イベントの連鎖を起こさない実装は、基礎の部類ですが、
  ケアレスミスで、連鎖が起きた場合は、起き方によりデバッグの難易度が変わります。
番外
ユーザーコントロールの、最初の実装は、
日付、時刻表示用の、コントロールを作成する事を御勧めします。
ラベル、タイマー、カルチャ指定
位で、まずは実装できます。
実装後、必要な機能を順に拡張していくと、
ユーザーコントロールに必要な事が、学習可能です。
’
備考:てにをは、修正

引用返信 編集キー/
■79170 / inTopicNo.6)  Re[5]: PictureBox1の処理中の描写について
□投稿者/ ひろみ (5回)-(2016/03/12(Sat) 15:35:13)
ご回答ありがとうございます。

タイマーにトライしてみます。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -