📄 h20000324-19.htm
字号:
<html><head><script language="JavaScript"> function reset(){ for ( var i=0; i < document.Form1.elements.length; i++ ) { document.Form1.elements[i].options[0].selected=true }}function going(url){ parent.location=url; reset();}</script><style><!--A:link {text-decoration: none; color: #000000; font-family: 宋体}A:visited {text-decoration: none; color: #000000; font-family: 宋体}A:active {text-decoration: none; font-family: 宋体}A:hover {text-decoration: underline:#ffffff; color: #ff0000}body,table {font-size: 9pt; font-family: 宋体}.H1 {font-size: 9pt ; line-height:9pt; align=center}.ourfont {font-size: 9pt ; line-height:9pt; }.ourfont1 {font-size: 9pt ; line-height:9pt; }--></style><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>基 于Delphi 的 图 像 漫 游</title></head><body topmargin="0" leftmargin="0"><div align="center"><center><table border="0" cellPadding="0" cellSpacing="0" width="700"><tbody> <tr> <td><p class="content4"><span class="font"><img border="0" height="3" src="../../soft/pix.gif" width="700"></span></td> </tr></tbody></table></center></div><div align="center"><center><table border="0" cellPadding="0" cellSpacing="0" width="700"><tbody> <tr> <td bgColor="#3399ff" width="658"><p class="ourfont"><span class="font"> </span><a style="text-decoration: none; color: rgb(255,255,255)" href="../os/H00705-2.htm">操作系统</a><font color="#FFFFFF"><span class="font"><span> |</span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../image/H00705-14.htm">图像处理</a><font color="#FFFFFF"><span>|<span class="font"> </span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../autoCAD/H00705-19.htm">辅助设计</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="../data/H00705-18.htm">数 据 库</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="H00706-1.htm">高级编程</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="../netuse/H00705-20.htm">网络应用</a><font color="#FFFFFF"><span><span class="font"> | </span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../webpage/H00705-21.htm">网页制作</a><font color="#FFFFFF"><span><span class="font"> |</span></span></font> <a style="color: rgb(255,255,255); text-decoration: none" href="../technic/H00706-3.htm">技术交流 </a><a style="color: rgb(255,255,255); text-decoration: none" href="http://202.100.13.77/clslyb/default.asp?clsid=jiaoc"><font color="#FFFFFF"><strong>过客留言</strong></font></a></td> <td bgColor="#3399ff" width="32"><p align="center" class="ourfont"><a href="mailto:net@163.sn.cn"><img src="../../soft/email.gif" alt="email.gif (493 字节)" border="0" WIDTH="20" HEIGHT="19"></a></td> </tr></tbody></table></center></div><div align="center"><center><table border="1" cellSpacing="1" width="700" bordercolor="#3399FF"><tbody> <tr> <td align="left" bgColor="#FFFFFF" vAlign="top" width="700" bordercolor="#0000FF" bordercolorlight="#0000FF" bordercolordark="#0000FF"><p class="ourfont" align="center"><strong><br> <br> <br> <br> 基 于Delphi 的 图 像 漫 游</strong></p> <p class="ourfont" align="center">文/向晖 </p> <p>在 开 发 多 媒 体 应 用 中, 经 常 会 遇 到 需 要 在 有 限 区 域 内 显 示 大 图 像 的 情 况, 有 不 少 文 章 对 此 提 出 过 解 决 方 法, 如 通 过 调 用Windows 的API 函 数, 直 接 读 写 内 存 等。 这 些 方 法 有 一 定 优 点, 但 实 现 起 来 较 为 复 杂, 且 易 出 错。 笔 者 在 实 践 中 通 过 仔 细 摸 索, 利 用Delphi 的 强 大 的 面 向 对 象 可 视 化 开 发 环 境 开 发 了 一 种 交 互 式 图 像 漫 游 方 法。 <br> <br> Delphi 中, 鼠 标 的 消 息 响 应 是 通 过 元 件 的OnMouseDown,OnMouseUp 和OnMouseMove 事 件 实 现 的, 通 过 对 此 三 个 事 件 编 程, 可 控 制 图 像 在 有 限 区 域 内 移 动。 考 虑 到 所 移 动 的 图 像 的 边 界 应 总 在 该 区 域 外, 因 此 图 像 的 左 上 角 坐 标 应 小 于 该 区 域 对 应 坐 标, 图 像 右 下 角 坐 标 应 大 于 该 区 域 对 应 坐 标( 除 非 图 像 大 小 比 该 区 域 小)。 <br> <br> 具 体 方 法 为: <br> <br> 1、 新 建 一 工 程Project1, 在Form1 中 依 次 放 入Panel1,Panel2 和Image1 元 件, 注 意Panel2 和Image1 分 别 在Panel1 和Panel2 上, 再 将 一Label1 元 件 加 入Panel2 中, 调 整Panel1 尺 寸 为 适 当 大 小, 并 修 改 各 元 件 属 性 为: <br> <br> 元 件 属 性 名 属 性 值<br> Panel1 BevelInner: bvRaised<br> BevelOuter: bvNone<br> BorderStyle: bsSingle<br> Panel2 Align: alClient<br> Image1 AutoSize: True<br> Picture: "Apple.bmp"<br> Label1 Align: alClient<br> Transparent: True<br> 注 意: 此 处Label1 的 作 用 不 是 显 示 字 符, 而 是 利 用 它 响 应 鼠 标 消 息, 如 果 不 用Label1 而 直 接 利 用Image1 的 鼠 标 事 件 响 应, 则 会 由 于 其OnMouseDown 事 件 的 激 活 与Image1 的 自 身 坐 标 移 动 事 件 相 冲 突 而 使 图 象 发 生 闪 烁 甚 至 不 能 移 动。 <br> 2、 在implementation 后 加 入 变 量 声 明: <br> <br> origin:Tpoint;<br> image_left:integer;<br> image_top:integer;<br> visa1:Tpoint; ( 鼠 标 当 前 位 置 相 对 图 象 右 下 角 的 坐 标)<br> visa2:Tpoint; ( 鼠 标 当 前 位 置 相 对 图 象 左 上 角 的 坐 标)<br> canmove:boolean;<br> <br> 编 写Label1 鼠 标 响 应 事 件:<br> procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;<br> Shift: TShiftState; X, Y: Integer);<br> begin<br> if Button=mbLeft then<br> begin<br> origin.x:=X;<br> origin.y:=Y;<br> image_left:=image1.left;<br> image_top:=image1.top;<br> visa1.x:=X-(image1.width-panel2.width+image1.left);<br> visa1.y:=Y-(image1.height-panel2.height+image1.top);<br> visa2.x:=X-image1.left;<br> visa2.y:=Y-image1.top;<br> canmove:=true;<br> end;<br> end;<br> <br> procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,<br> Y: Integer);<br> begin<br> if canmove then<br> begin<br> if Xvisa2.x then X:=visa2.x;<br> if Yvisa2.y then Y:=visa2.y;<br> image1.left:=image_left+(X-origin.x);<br> image1.top:=image_top+(Y-origin.y);<br> end;<br> end;<br> <br> procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;<br> Shift: TShiftState; X, Y: Integer);<br> begin<br> canmove:=false;<br> end;<br> 上 述 程 序 在Delphi 2.0 中 编 译 通 过, 经 过 扩 充 和 修 改 还 可 应 用 于 多 媒 体 数 据 库 的 图 像 显 示, 对 于 开 发 用 户 友 好 界 面 有 一 定 借 鉴 作 用。 <br> </td> </tr></tbody></table></center></div><hr align="center" SIZE="1" width="700"><p align="center" class="ourfont"><span><span><font color="#000000"> <a style="color: rgb(0,0,0); text-decoration: none" href="../../soft/network/index.htm">互联网络</font><font color="#FFFFFF"> </font></a><font color="#000000">|</span></span><a href="../../soft/system/index.htm" style="color: rgb(0,0,0); text-decoration: none">系统工具</a><span>|<span> <a href="../../soft/tools/index.htm" style="color: rgb(0,0,0); text-decoration: none">实用工具</a> | <a href="../../soft/multimedia/index.htm" style="color: rgb(0,0,0); text-decoration: none">媒体工具</a> | <a href="../../soft/image/index.htm" style="color: rgb(0,0,0); text-decoration: none">图形图像</a> | <a href="../../soft/game/index.htm" style="color: rgb(0,0,0); text-decoration: none">游戏娱乐</a> | </span><a href="../../soft/usesoft/index.htm" style="color: rgb(0,0,0); text-decoration: none">软件<span>使用</a></font><font color="#FFFFFF"> |</font> </span></span></p><hr align="center" SIZE="1" width="700"><font color="#FFE8BB"><p align="center" class="ourfont"></font><font color="#000000"><span><span>© Copyright 2000 </span></span>陕西公用计算机互联网信息中心<span><span> 版权所有 </font></p></span></span><p align="center" class="ourfont"><font color="#000000"><span><span>本站制作维护by <a style="color: rgb(0,0,0)" href="mailto:haiyuan@163.sn.cn">HAIYUAN</a></span></span></font></p><p align="center" class="ourfont"><font color="#000000"><span><span>电话:(029)8371051 8371055 8371049 联系信箱:<a href="mailto:net@163.sn.cn">net@163.sn.cn</a></span></span></font></p></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -