• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フェードアウト時にぶちっと画像が一瞬切れます。)

フェードアウト時にぶちっと画像が一瞬切れます。

このQ&Aのポイント
  • フェードアウト時に画像が一瞬切れる現象が発生しています。Windows 8では問題ありませんが、XPやWindows 7ではこの現象が発生します。
  • コードを実行すると、Thread.Sleep(4000)以降のフェードアウト中に画像が一瞬切れる現象が発生します。
  • 原因がわからずに困っています。ご存知の方がいらっしゃいましたら、教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

うーん、Refreshを入れて変わらないですか。 Sleep(4000); を外すと、間断なくフェードイン・フェードアウトされますか? Sleepの前後で、デバッガで実行を止めた場合の画面の変化を見てみるとか。 Sleepのより前で「ブチッ」が起きていたら、そもそも、Sleepが原因ではないのでしょうし。 コマ落ちの原因がわかってから、修正を加えたほうがいいと思います。 それで治らなかったり、症状が変わったりしたら、より悩みが深まります。

その他の回答 (1)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

System.Windows.Forms.Timerを使っているので、ウィンドウの描画は、 Sleepが行われている間、メッセージが処理されません。 Sleepの4秒間、Formはフリーズ状態になっていると思います。 フェードインで、Opacityを+0.01ずつして行き、1になったら、Sleep(4000);が実行されますが、 この時点では、画面は+0.99の状態で止まります。 そして、4秒経過後、保留が解除されて再描画されると思います。 この時に、Opacityの値がどのように変化するかは不明ですが、 値が規則的に変化していないので、描画が乱れるのではないかと思います。 Windowsタイマを利用するときの注意点 http://www.atmarkit.co.jp/fdotnet/dotnettips/372formstimer/formstimer.html マルチスレッドのタイマーを使うのが、最良の解決策でしょうが、 ひとまず、Sleep(4000);の前の行に、 this.Refresh(); と書いてみて、変化が見られるかどうか、確認してみて下さい。 Refresh、Update、Invalidateメソッドの違い http://dobon.net/vb/dotnet/control/refreshupdateinvalidate.html

1000vicki
質問者

お礼

回答ありがとうございます。 this.Refreshを加えても変化はありませんでした。・・・。 ちょっといまからスレッドタイマーで試みてみます。

関連するQ&A