移动PictureBox透明背景问题

时间:2017-11-21 07:13:04

标签: c# image winforms

probem:

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

什么是“凌乱”?

但是,您是否设置了表单的.DoubleBuffered属性? (这是表格吗?)
如果没有,试试。

修改
@LarsTech提供的Link已经指向了(不可避免的)路径 在此之前,尝试激活对象的.OptimizedDoubleBuffer(表单,图片框,面板) 使用Forms,可以直接调用它的.SetStyle方法:

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

在PictureBoxes和Panels中,该方法受到保护,您必须在派生类中设置它:

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

使用ControlStyles.UserPaint取决于您正在做什么。
在Microsoft Docs中查看(并按照)Control.SetStyle

另外 - 我可能在这里错了 - 从我在动画GIF中看到的,看起来不仅仅是撕裂。您的渲染似乎是一个像素关闭。