直接克隆图片RectangleF block = new Rectangle(4,6,8,10);//从位置(4,6)开始截取大小为(8,10)的图片Bitmap s = new Bitmap();
s = image.Clone(block,PixelFormat.DontCare);

解决方案 »

  1.   

    我是因为要处理JPG的图像,只好用C#中的GDI+;
    但是因为要访问每个像素点后进行处理,所以不能拷贝区域。我的源代码里只是一个测试,就是想看看能不能操作JPG图像的每个像素。
      

  2.   

    呵呵,遇到同样问题
    C#的SetPixel()是极慢!
      

  3.   

    google或百度搜索这个短语:   "GDI+  双缓冲"
    像素级处理是很费时间的,你看看是否可以在你的源操作上看看瓶颈,比如你每一个类型转换其实就是要转换 2048*1536  次..减少一次就可以得到不错的效果.如果有装箱操作就更@#$@%@了..还有如果刚好你的循环次数有一个是2048(1024的N倍...巧合..),那么把这个数字放在内层和外层也是效率上有区别的(虽然不大...起码在老式C++中有区别,我不知道C#编译器是否会自动优化这个地方)
      

  4.   

    SetPixel()极慢并不是C#的硬伤,SetPixel的作用并不是用在对图片进行高性能的处理.LZ可以在C#中用指针对图片进行高性能处理;如果对指针并不熟悉,也可以用内存块操作生成数组,再对数组进行快速处理,这是MSDN上的标准处理方法.还有就是在进行图像处理时,注意对处理公式进行最简化,尽可能少的使用浮点及乘除运算,可以在循环外的运算,绝不要拿到循环中临时计算,注意以上方法,大多数情况下还是没有问题的,但如果是要写专业的图像处理,C#还是难以胜任.
      

  5.   

    GDI+ 
    其实就是调用非托管代码做的