C# 移动PictureBox透明背景问题
问题: 移动对象:C# 移动PictureBox透明背景问题,c#,image,winforms,C#,Image,Winforms,问题: 移动对象: type: pictureBox name : RobotAnimation.PicFM; backcolor: Transparent; 背景图像-> type: picturebox name : pictureBox1 等-> RobotAnimation.PicATM.Parent = pictureBox1; 步骤: 问题: moving object -> around moving object -> is flicker
type: pictureBox
name : RobotAnimation.PicFM;
backcolor: Transparent;
背景图像->
type: picturebox
name : pictureBox1
等->
RobotAnimation.PicATM.Parent = pictureBox1;
步骤:
问题:
moving object -> around moving object -> is flicker
我如何解决这个问题?什么是“混乱”?但是,是否已设置窗体的.DoubleBuffered属性?(这是一种形式吗?
如果没有,请尝试。
编辑:
@LarsTech提供的信息已经为您指明了(不可避免的)道路。
在此之前,请尝试激活对象(窗体、图片框、面板)的
.OptimizedDoubleBuffer
。对于表单,可以直接调用其
.SetStyle
方法激活它:
this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
this.UpdateStyles();
在PictureBoxes和Panel中,该方法受保护,您必须在派生类中设置它:
ControlStyles.UserPaint
的使用取决于您正在做什么。
查看(并关注)Microsoft文档 此外,我可能错了,从我在你的动画GIF中看到的,这看起来比撕裂更重要。您的渲染似乎只差一个像素。什么是“凌乱”?
但是,是否已设置窗体的.DoubleBuffered属性?(这是一种形式吗?
如果没有,请尝试。
编辑:
@LarsTech提供的信息已经为您指明了(不可避免的)道路。
在此之前,请尝试激活对象(窗体、图片框、面板)的
.OptimizedDoubleBuffer
。对于表单,可以直接调用其
.SetStyle
方法激活它:
this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
this.UpdateStyles();
在PictureBoxes和Panel中,该方法受保护,您必须在派生类中设置它:
ControlStyles.UserPaint
的使用取决于您正在做什么。
查看(并关注)Microsoft文档
此外,我可能错了,从我在你的动画GIF中看到的,这看起来比撕裂更重要。看起来您的渲染效果差了一个像素。您要查找的单词是闪烁或撕裂。看见复制问题的Post代码。您要查找的单词是闪烁或撕裂。看见发布重复问题的代码。DoubleBuffered=true->相同问题查看编辑并遵循@LarsTech!DoubleBuffered=true->相同问题查看编辑并遵循@LarsTech!
public class BufferedPicture : PictureBox
{
public BufferedPicture()
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint, true);
this.UpdateStyles();
}
}