C#彩色图像的伪色空间处理程序设计(11)
时间:2017-01-03 11:32 来源:毕业论文 作者:毕业论文 点击:次
2.为了显示的方便,除了真彩色外,其他的每中颜色模式的行字节数要用数据“00”补齐为4的整数倍。如果显示模式为16色,当图像宽为19时,存储时每行则要补充4-(19/2+1)%4=2个字节(加1是因为里面有一个像素点要独占了一字节)。如果显示模式为256色,当图像宽为 19时,每行也要补充4-19%4=1个字节。 还有一点,当屏幕初始化为16或256色模式时,一定要设置调色板或修正颜色值,否则无法得到正确的图像颜色。 Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成。因此Bitmap是用于处理由像素数据定义的图像的对象。该类的主要方法和属性如下。 GetPixel方法和SetPixel方法:获取和设置一个图像的制定像素的颜色。 PixelFormat属性:返回图像的像素格式。 Palette属性:获取或设置图像所使用的颜色调色板。 Height属性和Width属性:返回图像的高度和宽度。 Bitmap类的常用方法如下: GetPixel:获取对象中指定像素的颜色。其使用方法如下: Color pixelColor = bmp.GetPixel(x,y); MakeTransparent:使默认的透明颜色对此对象透明。 RotateFlip:旋转、翻转或者同时旋转和翻转对象。它主要有三种翻转方式,即90度、180度和270度。具体使用方法如下: Image tmp = curBitmap;//定义一个Image tmp.RotateFlip(RotateFlipType.Rotate90lipNone);//旋转90度 tmp.RotateFlip(RotateFlipType.Rotate90lipNone);//旋转180度 tmp.RotateFlip(RotateFlipType.Rotate90lipNone);//旋转270度 Save:将对象以指定的格式保存到指定的Stream对象。 Setpixel:设定对象中,指定像素颜色。其使用方法如下: Bitmap bmp = (Bitmap)this.pictureBox.Image; Color pixelcolor =Color.FromArgb(ca,cr,cg,cb); bmp.SetPixel(x,y,pixelcolor); ca代表Alpha分量值,0为全透明,255为完全不透明,cr、cg、cb是红绿蓝三个颜色分量,值等于255时对应于该颜色值的饱和色。X,y是设置颜色的像素点坐标。 LookBits方法和UnlockBits方法:分别锁定和解锁系统内存中的位图像素。在基于像素点的图像处理方法中使用LockBits和UnlockBits是一个很好的方式,这两种方法可以使我们通过指定像素的范围来控制位图的任一部分,从而消除了通过循环对位图的像素逐个进行处理的需要。每次调用LockBits之后都应该调用一次UnlockBits。 LockBits方法定义如下: public BitmapData LockBits (Rectangle rect, ImageLockMode flag, PiexlForm format ); LockBits方法使用3个类型,分别为Rectangle、ImageLockMode 枚举和PiexlForm枚举的参数,并返回一个类型为BitmapData的对象。其中矩形参数定义了要在系统内存中锁定的位图的一部分;ImageLockMode枚举提供了对数据的访问方式,表1所示是它的成员;PiexlForm枚举表示像素的格式,表2所示是它的主要成员。 表格 3.1 ImageLockMode主要成员 成员 描述 ReadOnly 位图的锁定部分只用于读操作 ReadWrite 位图的锁定部分用于读操作和写操作 UserInputBuffer 读取和写入像素数据的缓存由用户分配 WriteOnly 位图的锁定部分只用于写操作 表格 3.2 PiexlForm主要成员 成员 描述 Format1bppIndexed 每个像素1位,使用索引颜色,因此颜色表中有两种颜色 Format4bppIndexed 每个像素4位,使用索引颜色 Format8bppIndexed 每个像素8位,使用索引颜色 Format16bppGrayScale 每个像素16位,共指定65535种色调 Format24bppRgb 每个像素24位,红色、绿色、蓝色分量分别使用8位,它们的顺序是蓝、绿、红 (责任编辑:qin) |