- PR -

描画処理について

1
投稿者投稿内容
yamayama
ベテラン
会議室デビュー日: 2006/02/10
投稿数: 68
投稿日時: 2006-08-10 21:59
いつもお世話になります。
VisualBasic2005のことでお聞きしたいことがあるのですが、

今、開発中のプログラムで、ある一定周期(3秒〜7秒程度を想定)ごとに
データベースの情報をみてボタンやラベルの状態を変化させるプログラム
を製造しようとしています。(ボタンのキャプションを変えたり、グレー
アウトさせたりします。)
この際、ちらつきを少なくしたいとおもうのですが、何かいい方法がない
でしょうか。
例えば、一定周期の先頭でフォーム上の描画処理をとめて、処理を終了
する際に、描画処理をするようなことができればちらつきをなくすことが
できるような気がするのですが。
どなたかご存知の方がいましたらよろしくおねがいします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-11 09:18
引用:

yamayamaさんの書き込み (2006-08-10 21:59) より:

例えば、一定周期の先頭でフォーム上の描画処理をとめて、処理を終了
する際に、描画処理をするようなことができればちらつきをなくすことが
できるような気がするのですが。


いいえ、単純にこれだけでは、結局チラつくと思います。
描画しなければいけないタイミングが、後ろにずれ込んでいるだけですから。
(どのみち、3 秒 ~ に 1 回しか再描画しないのですよね?)

ところで、チラつくのは Form 全体でしょうか?
再描画しなくてはいけない領域だけを描画していれば、さほど気にならないかと思いますが...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
yamayama
ベテラン
会議室デビュー日: 2006/02/10
投稿数: 68
投稿日時: 2006-08-11 11:10
さっそくのお返事ありがとうございます。

チラつくのはForm全体ではありません。
まず、周期の先頭でForm上のコントロール(20個程度)
の初期化(.Enable=False,.Text="")をし、
データベースの状態を見て、設定しています。

この初期化が原因であるようです。
じゃんぬねっと様の言われるように再描画しなくてはいけない
領域だけを描画してみようと思います。

カルガモ
常連さん
会議室デビュー日: 2006/06/27
投稿数: 20
投稿日時: 2006-08-11 14:09
こんにちは。
引用:

チラつくのはForm全体ではありません。
まず、周期の先頭でForm上のコントロール(20個程度)
の初期化(.Enable=False,.Text="")をし、
データベースの状態を見て、設定しています。



タイマイベントでコントロールの初期化せずに、
データベースの状態からコントロールの設定を行うだけでは駄目なのでしょうか?
初期化→状態確認→設定 とすると状態確認を行っている間(.Enable=False,.Text="")
となっているわけですよね。
(また、状態取得にかかる時間によって変化する)
この初期化処理によってチラツキが発生している気がします。
(まぁ、これだけではなく、実際の描画処理も影響しているでしょうが、)
タイマイベント発生時にコントロールを触って欲しくない?のですか。
1

スキルアップ/キャリアアップ(JOB@IT)