Private Declare Function GetDC Lib "user32"
(ByVal hwnd As Long) As Long
Private Declare Function
GetDesktopWindow Lib "user32" () As Long
Private Declare Function ReleaseDC Lib "user32"
(ByVal hwnd As Long, ByVal hdc As Long) As Long
Dim sWin, sDC, hd
Dim ImageWidth As Long, ImageHeight As Long
Dim DX, DY, SX, SY, PX, PY, DW, DH, MX, MY, X0, Y0, AMP
---- 4. 双 击ImageWin 对 象, 并 在MouseMove 事 件 和Mouse_down 事 件 中 输 入 下 面 程 序, 用 于 窗 口 图 形 的 拖 动 滚 动 处 理。
Private Sub ImageWin_MouseMove(Button As Integer,
Shift As Integer, X As Single, Y As Single)
If (Button And vbLeftButton) > 0 Then
'拖动鼠标滚动图像
MX = HScroll1.Value (X - X0)
MY = VScroll1.Value (Y - Y0)
If MX > 0 And MX < HScroll1.Max Then HScroll1.Value = MX
If MY > 0 And MY < VScroll1.Max Then VScroll1.Value = MY
End If
End Sub
Private Sub ImageWin_MouseDown(Button As Integer,
Shift As Integer, X As Single, Y As Single)
X0 = X: Y0 = Y '拖动鼠标初值
End Sub
---- 5. 在ZoomIn 控 件 和ZoomOut 的Click 事 件 中 输 入 下 列 程 序, 对 窗 口 图 像 进 行 放 大、 缩 小 处 理。
Private Sub ZoonIn_Click()
If AMP < 5 Then AMP = 2 * AMP
'放大系数小于5,则放大图像
AppImage.ImageWin.PaintPicture ImageWin.Image,
0, 0, AMP * DX, AMP * DY, PX, PY, SX, SY
End Sub
Private Sub ZoomOut_Click()
AppImage.ImageWin.Cls
'清除窗口图像
If AMP > 0.25 Then AMP = AMP / 2
'放大系数大于0.25,则缩小图像
AppImage.ImageWin.PaintPicture
ImageWin.Image, 0, 0, AMP * DX, AMP * DY, PX, PY, SX, SY
End Sub
---- 6. 在HScroll 控 件 和VScroll 控 件 的Change 事 件 中 输 入 下 面 程 序, 对 窗 口 图 像 进 行 滚 动 处 理。
Private Sub HScroll1_Change()
PX = HScroll1.Value * DW / HScroll1.Max
'计算水平滚动位置
AppImage.ImageWin.PaintPicture ImageWin.Image,
0, 0, AMP * DX, AMP * DY, PX, PY, SX, SY
End Sub
Private Sub VScroll1_Change()
PY = VScroll1.Value * DH / VScroll1.Max
'计算垂直滚动位置
AppImage.ImageWin.PaintPicture ImageWin.Image,
0, 0, AMP * DX, AMP * DY, PX, PY, SX, SY
End Sub
---- 7. 在ExitButton 控 件 的Click 事 件 中 输 入 下 面 程 序, 用 于 结 束 程 序、 关 闭 窗 口。
Private Sub ExitButton_Click()
End
End Sub
---- 五、 应 用 说 明
---- 窗 口 图 像 滚 动 是 各 种 数 据 查 询 系 统、 多 媒 体 图 形 数 据 库 系 统 开 发 中 的 基 本 功 能 之 一, 本 文 用Windows API 函 数 实 现 了 窗 口 图 像 缩 放、 滚 动, 该 方 法 可 适 用 于Visual C 等 语 言。 本 文 全 部 程 序 均 在WIN98 环 境 中Visual Basic 5.0 下 调 试 通 过。
上一篇: VB中任意旋转位图的实现
下一篇: VB5.0中基于桌面的屏幕技巧
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




