2017-11-21 10 views
1

probem:移動のPictureBox透明な背景の問題

GIF

移動物体:

type: pictureBox 
name : RobotAnimation.PicFM; 
backcolor: Transparent;  

背景画像 - >

type: picturebox 
name : pictureBox1 

など - >

RobotAnimation.PicATM.Parent = pictureBox1; 

ステップ:

timerTick += RobotAnimation.PicATM.Location.X +1; 

問題:

moving object -> around moving object -> is flicker 

どのように私はこの問題を解決することができますか?

+0

あなたが探している言葉はちらつき、または裂けることです。 「アニメーションからの引き裂きを取り除く方法」(https://stackoverflow.com/q/2448831/719186)を参照してください。問題を複製するポストコード。 – LarsTech

答えて

0

「乱雑」とは何ですか?

ただし、フォームの.DoubleBufferedプロパティを設定しましたか? (それはフォームですか?)
もしそうでなければ、それを試してください。

EDIT:
@LarsTechによって提供さLinkが既に(避けられない)のパスに向けてあなたを指しています。
その前に、オブジェクト(フォーム、ピクチャボックス、パネル)の.OptimizedDoubleBufferを有効にしてみてください。フォームで
が、それはその.SetStyleメソッド呼び出しを直接起動することができます。

public class BufferedPicture : PictureBox 
{ 
    public BufferedPicture() 
    { 
     this.SetStyle(ControlStyles.OptimizedDoubleBuffer | 
        ControlStyles.UserPaint | 
        ControlStyles.AllPaintingInWmPaint, true); 
     this.UpdateStyles(); 
    } 
} 

this.SetStyle(ControlStyles.OptimizedDoubleBuffer | 
       ControlStyles.UserPaint | 
       ControlStyles.AllPaintingInWmPaint, 
       true); 
this.UpdateStyles(); 

PictureBoxesとパネルでは、そのメソッドが保護されている、あなたは、派生クラスでそれを設定する必要があります

ControlStyles.UserPaintの使用は、あなたが何をしているかによって異なります。
MicrosoftドキュメントでControl.SetStyleをご覧ください。

また、ここで間違っている可能性があります。アニメーションGIFに表示されているように、よりぼんやり見えるです。あなたのレンダリングは1ピクセル消えているようです。

+0

DoubleBuffered = true - >同じ問題 – JPH

+0

thx comment but – JPH

+0

編集を参照し、@LarsTech [リンク](https://stackoverflow.com/q/2448831/719186)に従ってください! – Jimi