Xiangism

从一个无知角落里开始,蹒跚学步,一个未知到另一个未知,在跌跌撞撞中越走越快,越走越远,最后宇宙也为之开源。对于探索者来说,最后他们的思想总是变得和自己的足迹一样伟大。
  博客园  :: 首页  :: 联系 :: 管理

在c#中用指针操作图片像素点

Posted on 2009-08-15 22:23  Xiangism  阅读(4725)  评论(0编辑  收藏  举报

这是自己第一次在博客园里写东西,就写自己在c#中用指针操作图片像素点的学习心得吧!

      在Bitmap类中有两个函数SetPixel,GetPixel,分别用来设置或读取图片中指定点的颜色(这里发现了VS的一个错误,SetPixel的文档说明写的是“获取颜色”??)。

      当要对一幅图进行相当操作时,用这两个函数,性能上就不尽人意了……这时就可以考虑用指针来对性能进行提升。

       

//这里的x,y参数,指的是图像中像素点的x,y坐标
pubic void ReadColor(int x,int y)
{
  Bitmap b
=new Bitmap("d:\\a.bmp");
   BitmapData bData
= b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe {
byte* color = (byte*)bData.Scan0 + x *3+ y * Data.Stride;
int R =*(color +2);
int G =*(color +1);
int B =*color;
//同样在这里也可以对其行进修改
}
b.UnlockBits(bData);
}

通过以上的代码可以很容易的知道怎么指针来操作像素点。