- ベストアンサー
画像転送(ワールド変換行列)について
- 画像をスムーズに左から右へ移動させる方法
- 画像の移動時に残像が残らないよう対策する方法
- 画像の移動でちらつきを抑える方法
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
単純にFormのバックカラーでいのでしたらBlackイメージの作成を g1.FillRectangle( new SolidBrush( Me.BackColor ), _ new Rectangle( 0, 0, img.Width, img.Height ) ) といった具合にして見ましょう
その他の回答 (3)
- redfox63
- ベストアンサー率71% (1325/1856)
移動した分がそのまま残るのであれば 消去用のイメージの作成がうまくいってないのではと考えられます ピクチャーボックスの BackColorがColor.Transparentなのでしょうか 透過色に設定されていると上書きしても残像が残ってしまいます ピクチャーボックスのコンテナから背景を取得して上書きといった手順が必要になりそうですよ
お礼
何度も有難う御座いました! 無事にイメージ通りのものが完成しました。 本当に感謝いたします。
- redfox63
- ベストアンサー率71% (1325/1856)
当方が検証したのは VB.NET2005ですが このあたりは同じだったと思います 単にフォームにピクチャーボックスを貼り付けて 適当な画像を使って お示しのコード + 改良部分で検証しました どの程度残像が残るのでしょう 移動した分がそのまま残るのでしょうか?
補足
はい、仰る通り移動した分がそのまま残ります。 Refreshをするとちらつきは出ますが、残像は消えます。
- redfox63
- ベストアンサー率71% (1325/1856)
以前描画した領域を消去してから新しいイメージを描画しましょう dim blank as Image = new Bitmap(img.Width, img.Height) Dim g1 as Graphics = Graphics.FromImage( blank ) g1.FillRectangle( new SolidBrush( PictureBox1.BackColor ), _ new Rectangle( 0, 0, img.Width, img.Height ) ) g1.Dispose() といった準備をしておきます 描画する際に For i = 1 To 10 // 描画領域を消去 g.DrawImage(blank, New Rectangle(0, 0, img.Width, img.Height)) g.TranslateTransform(+10, 0) g.DrawImage(img, New Rectangle(0, 0, img.Width, img.Height)) // 画面の更新待ち Threading.Thread.Sleep( 200 ); Next i といった具合にします これでもちらつきがきになるのであれば『ダブルバッファ』など散らすつきを抑える技法を使いましょう
お礼
素早く丁寧な回答有難う御座います。 ただ、これをそのまま使用してみたところ やはり残像の方が残ってしまいます。 何が原因なんでしょうね……。 補足ですが、環境はVisual Basic 2008です。
お礼
何度も有難う御座いました! 無事にイメージ通りのものが完成しました。 本当に感謝いたします。