每当mousemove的时候都调用e.Graphics.DrawImage(img, dst, src, GraphicsUnit.Pixel)性能很差啊, 
而且很耗CPU.

解决方案 »

  1.   

    用double-buffer试试,参看
    http://www.codeproject.com/cs/media/flickerFreeDrawing.asp
      

  2.   

    谢谢 Knight94(愚翁) ( 五星(高级)) 的回复.
    我现在是用自定义控件, 并通过
    this.SetStyle(ControlStyles.DoubleBuffer, true);
    this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
    this.SetStyle(ControlStyles.ResizeRedraw, true);
    this.SetStyle(ControlStyles.UserPaint, true);
    调用.net内置的doublebuffer, 感觉性能不好.主要是mousemove的事件比较频繁, 窗口大的时候重绘的区域又比较大.
      

  3.   

    "http://www.codeproject.com/cs/media/flickerFreeDrawing.asp"
    我测试过了, 如果drawobject比较大的话性能也不行.
      

  4.   

    就算是一个800*600的图, 拖来拖去cpu占用率也很高. 
      

  5.   

    在C++中有局部刷新技术,不知道.Net中是怎么解决的
      

  6.   

    不如拖动的时候,移动图片所在的PictureBox的Location属性
      

  7.   

    to 就算是一个800*600的图, 拖来拖去cpu占用率也很高.是否加载鼠标按键判断,我以前做过,并不是很大