




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.由于是以动画方式显示图像,这里没办法直接贴静态截图,因此决定给园友开源,将所有的可运行代码附在案例后面,由于所有的动画处理图像的对象放在都 pictureBox控件中,同时定义的类都大同小异,因此这里先把下面案例中要用到的所有类及装载图像的代码给大家,运行时用这里的代码加下面任意一个实例的代码即可运行程序!private Bitmap SourceBitmap;private Bitmap MyBitmap;private void button2_Click(object sender, EventArgs e)/打开图像文件OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = 图像文件(JPeg, Gif, Bmp, etc.)|*.jpg;*.jpeg;*.gif;*.bmp;*.tif; *.tiff; *.png|JPeg 图像文件(*.jpg;*.jpeg)|*.jpg;*.jpeg |GIF 图像文件(*.gif)|*.gif |BMP图像文件(*.bmp)|*.bmp|Tiff图像文件(*.tif;*.tiff)|*.tif;*.tiff|Png图像文件(*.png)| *.png |所有文件(*.*)|*.*;if (openFileDialog.ShowDialog() = DialogResult.OK)/得到原始大小的图像SourceBitmap = new Bitmap(openFileDialog.FileName);/得到缩放后的图像MyBitmap = new Bitmap(SourceBitmap, this.pictureBox1.Width, this.pictureBox1.Height);this.pictureBox1.Image = MyBitmap;一、以上下反转的方式显示图像.原理:计算图像位置和高度后以高度的一半为轴进行对换上下半边的图像。代码:private void button1_Click(object sender, EventArgs e)tryint width = this.MyBitmap.Width; /图像宽度int height = this.MyBitmap.Height; /图像高度Graphics g = this.panel1.CreateGraphics();g.Clear(Color.Gray);for (int i = -width / 2; i = width / 2; i+)g.Clear(Color.Gray);int j = Convert.ToInt32(i * (Convert.ToSingle(height) / Convert.ToSingle(width);Rectangle DestRect = new Rectangle(0, height / 2 -j, width, 2 * j);Rectangle SrcRect = new Rectangle(0, 0, MyBitmap.Width, MyBitmap.Height);g.DrawImage(MyBitmap, DestRect, SrcRect, GraphicsUnit.Pixel);System.Threading.Thread.Sleep(10);catch (Exception ex)MessageBox.Show(ex.Message, 信息提示);二、以上下对接的方式显示图像原理:首先将图像分为上下两部分, 然后分别显示。代码:private void button1_Click(object sender, EventArgs e)tryint width = this.pictureBox1.Width; /图像宽度int height = this.pictureBox1.Height; /图像高度Graphics g = this.panel1.CreateGraphics();g.Clear(Color.Gray);Bitmap bitmap = new Bitmap(width, height);int x = 0;while (x = height / 2)for (int i = 0; i = width - 1; i+)bitmap.SetPixel(i, x, MyBitmap.GetPixel(i, x);for (int i = 0; i = width - 1; i+)bitmap.SetPixel(i, height - x - 1, MyBitmap.GetPixel(i, height - x - 1);x+;this.panel1.Refresh();g.DrawImage (bitmap,0,0);System.Threading.Thread.Sleep(10);catch (Exception ex)MessageBox.Show(ex.Message, 信息提示);三、以四周扩散的方式显示图像原理:首先设置图像显示的位置, 然后按高度和宽度的比例循环输出, 直到高度和宽度为原始大小。代码:private void button1_Click(object sender, EventArgs e)tryint width = this.MyBitmap.Width; /图像宽度int height = this.MyBitmap.Height; /图像高度/取得Graphics对象Graphics g = this.panel1.CreateGraphics();g.Clear(Color.Gray); /初始为全灰色for (int i = 0; i = width / 2; i+)int j = Convert.ToInt32 (i*(Convert.ToSingle(height) / Convert.ToSingle(width);Rectangle DestRect = new Rectangle(width / 2 - i, height/2-j, 2 * i, 2*j);Rectangle SrcRect = new Rectangle(0, 0, MyBitmap.Width, MyBitmap.Height);g.DrawImage(MyBitmap, DestRect, SrcRect, GraphicsUnit.Pixel);System.Threading.Thread.Sleep(10);catch (Exception ex)MessageBox.Show(ex.Message, 信息提示);四、以分块效果显示图像原理:首先将图分为几块, 再使用 Bitmap 类的 Clone方法从原图指定的块中复制图像, 最后将这些块依次显示出来便可。代码:private void button1_Click(object sender, EventArgs e)Graphics g = this.panel1.CreateGraphics();g.Clear(Color.White);int width = MyBitmap.Width;int height = MyBitmap.Height;/定义将图片切分成四个部分的区域RectangleF block =new RectangleF(0,0,width/2,height/2),new RectangleF(width/2,0,width/2,height/2),new RectangleF(0,height/2,width/2,height/2),new RectangleF(width/2,height/2,width/2,height/2);/分别克隆图片的四个部分Bitmap MyBitmapBlack =MyBitmap.Clone(block0,System.Drawing.Imaging.PixelFormat.DontCare),MyBitmap.Clone(block1,System.Drawing.Imaging.PixelFormat.DontCare),MyBitmap.Clone(block2,System.Drawing.Imaging.PixelFormat.DontCare),MyBitmap.Clone(block3,System.Drawing.Imaging.PixelFormat.DontCare);/绘制图片的四个部分,各部分绘制时间间隔为0.5秒g.DrawImage(MyBitmapBlack0, 0, 0);System.Threading.Thread.Sleep(1000);g.DrawImage(MyBitmapBlack1, width / 2, 0);System.Threading.Thread.Sleep(1000);g.DrawImage(MyBitmapBlack3, width / 2, height / 2);System.Threading.Thread.Sleep(1000);g.DrawImage(MyBitmapBlack2, 0, height / 2);五、以淡入淡出效果显示图像原理:使用 ImageAttrributes 类的 SetColorMatrix() 方法设置颜色, 调整矩阵实现淡出的效果. 此类还可以对颜色进行校正, 调暗, 调亮和移除等。代码:private void button1_Click(object sender, EventArgs e)tryGraphics g = this.panel1.CreateGraphics();g.Clear(Color.Gray);int width = MyBitmap.Width;int height = MyBitmap.Height;ImageAttributes attributes = new ImageAttributes();ColorMatrix matrix = new ColorMatrix();/创建淡入颜色矩阵matrix.Matrix00 = (float)0.0;matrix.Matrix01 = (float)0.0;matrix.Matrix02 = (float)0.0;matrix.Matrix03 = (float)0.0;matrix.Matrix04 = (float)0.0;matrix.Matrix10 = (float)0.0;matrix.Matrix11 = (float)0.0;matrix.Matrix12 = (float)0.0;matrix.Matrix13 = (float)0.0;matrix.Matrix14 = (float)0.0;matrix.Matrix20 = (float)0.0;matrix.Matrix21 = (float)0.0;matrix.Matrix22 = (float)0.0;matrix.Matrix23 = (float)0.0;matrix.Matrix24 = (float)0.0;matrix.Matrix30 = (float)0.0;matrix.Matrix31 = (float)0.0;matrix.Matrix32 = (float)0.0;matrix.Matrix33 = (float)0.0;matrix.Matrix34 = (float)0.0;matrix.Matrix40 = (float)0.0;matrix.Matrix41 = (float)0.0;matrix.Matrix42 = (float)0.0;matrix.Matrix43 = (float)0.0;matrix.Matrix44 = (float)0.0;matrix.Matrix33 = (float)1.0;matrix.Matrix44 = (float)1.0;/从0到1进行修改色彩变换矩阵主对角线上的数值/使三种基准色的饱和度渐增Single count = (float)0.0;while (count 0.0)matrix.Matrix00 = (float)count;matrix.Matrix11 = (float)count;matrix.Matrix22 = (float)count;matrix.Matrix33 = (float)count;attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);g.DrawImage(MyBitmap, new Rectangle(0, 0, width, height),0, 0, width, height, GraphicsUnit.Pixel, attributes);System.Threading.Thread.Sleep(20);count = (float)(count - 0.01);catch (Exception ex)MessageBox.Show(ex.Message, 信息提示);六、以左右对接的方式显示图像原理:首先将图像分为左右两部分, 然后分别显示。代码:private void button1_Click(object sender, EventArgs e)/以左右对接方式显示图像tryint width = this.MyBitmap.Width; /图像宽度int height = this.MyBitmap.Height; /图像高度Graphics g = this.panel1.CreateGraphics();g.Clear(Color.Gray); /初始为全灰色Bitmap bitmap = new Bitmap(width, height);int x = 0;while (x = width / 2)for (int i = 0; i = height - 1; i+)bitmap.SetPixel(x, i, MyBitmap.GetPixel(x, i);for (int i = 0; i = height - 1; i+)bitmap.SetPixel(width - x - 1, i,MyBitmap.GetPixel(width - x - 1, i);x+;this.panel1.Refresh();g.DrawImage (bitmap,0,0);System.Threading.Thread.Sleep(10);catch (Exception ex)MessageBox.Show(ex.Message, 信息提示);七、以左右反转的方式显示图像原理:计算图像位置和高度后以宽度的一半为轴进行对换左右半边的图像。代码:private void button1_Click(object sender, EventArgs e)/以左右反转方式显示图像tryint width = this.MyBitmap.Width; /图像宽度int height = this.MyBitmap.Height; /图像高度Graphics g = this.panel1.CreateGraphics();g.Clear(Color.Gray); /初始为全灰色for (int j = -height / 2; j = height / 2; j+)g.Clear(Color.Gray); /初始为全灰色int i = Convert.ToInt32(j * (Convert.ToSingle(width) / Convert.ToSingle(height);Rectangle DestRect = new Rectangle(width / 2 - i, 0, 2 * i, height);Rectangle SrcRect = new Rectangle(0, 0, MyBitmap.Width, MyBitmap.Height);g.DrawImage(MyBitmap, DestRect, SrcRect, GraphicsUnit.Pixel);System.Threading.Thread.Sleep(10);catch (Exception ex)MessageBox.Show(ex.Message, 信息提示);八、以从上向下拉伸的方式显示图像原理:将图像的宽度不变每次显示图像的一部分, 直到将图片完全显示。代码:private void button1_Click(object sender, EventArgs e)/以从上向下拉伸方式显示图像tryint width = this.MyBitmap.Width; /图像宽度int height = this.MyBitmap.Height; /图像高度Graphics g = this.panel1.CreateGraphics();g.Clear(Color.Gray); /初始为全灰色for (int y = 1; y = height; y+)Bitmap bitmap=MyBitmap.Clone (new Rectangle(0,0,width ,y),System.Drawing .Imaging.PixelFormat .Format24bppRgb );g.DrawImage (bitmap,0,0);System.Threading.Thread.Sleep(10);catch (Exception ex)MessageBox.Show(ex.Message, 信息提示);九、以从左向右拉伸的方式显示图像原理:将图像的高度不变每次显示图像的一部分, 直到将图片完全显示。代码:private void button1_Click(object sender, EventArgs e)/以从左向右拉伸方式显示图像tryint width = this.MyBitmap.Width; /图像宽度int height = this.MyBitmap.Height; /图像高度Graphics g = this.panel1.CreateGraphics();g.Clear(Color.Gray); /初始为全灰色for (int x = 1; x = width; x+)Bitmap bitmap=MyBitmap.Clone (new Rectangle(0,0,x ,height),System.Drawing .Imaging.PixelFormat .Format24bppRgb );g.DrawImage (bitmap,0,0);System.Threading.Thread.Sleep(10);catch (Exception ex)MessageBox.Show(ex.Message, 信息提示);十、以任意角度旋转图像原理:主要使用了 Graphics 类提供的 RotateTransform() 方法对图像进行旋转。代码:private void button1_Click(object sender, EventArgs e)/以任意角度旋转显示图像Graphics g = this.panel1.CreateGraphics();float MyAngle = 0;/旋转的角度while (MyAngle 360)TextureBrush MyBrush = new TextureBrush(MyBitmap);this.panel1.Refresh();MyBrush.RotateTransform(MyAngle);g.FillRectangle(MyBrush, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);MyAngle += 0.5f;System.Threading.Thread.Sleep(50);十一、以椭圆的方式显示图像原理:主要使用了 Graphics 类提供的 FillEllipse() 方法和 TextureBrush() 方法。代码:十二、以不同的透明度显示图像.原理:Graphics 类的 FromArgb() 方法。代码:private void button1_Click(object sender, EventArgs e)/以不同的透明度显示图像Graphics g = this.panel1.CreateGraphics();g.SmoothingMode = SmoothingMode.AntiAlias;TextureBrush MyBrush = new TextureBrush(MyBitmap);g.FillRectangle(MyBrush, this.panel1.ClientRectangle);for (int i = 0; i 255; i+)/由透明变为不透明g.FillRectangle(new SolidBrush(Color.FromArgb(i,Color.DarkSlateGray), this.panel1.ClientRectangle);System.Threading.Thread.Sleep(100);十三、以不同分辨率显示图像原理:Bitmap 类的 SetResolution 方法。代码:private void button1_Click(object sender, EventArgs e)/以不同的分辨率显示图像Graphics g = this.panel1.CreateGraphics();for (int i = 10; i this.panel1.Height; i += 2)g.Clear(Color.Gray);MyBitmap.SetResolution(i, i);g.DrawImage(MyBitmap, 0, 0);System.Threading.Thread.Sleep(100);十四、以不同翻转方式显示图像原理:Bitmap 类的RotateFip()方法。代码:private void button1_Click(object sender, EventArgs e)/以不同翻转方式显示图像Graphics g = this.panel1.CreateGraphics();for (int i = 0; i 17; i+)switch (i)case 0:MyBitmap.RotateFlip(RotateFlipType.RotateNoneFlipX);break;case 1:MyBitmap.RotateFlip(RotateFlipType.Rotate180FlipNone);break;case 2:MyBitmap.RotateFlip(RotateFlipType.Rotate180FlipX);break;case 3:MyBitmap.RotateFlip(RotateFlipType.Rotate180FlipXY);break;case 4:MyBitmap.RotateFlip(RotateFlipType.Rotate180FlipY);break;case 5:MyB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2021年人民警察节活动训练学习心得与体会五篇
- 2025年教师招聘之《幼儿教师招聘》题库必背100题含答案详解(精练)
- 教师招聘之《幼儿教师招聘》综合提升测试卷及答案详解(典优)
- 2025年教师招聘之《小学教师招聘》通关提分题库及完整答案详解【各地真题】
- 教师招聘之《幼儿教师招聘》考试彩蛋押题附答案详解【模拟题】
- 教师招聘之《幼儿教师招聘》自测题库及参考答案详解(模拟题)
- 2025年教师招聘之《小学教师招聘》通关提分题库附答案详解【培优】
- 实商务英语综合教程(第一册)-课件 Unit 9 Business Environment
- 2025年新能源商用车辆在电力运输中的应用场景分析报告001
- 教师招聘之《幼儿教师招聘》练习题(一)附参考答案详解【典型题】
- GB/T 19787-2005包装材料聚烯烃热收缩薄膜
- 多维阅读第4级Animal Fathers 动物爸爸 课件
- 国寿基本法晋升组经理的意义和价值课件
- 人教版七年级美术上册全套课件
- 《企业内部控制(第二版)》配套教学课件
- 新中韩进出口水产品卫生管理协议
- 护理晋升晋升副主任护师病例分析专题报告(急性心肌梗死患者的护理要点)
- 高级食品生物化学脂类PPT
- 油气集输管线管道工程征地外协管理方案
- 《智慧农业》的ppt完整版
- CT图像伪影及处理
评论
0/150
提交评论