解决方案 »

  1.   

    楼主,把m_bitmap变量的定义和赋值的语句发来看下
      

  2.   


     OpenFileDialog file = new OpenFileDialog();
                file.Filter = "Bitmap文件(*.bmp)|*.bmp|JPEG文件(*.jpg)|*.jpg|PNG(*.png)|*.png|所有文件(*.bmp/*.jpg/*.png)|*.bmp/*.jpg/*.png";
                file.FilterIndex = 3;
                file.RestoreDirectory = true;
                if (file.ShowDialog() == DialogResult.OK)
                {
                    m_bitmap = (Bitmap)Bitmap.FromFile(file.FileName, false);
                    this.AutoScroll = true;
                    this.AutoScrollMinSize = new Size(m_bitmap.Width, m_bitmap.Height);
                    this.Invalidate();
                }
    这个就是了
      

  3.   

    m_bitmap = (Bitmap)Bitmap.FromFile(file.FileName, false); 
    改成
    Image img = Bitmap.FromFile(file.FileName, false);
    m_bitmap = new Bitmap(img);
    至少在我本地的vs2010里运行正常,楼主可以试下
      

  4.   

    顺便说下,那个while循环需要放到新线程里去执行
      

  5.   

      while (stop)这理造成了 你还是要开一个线程来做要不然会卡死UI线程
                {
                    bru.RotateTransform(2);
                    g.FillRectangle(bru, 0, 0, m_bitmap.Width, m_bitmap.Height);
                    System.Threading.Thread.Sleep(100);
                }
      

  6.   


    异常是因为你没用委托。要调用控件就要用委托
    我使用了委托,为什么窗口还是会卡死?
    你这么写不是另开线程呀。汗。。你要开Thread 然后放到线程里去跑
      

  7.   


    我使用了委托,为什么窗口还是会卡死?你这么写不是另开线程呀。汗。。你要开Thread 然后放到线程里去跑一开就报异常,不开就卡死
      

  8.   


    要用Bitmap的构造函数创建Bitmap对象的,不要直接用FromFile方法
      

  9.   

    异步调用和线程都能解决你的问题。
    以下是另开线程的方法。Thread RotatingThread = new Thread(new ThreadStart(delegate
                    {
                        ss();
                    }));
    RotatingThread.Start();
      

  10.   


    要用Bitmap的构造函数创建Bitmap对象的,不要直接用FromFile方法

    谢谢了,我的问题解决了。是用了两个中间变量传递Width 和Height 参数的,然后在按钮事件里另开线程来调用。貌似没有用到委托。
    关于四楼的代码,我刚刚把代码又改回昨天的状态,居然没有报异常,不知道编译器抽的什么风,所以,我就没有用到四楼的代码了……不过不管怎样,问题还是解决了,而且多了几种解决问题的思路,还是多谢各位的帮助了!