计算机二级辅导:图像放大漫游攻略计算机等级考试

文章作者 100test 发表时间 2010:01:01 09:33:22
来源 100Test.Com百考试题网


  图像放大漫游攻略
  我想大家应该都用过 ACDSee 或者 Windows XP,它们都支持图像的放大和漫游,虽然网上也有相关的资料,但是都不是很全面,今天我给大家介绍一种方法,由于篇幅的关系,主要讲如何实现,尽量做到言简意赅,好了,我们现在就开始。来源:www.100test.com
  说明:
  1.本文使用 Object pascal 进行描述,请读者自行转换为相关的代码,作者尽量做到与代码无关
  2.涉及到图像操作,尽量使用 Windows API 和位操作百考试题-全国最大教育类网站(100test.com)
  理论篇:
  关键词:
  绘图区-即窗口显示图像的区域,亦可为全屏幕(在全屏幕下绘图的效果比一般窗口下好)
  中心点-即要绘图区显示的中心点在原始图像的坐标(声明:这个概念特别重要)
  先说说图像的放大,要放大一张图片,我们一般的做法是直接放大图像,但本文介绍的方法仅放大我们能够看到的部分,放大分两种情况,一种是放大后比绘图区还要小,这种情况没什么好说,当然是显示全部的图像;第二种是放大后的图像比绘图区大,这才是我们今天要讨论的重点话题,这种情况下我们先要确定图像放大后的大小,然后根据“中心点”计算在原始图像的位置和大小,最后把截取的图像放大到绘图区。来源:www.100test.com
  再说说图像的漫游,当显示的图像超过绘图区时,我们需要对图像进行漫游,以便看到全部的图像。原理是:当鼠标在绘图区进行单击时,这时开始漫游,先记录鼠标的单击位置,然后检测鼠标的移动,根据鼠标和上次的位移计算出“中心点”(需要将屏幕坐标转换为原始图像坐标),根据在上面放大的原理到原始图像中取出要显示的部分,放大显示到绘图区。
  算法实现篇:
  1.图像放大
  变量定义:
  PZoom:放大率(整数:100时为100%,根据需要可以将 100 该为 10000 或者更大些,但不推荐使用浮点数)
  a,b:中心点
  w,h:要截取原始图像的宽和高
  x,y:要截取的位置(左上角)
  sw,sh:原始图像的宽和高
  p1,p2:放大比例
  aw,ah:放大后图像的大小
  pw,ph:绘图区大小
  vx,vy:在绘图区显示的位置(左上角)
  vw,vh:在绘图区显示的大小
  ptx,pty:临时变量
  已知的变量:PZoom,(a,b),(sw,sh),(p1,p2),(aw,ah),(pw,ph)
  要计算的变量:(x,y),(w,h),(vx,vy),(vw,vh)
  开始计算:
  aw=Round(PZoom*sw/100).
  ah=Round(PZoom*sh/100).
  p1=aw/pw
  p2=ah/ph
  // 注:Round 用于取整,如其他语言的Int(),Fix()等
  if p1

相关文章


delphi中的字符串处理以及几个字符串类型的说明计算机等级考试
一个从EXE、DLL文件中提取、存取图标完整程序计算机等级考试
计算机二级辅导:delphi读取ini文件计算机等级考试
一个新算法的表达式求值的函数计算机等级考试
计算机二级辅导:图像放大漫游攻略计算机等级考试
开发设计图文并茂的报表的组件计算机等级考试
计算机二级辅导:delphi函数参考手册计算机等级考试
2009年下半年全国计算机二级Delphi上机答案计算机等级考试
2009年9月全国计算机二级Delphi上机试题计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛