收藏 分享(赏)

C#图像处理.doc

上传人:hskm5268 文档编号:5820311 上传时间:2019-03-18 格式:DOC 页数:17 大小:755.50KB
下载 相关 举报
C#图像处理.doc_第1页
第1页 / 共17页
C#图像处理.doc_第2页
第2页 / 共17页
C#图像处理.doc_第3页
第3页 / 共17页
C#图像处理.doc_第4页
第4页 / 共17页
C#图像处理.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、C#图像处理一. 底片效果原理: GetPixel 方法获得每一点像素的值, 然后再使用 SetPixel 方法将取反后的颜色值设置到对应的点.效果图: 代码实现: 底片效果private void button1_Click(object sender, EventArgs e)/以底片效果显示图像tryint Height = this.pictureBox1.Image.Height;int Width = this.pictureBox1.Image.Width;Bitmap newbitmap = new Bitmap(Width, Height);Bitmap oldbitmap

2、= (Bitmap)this.pictureBox1.Image;Color pixel;for (int x = 1; x 255)r = 255;if (r 255)g = 255;if (g 255)b = 255;if (b g ? r : g;Result = Result b ? Result : b;break;case 2:/加权平均值法Result = (int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b);break;newBitmap.SetPixel(x, y, Color.FromArgb(Result, Result, Re

3、sult);this.pictureBox1.Image = newBitmap;catch (Exception ex)MessageBox.Show(ex.Message, “信息提示“); 四. 柔化效果原理: 当前像素点与周围像素点的颜色差距较大时取其平均值.效果图:代码实现:柔化效果private void button1_Click(object sender, EventArgs e)/以柔化效果显示图像tryint Height = this.pictureBox1.Image.Height;int Width = this.pictureBox1.Image.Width;Bi

4、tmap bitmap = new Bitmap(Width, Height);Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image;Color pixel;/高斯模板int Gauss = 1, 2, 1, 2, 4, 2, 1, 2, 1 ;for (int x = 1; x 255 ? 255 : r;r = r 255 ? 255 : g;g = g 255 ? 255 : b;b = b 255 ? 255 : r;r = r 255 ? 255 : g;g = g 255 ? 255 : b;b = b = Width)dx = Widt

5、h - 1;if (dy = Height)dy = Height - 1;pixel = oldBitmap.GetPixel(dx, dy);newBitmap.SetPixel(x, y, pixel);this.pictureBox1.Image = newBitmap;catch (Exception ex)MessageBox.Show(ex.Message, “信息提示“); 七. 光照效果原理: 对图像中的某一范围内的像素的亮度分别进行处理.效果图:实现代码:光照效果private void button1_Click(object sender, EventArgs e)/以

6、光照效果显示图像Graphics MyGraphics = this.pictureBox1.CreateGraphics();MyGraphics.Clear(Color.White);Bitmap MyBmp = new Bitmap(this.pictureBox1.Image, this.pictureBox1.Width, this.pictureBox1.Height);int MyWidth = MyBmp.Width;int MyHeight = MyBmp.Height;Bitmap MyImage = MyBmp.Clone(new RectangleF(0, 0, MyW

7、idth, MyHeight), System.Drawing.Imaging.PixelFormat.DontCare);int A = Width / 2;int B = Height / 2;/MyCenter 图片中心点,发亮此值会让强光中心发生偏移Point MyCenter = new Point(MyWidth / 2, MyHeight / 2);/R 强光照射面的半径,即”光晕”int R = Math.Min(MyWidth / 2, MyHeight / 2);for (int i = MyWidth - 1; i = 1; i-)for (int j = MyHeigh

8、t - 1; j = 1; j-)float MyLength = (float)Math.Sqrt(Math.Pow(i - MyCenter.X), 2) + Math.Pow(j -MyCenter.Y), 2);/如果像素位于”光晕” 之内if (MyLength 1)int j = height - iModel;while (j 1)int iPos = rnd.Next(100000) % iModel;/将该点的 RGB 值设置成附近 iModel 点之内的任一点Color color = img.GetPixel(i + iPos, j + iPos);img.SetPixe

9、l(i, j, color);j = j - 1;i = i - 1;/重新绘制图像g.Clear(Color.White);g.DrawImage(img, new Rectangle(0, 0, width, height); 十一: 扭曲效果原理: 将图像缩放为一个非矩形的平等四边形即可效果图:实现代码:扭曲效果private void button1_Click(object sender, EventArgs e)/以扭曲效果显示图像if (h = panel1.Height/2)w = 0;h = 0;Size offset =new Size (w+,h+);/设置偏移量Grap

10、hics g = panel1.CreateGraphics();Rectangle rect = this.panel1.ClientRectangle;Point points = new Point3;points0 = new Point(rect.Left+offset.Width ,rect.Top +offset .Height);points1 = new Point(rect.Right, rect.Top + offset.Height);points2 = new Point(rect.Left, rect.Bottom - offset.Height);g.Clear(

11、Color.White);g.DrawImage(MyBitmap, points); 十二.积木效果原理: 对图像中的各个像素点着重 (即加大分像素的颜色值)着色. 效果图: 实现代码:积木效果private void button1_Click(object sender, EventArgs e)/以积木效果显示图像tryGraphics myGraphics = this.panel1.CreateGraphics ();/Bitmap myBitmap = new Bitmap(this.BackgroundImage);int myWidth, myHeight, i, j, iA

12、vg, iPixel;Color myColor, myNewColor;RectangleF myRect;myWidth = MyBitmap.Width;myHeight = MyBitmap.Height;myRect = new RectangleF(0, 0, myWidth, myHeight);Bitmap bitmap = MyBitmap.Clone(myRect, System.Drawing.Imaging.PixelFormat.DontCare);i = 0;while (i = 128)iPixel = 255;elseiPixel = 0;myNewColor

13、= Color.FromArgb(255, iPixel, iPixel, iPixel);bitmap.SetPixel(i, j, myNewColor);j = j + 1;i = i + 1;myGraphics.Clear(Color.WhiteSmoke);myGraphics.DrawImage(bitmap, new Rectangle(0, 0, myWidth, myHeight);catch (Exception ex)MessageBox.Show(ex.Message, “信息提示“); 说明.这些大多为静态图. 后面会有图像的动态显示. 如分块合成图像, 四周扩散显

14、示图像, 上下对接显示图像等.这些也许能说明一下 PPT 或者手机中的图片效果处理程序是如果做出来的 .原理应该是相通的.制作图像一般常用的类有: Bitmap; Graphics; Rectangle;Color; 用到的方法是 Graphics 类的 DrawImage;此方法共有 30 个版本, 我习惯用 DrawImage(“图像“, “图框“) 版本. 因为这个版本的思想是最简单的-把一张*地图像装在一个*地框里! (*代表某种效果的图像和某种效果的框)如. g.DrawImage(new Bitmap(“myPicture“), new Rectangle(0, 0, myWidth, myHeight);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 说明文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报