ここから本文です

解決済みの質問

8. ちらつきを防止する方法の基本技術の概要

masao1165pqさん

8. ちらつきを防止する方法の基本技術の概要

お願いします。

違反報告

ベストアンサーに選ばれた回答

abiko_tetuさん

[ダブルバッファ]

VB.NET では、ピクチャボックス と言うコントロールに絵を書いたり、画像ファイルを貼り付けたりすることが可能です。
しかし、入門書にあるピクチャボックス の使い方では、一般に静止画です。
もしも、ゲームのように、動きのある絵にしたい場合は、タイマーコントロールを使って、一定時間おきに(短い間隔で)、ピクチャボックス 上の絵を切り替えて行けば、パラパラ漫画のように動いて見えます。
しかし、その際に ちらつき が出ます。
これは、今のフレームから次のフレームに切り替わる際に、VB.NET がピクチャボックス上の次の絵を作っている最中の状態を目にするための現象です。
よって、次の画面を作るのは、VB.NET内部の見えない所(バッファ)で作り、完全に作り上がった時点で、ピクチャボックスに表示させるようにします。
そうすれば、ちらつきません。
これをダブルバッファと言います。





[コード]

実際のサンプルコードを書きたいのですが、回答量上限の制限で書き切れ無いので、もうひとつ質問を用意して下さい(ここの余白と、次の質問とで、コードを書きます)。
また、ダブルバッファ(ちらつき防止)とは別に、数フレームに1回は、リフレッシュと呼ばれる処理も行ったほうが良いです。
それも、別途質問を用意していただけば、サンプルコードを書きます。

質問した人からのコメント

  • 了解しました
  • コメント日時:2011/5/5 17:49:42

グレード

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 1点(5点満点中)1人が役に立つと評価しています。

ベストアンサー以外の回答

(2件中1〜2件)

並べ替え:回答日時の
新しい順
古い順

 

ero_gro_nonsenseさん

イキナリ8.とか書かれても何のコトだかよー判らん。

が、回答としては、

「BitBltで変更のあった部分だけ描画してやる」かな?

例えるなら、パラパラマンガでページ全体をめくるより、
ページの隅っこのみをパラパラやる方がスムースなのと
似た感じかのぉ?

dreamycat_originさん

Excel VBA の場合はApplication.screenupdating=false
をその処理の前に書き、処理が終わったところでtrueに戻します。

Windows APIを使う手もあります。hwndについてはちょっとべんきょうしてください。(このままでは動きません。)
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Windowの書き換え表示を停止します。
例 LockWindowUpdate GetDesktopWindow()
速い書き換えを行い、しかも途中経過の画面更新をしたくないときに使うと便利です。
最後に表示させたいとき、0を与えます。 LockWindowUpdate 0

あなたにおすすめの解決済みの質問

VB.NETとC#いまからWIN用の言語で勉強するとしたらC#とVB。NETのどちらがいいでしょうか?すこし調べてみたのですが,VB.NETの方は、for文中につかうcontinueキーワードが存在せず、不便だったりするようです。それに双方
あれもこれもとやりたいプログラミング言語があるのですがどういう順番に勉強していけばいいでしょうか?やりたいプログラミング言語はC++、VB.NET、JavaScript、PHP、アセンブリと様々なのですがどれから順番に習得していくのが...
VB.NETはかなり覚えました。次はC#をやってみようと思うのですがVB.NETを今までやってきました。C#をやってみようと思うのですが、C#ってWindowsアプリケーションやウェブ系がメインの言語ですか?

あなたにおすすめの知恵ノート

VB.NETで ポリモーフィズム <目次>
VB.netでマウスクリックなどの操作を行う
VB.NET ピクチャボックスに画像を貼り付ける方法 --- ピクチャボックスの全体に貼り付ける場合の方法 と ピクチャボックスの指定箇所に貼り付ける場合の方法
PR
知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

ただいまの回答者

12時18分現在

2468
人が回答!!

1時間以内に4,311件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する