我什么都没有话,就是把picturebux的backgroundImage设置成了一张图片。我想根据鼠标移动来改变图片的位置

解决方案 »

  1.   

    对啊,拖动的时候,图片闪动很厉害。我的图片是picturebox控件的backgroundImage.
      

  2.   

    我以前用VC写过,C#的还没写过呢~~换成双冲缓冲是不闪了~~~
      

  3.   

    估计你picturebox的backcolor设置成透明了
      

  4.   

    应该不会的,你在那drag_drop等以drag开头的事件都试试
    不行的话改用splitter吧
      

  5.   

    没有啊,跟backcolor没有关系,我改变了设置还是有问题
      

  6.   

    用picture 控件的话 应该不用重绘了吧  
    用timer 依次改变  控件位置2毫秒 执行一次1像素 应该不会闪
    重绘的话 多声明字段 少创建用局部变量 不要绘一次就把资源释放了 等控件释放的时候再释放资源 我回过好多东西 代码优化好了 效率高了就不会闪 
      

  7.   

    public frmMain()
            {
                InitializeComponent();            //使用双缓冲,防止界面重绘时闪烁
                this.SetStyle(
                     ControlStyles.UserPaint |
                     ControlStyles.AllPaintingInWmPaint |
                     ControlStyles.OptimizedDoubleBuffer |
                     ControlStyles.ResizeRedraw, true);
                this.SetStyle(ControlStyles.Opaque, false);
                this.UpdateStyles();
    }试一下。
      

  8.   

    我现在要做的功能很简单,其实就是在窗体上拖放一个picturebox控件,设置背景图,在picturebox的mouseMove事件中动态的改变picturebox的位置,没有多余的代码啊。
      

  9.   

    - -!、、有那么悲剧么 还是我没有理解到楼主的意思 ?
    是通过鼠标来改变pictureBox的位置?、、、
    如果是这样的话 那和双缓冲又有什么关系?、、、
    直接 根据鼠标设置pictureBox的location就行了
    还有 把你的代码贴上来看看 
      

  10.   

    对的,就是根据鼠标设置picturebox的location!没有什么代码可贴啊,就是在鼠标移动事件里面根据当前鼠标的位置,改变picturebox的location。关键是移动的过程中要闪动啊,这是问题所在!
      

  11.   

    可能你的Picturebox加载的图片尺寸太大了,造成每次移动时系统重绘花费了较多的时间。
      

  12.   

    我觉得winform里面的界面闪烁始终是一个问题,貌似没有一个好的解决方案,真让人头疼,到处都遇到。
      

  13.   

    把Picturebox改为label,label的Image为图片,但是label的backcolor不能设置为透明,否则也会闪动
      

  14.   

    codeproject上有解决办法吗?求链接
      

  15.   

    求答案啊  我也是绘图  不过两次改变Picture的位置Location,图片闪的不行了!求给力啊。已经设置了DoubleBuffered属性。
      

  16.   

    呵呵,很好解决啊,你要想清楚闪的原因是前后的图片不一样,不断更替肯定会闪动的。只要你在paint()里面把pictureBox要显示的图片写进去就不会闪了。
      

  17.   

    MouseMove里去掉 g.Clear(pictureBox1.BackColor);就不会闪了,但背景色有问题?
    求助啊
      

  18.   

    我个人认为,闪是picbox控件重绘了,所以才闪。你就改变picbox的坐标就可以