解決済みの質問
8. ちらつきを防止する方法の基本技術の概要
-
- 質問日時:
- 2011/5/2 21:21:19
-
- 解決日時:
- 2011/5/5 17:49:42
-
- 回答数:
- 3
-
- お礼:
- 知恵コイン
- 100枚
-
- 閲覧数:
- 361
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
[ダブルバッファ]
VB.NET では、ピクチャボックス と言うコントロールに絵を書いたり、画像ファイルを貼り付けたりすることが可能です。
しかし、入門書にあるピクチャボックス の使い方では、一般に静止画です。
もしも、ゲームのように、動きのある絵にしたい場合は、タイマーコントロールを使って、一定時間おきに(短い間隔で)、ピクチャボックス 上の絵を切り替えて行けば、パラパラ漫画のように動いて見えます。
しかし、その際に ちらつき が出ます。
これは、今のフレームから次のフレームに切り替わる際に、VB.NET がピクチャボックス上の次の絵を作っている最中の状態を目にするための現象です。
よって、次の画面を作るのは、VB.NET内部の見えない所(バッファ)で作り、完全に作り上がった時点で、ピクチャボックスに表示させるようにします。
そうすれば、ちらつきません。
これをダブルバッファと言います。
[コード]
実際のサンプルコードを書きたいのですが、回答量上限の制限で書き切れ無いので、もうひとつ質問を用意して下さい(ここの余白と、次の質問とで、コードを書きます)。
また、ダブルバッファ(ちらつき防止)とは別に、数フレームに1回は、リフレッシュと呼ばれる処理も行ったほうが良いです。
それも、別途質問を用意していただけば、サンプルコードを書きます。
- 違反報告
- 回答日時:2011/5/5 07:15:37
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:1人が役に立つと評価しています。
ベストアンサー以外の回答
(2件中1〜2件)
- 並べ替え:回答日時の
- 新しい順
- |
- 古い順
イキナリ8.とか書かれても何のコトだかよー判らん。
が、回答としては、
「BitBltで変更のあった部分だけ描画してやる」かな?
例えるなら、パラパラマンガでページ全体をめくるより、
ページの隅っこのみをパラパラやる方がスムースなのと
似た感じかのぉ?
- 違反報告
- 回答日時:2011/5/3 09:19:16
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
- 違反報告
- 回答日時:2011/5/2 21:39:46
あなたにおすすめの解決済みの質問
- VB.NETとC#いまからWIN用の言語で勉強するとしたらC#とVB。NETのどちらがいいでしょうか?すこし調べてみたのですが,VB.NETの方は、for文中につかうcontinueキーワードが存在せず、不便だったりするようです。それに双方
- あれもこれもとやりたいプログラミング言語があるのですがどういう順番に勉強していけばいいでしょうか?やりたいプログラミング言語はC++、VB.NET、JavaScript、PHP、アセンブリと様々なのですがどれから順番に習得していくのが...
- VB.NETはかなり覚えました。次はC#をやってみようと思うのですがVB.NETを今までやってきました。C#をやってみようと思うのですが、C#ってWindowsアプリケーションやウェブ系がメインの言語ですか?
質問した人からのコメント