ちらつきを抑えるには?

解決


エーミール  2002-05-26 19:21:28  No: 104313

早速ですが質問です。
今、フォーム上の画像の上にもう一つ画像を重ねて、timerを使って段々下にずらし、徐々に下の画像が現れてくる、というようなものを作ってるんですが、再描画するときにちらちらし、下の画像がうっすらと見えてしまうのです。なにか、いい方法はありませんか?


たかみちえ  URL  2002-05-27 07:36:53  No: 104314

メモリ内のキャンバスに描いて、それを必要なぶんだけコピーすればいいです。
VBにはメモリ内のキャンバスとして、stdPictureというオブジェクトがあるので、それと、
あとはそれを画面に移す処理が必要です。
"画面に移す"のでは、BitBltというAPIがありますけど、
stdPictureとBitBltとの相性は悪くて、使うぶんに問題はないものの、ともに使うのはすごく手間がかかります。
APIでメモリのキャンバスを作ると、もっと面倒なのでお勧めできません^^;
  なので、素直にVBにある、PaintPictureというメソッドを使います。
使いかたはヘルプ参照です。

  これで、あらかじめstdPictureに描いた絵を、必要な大きさだけコピー(Refreshメソッドを使わないと再描画されないので、お忘れなく)、
次にいったん画面をクリアして、また必要な大きさをコピー
これを繰り返せばそうそうちらつくことはないはずです。
それでもちらつくようならば、LockWindowUpdateというAPIがあるので、
それを使って一時的に描画をストップさせます。
書き終わったらLockWindowUpdateAPIに0を送って描画をできる状態にしてみてください。


たかみちえ  URL  2002-05-27 07:40:35  No: 104315

余談ですけど、IEで使えるとかの、画像のトランジションやワイプ効果も、
これを使って実現できます(計算方法はややこしそうですけど)。


エーミール  2002-05-27 16:23:21  No: 104316

どうもありがとうございました。

早速試してみようと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加