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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.92577 の関連記事表示

<< 0 >>
■92577  Re[2]: rgbによるbackcolorの表示
□投稿者/ 大谷刑部 -(2019/10/08(Tue) 16:35:24)
    No92573 (魔界の仮面弁士 さん) に返信
    > ■No92572 (C#初心者 さん) に返信
    >>グラデーション形式で黒から白、白から黒に変更するものを作成したいのですが、途中の表示がうまくいきません。
    >
    > 画面描画は「イベント処理を抜けた後」のアイドル時に行われるためです。
    > 処理中(ビジー状態)は直ちに反映されません。
    なので、sleepとプロパティーの設定だけだと肉眼で確認する前に次の色に変わっているという現象になっていると想像されます。

    > 100 ミリ秒ごとに背景色を変えたいのであれば、ループ処理で実行するのではなく、
    > Timer を画面に貼り、Interval を 100ミリ秒程度にした上で、
    > Tick イベントが発生するたびに、BackColor を変更するようにしてみてください。
    こっちのやり方の方が結果的に書くコードはシンプルになるのかもしれませんね。
    ただまあ、この程度の処理(白⇔黒)であれば、メモリ負荷とかにそれほどクリティカルな影響はないのforループでもいいんじゃないでしょうか?
    3原色分全部ループ(255の3重ループ)とかなら明らかにやめた方がいいとは思いますが。

    >>Thread.Sleep(100);
    >
    > 画面上 (UI スレッド)から Thread.Sleep を呼び出してはいけません。
    win7 32bitの環境で試した(refleshで肉眼確認)限りでは、
    1000MS(1秒)では変化は細かいが若干間延びしてイライラする、10MSだと変化が速すぎてわかりずらい感じを受けるので
    どういう手段をとるかは別として間隔は100MSで妥当な気はします。
    ただし、マシンスペック、OSが32bitか64bitで見える印象は結構変わると思いますので、質問者さん自身で試して妥当な線を決めた方がいいと思います。

    > また、Click イベントに長時間(数秒以上)の長い処理を行わせるのも避けましょう。
    クリックイベントならそこまでクリティカルに考えなくてもよいような(あくまで主観ですが)
    Form_Load、XX_Activateなど画面全体の描画に絡むイベントでは絶対やらない方がいいですね。
    グリッドにデータ反映とかでも行数多すぎるとたまに描画に絡むエラーになったりしますからね。




記事No.92572 のレス /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -