掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Invalidate( )とrefresh() (ID:142592)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 全く同じものと考えてよいのですか 別物ですので、それぞれを適切に使い分ける必要があります。 【Invalidate メソッド】は、再描画を要請するためのメソッドです。 これを呼び出すと、その後で Paint イベント等が発生し、 そこで実際の描画処理がおこなれるという流れになっています。 しかし、Invalidate を 10回呼んだからと言って、実際の再描画処理が 10 回発生するというわけではありません。 すべての再描画処理を受け入れてしまうと、処理が追いつかなくなってしまいますし、 同じ内容を複数回描画しても意味が無いため、OS 側で適当に間引いて処理されます。 実際に再描画される前に、再度 Invalidate が続けて呼ばれた場合、 再描画処理は 1 回分しか発生しない事が多いです。 さて、次に説明するべきは、【Update メソッド】です。 こちらは、実際に再描画を行わせるためのメソッドです。 先ほどとは異なり、こちらの処理は間引かれる事無く、強制的に再描画が行われます。 ただし、そもそも PictureBox 自体が再描画を必要としていない場合には、 実際には何も行われません。 「再描画が必要ならば、[強制的に]再描画を行う」けれども、 「再描画が必要とされないのであれば何もしない」という動作です。 そして【Refresh メソッド】。これは、Invalidate + Update の組み合わせを意味します。 つまり、まず Invalidate メソッドを呼び出して“再描画が必要な状態”という事にしてから、 Update メソッドを使って、それを強制的に描画させるという物です。 この場合、呼び出した回数だけ確実に再描画が発生します。 ただし、本来 OS 側で制御される再描画のタイミングを、プログラム側で 制御する事になるため、むやみに呼ぶとパフォーマンスを悪化させる事になります。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.