正常访问状态! 设为首页 | 加入收藏夹 | 浏览历史  
  http://www.guosp.com
 碧海澜涛居
  海纳百川,有容乃大。壁立千刃,无欲则刚!
 
 
关键词:
  网站首页 | 关于本站 | 技术资料 | 美文日志 | 读书收藏 | 影视收藏 | 软件收藏 | 摄影相册| 留言板 
  技术资料 >> C#资料库 关闭(快捷键alt+C)
搜索标签: 暂无标签
如何用C#来实现以动画的方式显示图像(1)
[阅读次数:1086次]  [发布时间:2010年9月8日]

说明:
由于是以动画方式显示图像,这里没办法直接贴静态截图,因此决定给园友开源,将所有的可运行代码附在案例后面,由于所有的动画处理图像的对象放在都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)
  {
  
  try
  {
  int 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)
  {
  
  try
  {
  int 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)
  {
   try
  {
  int 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, "信息提示");
  }
  }





本页地址: [复制地址]
该页内容非本站原创 收藏自:http://www.gzu521.com/campus/article/program/200812/181170.htm
返回顶部 关闭(快捷键alt+C)
评论统计(0条)| 我要评论
暂无评论内容!
我要评论 
我要评论: 带*部分需要填写
 姓名称呼: * 请填写您的姓名或呢称
联系方式: QQ,MSN,Email都可以,方便交流 (仅管理员可见)
 评论内容: * 不超过100字符,50汉字
验证码:
    
  推荐链接
·C#特点简介
·C# switch语句的用法
·如何用C#实现漂亮的动态图像...
·DataFormatString属性用法
·Visual   C#常用函数和方法...
·使用StringBuilder, String...
·如何用C#来实现以动画的方式...
·如何用C#来实现以动画的方式...
·.net c# 正则表达式 平衡组...
  最近更新  
·Host 'XXX' is not allowed...
·Win2008或IIS7的文件上传大...
·IIS7.0上传文件限制的解决方...
·测试信息2015-03-11
·asp.net中处理图片
·ASP.NET之Web打印-终极解决...
·Asp.net下C#调用Word模版实...
·asp.net下将页面内容导入到...
·asp.net导出为pdf文件
·asp.net生成pdf文件
·FCKeditor 文本编辑器的使用...
·ASP.NET 将数据生成PDF
·asp.net2.0导出pdf文件完美...
·AspJpeg的安装与测试
·JS验证浏览器版本对IE11的支...
  热门浏览  
·IE8和IE9出现“此网页上的问...
·无线路由器密码破解,教你断...
·js替换所有回车换行符
·QQ/MSN在线交流代码
·IE弹出“中国工商银行防钓鱼...
·如何取消键盘上的一些快捷键...
·win7声音小的解决方法
·webdav漏洞的利用
·强制两端对齐的函数或者CSS...
·win7下成功安装sql server ...
·显示器分辨率调的过高导致电...
·天诺时空技术技术论坛
·js验证手机号码格式
·JS展开和收缩效果(二)
·本地计算机上的 MSSQLSERVE...
  碧海澜涛居
网站首页关于本站站长简介开发案例技术资料美文日志摄影相册读书收藏影视收藏留言板
版权所有:碧海澜涛 QQ:410436434 Email:shaopo_guo@163.com 苏ICP备15000526号
免责声明:本站为个人网站,站内所有文字、图片等各类资料均为个人兴趣爱好所收集,不用作任何商业用途,亦不保证资料的真实性,若有因浏览本站内容而导致的各类纠纷,本站也不承担任何责任。本站部分内容来自互联网,如有涉及到您的权益或隐私请联系站长解决。