Delphi学习:图像放大漫游攻略
出处:PConline 2004年02月14日 作者:amei2000go/CSDN 责任编辑:linjixiong
文章导读: 我想大家应该都用过 ACDSee 或者 Windows XP,它们都支持图像的放大和漫游,虽然网上也有相关的资料,但是都不是很全面,今天我给大家介绍一种方法,由于篇幅的关系,主要讲如何实现,尽量做到言简意赅,好了,我们现在就开始。 说明: 1.本文使用 Object pascal 进行描述,请读者自行转换为相关的代码,作者尽量做到与代码无关 2.涉及到图像操作,尽量使用 Windows
我想大家应该都用过 ACDSee 或者 Windows XP,它们都支持图像的放大和漫游,虽然网上也有相关的资料,但是都不是很全面,今天我给大家介绍一种方法,由于篇幅的关系,主要讲如何实现,尽量做到言简意赅,好了,我们现在就开始。
说明:
1.本文使用 Object pascal 进行描述,请读者自行转换为相关的代码,作者尽量做到与代码无关
2.涉及到图像操作,尽量使用 Windows API 和位操作
理论篇:
关键词:
绘图区-即窗口显示图像的区域,亦可为全屏幕(在全屏幕下绘图的效果比一般窗口下好)
中心点-即要绘图区显示的中心点在原始图像的坐标(声明:这个概念特别重要)
先说说图像的放大,要放大一张图片,我们一般的做法是直接放大图像,但本文介绍的方法仅放大我们能够看到的部分,放大分两种情况,一种是放大后比绘图区还要小,这种情况没什么好说,当然是显示全部的图像;第二种是放大后的图像比绘图区大,这才是我们今天要讨论的重点话题,这种情况下我们先要确定图像放大后的大小,然后根据“中心点”计算在原始图像的位置和大小,最后把截取的图像放大到绘图区。
再说说图像的漫游,当显示的图像超过绘图区时,我们需要对图像进行漫游,以便看到全部的图像。原理是:当鼠标在绘图区进行单击时,这时开始漫游,先记录鼠标的单击位置,然后检测鼠标的移动,根据鼠标和上次的位移计算出“中心点”(需要将屏幕坐标转换为原始图像坐标),根据在上面放大的原理到原始图像中取出要显示的部分,放大显示到绘图区。
说明:
1.本文使用 Object pascal 进行描述,请读者自行转换为相关的代码,作者尽量做到与代码无关
2.涉及到图像操作,尽量使用 Windows API 和位操作
理论篇:
关键词:
绘图区-即窗口显示图像的区域,亦可为全屏幕(在全屏幕下绘图的效果比一般窗口下好)
中心点-即要绘图区显示的中心点在原始图像的坐标(声明:这个概念特别重要)
先说说图像的放大,要放大一张图片,我们一般的做法是直接放大图像,但本文介绍的方法仅放大我们能够看到的部分,放大分两种情况,一种是放大后比绘图区还要小,这种情况没什么好说,当然是显示全部的图像;第二种是放大后的图像比绘图区大,这才是我们今天要讨论的重点话题,这种情况下我们先要确定图像放大后的大小,然后根据“中心点”计算在原始图像的位置和大小,最后把截取的图像放大到绘图区。
再说说图像的漫游,当显示的图像超过绘图区时,我们需要对图像进行漫游,以便看到全部的图像。原理是:当鼠标在绘图区进行单击时,这时开始漫游,先记录鼠标的单击位置,然后检测鼠标的移动,根据鼠标和上次的位移计算出“中心点”(需要将屏幕坐标转换为原始图像坐标),根据在上面放大的原理到原始图像中取出要显示的部分,放大显示到绘图区。
相关快问问题
频道精选
不花钱又能表达芳心,为对方设计情人节贺卡或者壁纸之类的,相信你的花心思制作的作品也能感动对方。...[详细]
- 用Delphi编写Win2000服务程序04-09
- Delphi实现对注册表的监视和扫描03-08
- Delphi基础:回调函数及其使用02-23
- Delphi实例演示:隐藏系统中的驱动器02-14
- Delphi7从入门到精通之认识Delphi编辑02-14
论坛热帖
热门软件下载推荐
本周十大热评文章
本周十大人气文章
软件今日报价






