关于图片(像)框的几个问题

qhdzh 2003-08-28 03:28:12
如何移动在图片(像)框中装入的大图片,比如说3000*6000的图
并且能够放大或缩小。
...全文
20 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yijiansong 2003-08-29
  • 打赏
  • 举报
回复
揭贴吧
505 2003-08-29
  • 打赏
  • 举报
回复
用StretchBlt缩放,用BitBlt平移

StretchBlt
Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

BitBlt
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
说明
将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hDestDC Long,目标设备场景
x,y Long,对目标DC中目标矩形左上角位置进行描述的那个点。用目标DC的逻辑坐标表示
nWidth,nHeight Long,欲传输图象的宽度和高度
hSrcDC Long,源设备场景。如光栅运算未指定源,则应设为0
xSrc,ySrc Long,对源DC中源矩形左上角位置进行描述的那个点。用源DC的逻辑坐标表示
dwRop Long,传输过程要执行的光栅运算
注解
在NT环境下,如在一次世界传输中要求在源设备场景中进行剪切或旋转处理,这个函数的执行会失败
如目标和源DC的映射关系要求矩形中像素的大小必须在传输过程中改变,那么这个函数会根据需要自动伸缩、旋转、折叠、或切断,以便完成最终的传输过程
jlum99 2003-08-28
  • 打赏
  • 举报
回复
用鼠标拖动,无非就是拖动picturebox
简单 2003-08-28
  • 打赏
  • 举报
回复
楼主是想鼠标象个小手可以拖动图

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
dragX = X
dragY = Y
End If

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim TempX, TempY As Long
With Picture1
'//获取图象移动后的位置
TempX = .Left + (X - dragX)
TempY = .Top + (Y - dragY)
'//如果图像移动后超出容器则重置其位置~~(限定图象不超出)
If TempX >= 0 Then
.Left = 0
Else
If -(Picture1.Width - frm.Width) > TempX Then
.Left = -(Picture1.Width - frm.Width)
Else
.Left = TempX
End If
End If

If TempY >= 360 Then
.Top = 360
Else
If -(Picture1.Height - frm.Height) > TempY Then
.Top = -(Picture1.Height - frm.Height)
Else
.Top = TempY
End If
End If
End With
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.Drag vbEndDrag
End Sub
qhdzh 2003-08-28
  • 打赏
  • 举报
回复
我可能没有说明白。
我想用鼠标拖动图片框里的图片,而不是图片框。这个有没有办法来实现??
射天狼 2003-08-28
  • 打赏
  • 举报
回复
这是用鼠标拖动图片PICTUREBOX的代码~~
看看吧~~~~~
射天狼 2003-08-28
  • 打赏
  • 举报
回复
Option Explicit

Dim ll_OldX As Long, ll_OldY As Long

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ll_OldX = X: ll_OldY = Y
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
With Picture1
.Move .Left - ll_OldX + X, .Top - ll_OldY + Y, .Width, .Height
End With
End If
End Sub
yijiansong 2003-08-28
  • 打赏
  • 举报
回复
两个picturebox 一个载入图片 AUTOSIZE 为 TRUE,另一个为容器 AUTOSIZE 为 FALSE。滚动载入图片的picturebox,即可。
射天狼 2003-08-28
  • 打赏
  • 举报
回复
同意楼上,用两个PICTUREBOX,一个装图片,一个做为容器,再加两个滚动条控件,调整放图片的PICTUREBOX的位置~~
qhdzh 2003-08-28
  • 打赏
  • 举报
回复
我想通过鼠标来移动图片,而不是用图片框的流滚动条,有没有办法
jlum99 2003-08-28
  • 打赏
  • 举报
回复
两个picturebox 一个载入图片,在一个picturebox里滚动载入图片的picturebox,picturebox可以用做一个很好的容器。

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧