日期:2014-05-17  浏览次数:21541 次

winform 动态改变picturebox的位置 界面闪动
如题所述,我要实现在鼠标移动的时候,动态改变picturebox的位置。这个时候由于界面重绘,所以界面不停的闪动。在网上查了些资料,用双缓冲机制,但是我用了没有作用,依然闪动得厉害。求救啊!!!!!(功能很简单,就是移动鼠标,改变picturebox的位置)

------解决方案--------------------
你都画什么了
------解决方案--------------------
我以前用VC写过,C#的还没写过呢~~换成双冲缓冲是不闪了~~~
------解决方案--------------------
我也遇到过这个问题,不过没有解决,关注中。
------解决方案--------------------
用picture 控件的话 应该不用重绘了吧  
用timer 依次改变  控件位置2毫秒 执行一次1像素 应该不会闪
重绘的话 多声明字段 少创建用局部变量 不要绘一次就把资源释放了 等控件释放的时候再释放资源 

我回过好多东西 代码优化好了 效率高了就不会闪 
------解决方案--------------------
public frmMain()
        {
            InitializeComponent();

            //使用双缓冲,防止界面重绘时闪烁
            this.SetStyle(
                 ControlStyles.UserPaint 
------解决方案--------------------

                 ControlStyles.AllPaintingInWmPaint 
------解决方案--------------------

                 ControlStyles.OptimizedDoubleBuffer 
------解决方案--------------------

                 ControlStyles.ResizeRedraw, true);
            this.SetStyle(ControlStyles.Opaque, false);
            this.UpdateStyles();
}

试一下。
------解决方案--------------------
- -!、、有那么悲剧么 还是我没有理解到楼主的意思 ?
是通过鼠标来改变pictureBox的位置?、、、
如果是这样的话 那和双缓冲又有什么关系?、、、
直接 根据鼠标设置pictureBox的location就行了
还有 把你的代码贴上来看看 
------解决方案--------------------
可能你的Picturebox加载的图片尺寸太大了,造成每次移动时系统重绘花费了较多的时间。
------解决方案--------------------
把Picturebox改为label,label的Image为图片,但是label的backcolor不能设置为透明,否则也会闪动
------解决方案--------------------
codeproject
------解决方案--------------------
关注,以前碰到过,没解决.....