在图像框内已有缩略图,要求用鼠标单击此图,会弹出一放大的该图,并由鼠标的滚轮可随意放大与缩小该图.哪位大侠帮帮忙!
Private Sub Image3_Click()
(这里要用什么语句?)
End Sub
Private Sub Image3_Click()
(这里要用什么语句?)
End Sub
解决方案 »
- 后台刷卡监控
- 有偿求助:VB制作OCX来封装现成的OCX,可以搞定的朋友留下您的联系方式或者加我QQ:767146882(注明:OCX)
- 关于MSHFlexGrid的排序
- ===========如何利用VB实现文件夹监视的功能===============(100分)
- 请问怎么在VB中删除定义过但没有使用的变量
- 很很基础的问题,请大家赐教!进来看看
- css中 top:或bottom等 还有margin属性为负数是什么意思啊?
- 水晶报表打印EAN13条码的问题
- 请问哪里可以找到xml与电子商务的资料或相关文章,50分送上
- 这个Public变量的值该怎么获取啊?
- 有什么很简单的方法使当前窗口不能移动并且双击窗体蓝边无效??
- 第一个格子装入的数据范围为:1-29; 高概率区:1-7
代码太多了,而且也不知道你的缩略图是如何做的,无法给你写具体代码。
图片是.jpg格式,是与窗体的图像框放在同一个层目录下,导入图像是用图像框的属性picture,
现在的问题有两个:
1、点击“缩略图”打开一个新窗体的命令语句是什么?
2、打开新窗体后如何栏截鼠标滚轮事件?(如果打开的新窗体也用“图像框”并由属性pecture导入该图片可以吗?)
“用一个picturebox作为容器,拦截鼠标滚轮事件,用代码控制image在picturebox中的缩放。”能说得详细一些吗?
从这个问题来看,楼主完成这个程序的困难不小。
Private Sub Image3_Click()
form2.show ,me
End Sub
然后在form2中完成图片的加载和缩放
Public Const WM_COMMAND = &H111
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MOUSEWHEEL = &H20A
Public Oldwinproc As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Public Function FlexScroll(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case wMsg
Case WM_MOUSEWHEEL
Select Case wParam
Case -7864320
'此处添加滚轮向下滚动时的代码
Case 7864320
'此处添加滚轮向上滚动时的代码
End Select
End Select
FlexScroll = CallWindowProc(Oldwinproc, hWnd, wMsg, wParam, lParam)
End Function
窗体中:
Oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf FlexScroll
*************************
偶的图片是点击VB6工具栏上的图像框拖出来的(Image1等),在form1窗体上共有Image1-Image15个图像框,图片是由图像框的属性picture完成(由它提供的对话框,出现WINDOWS的资源管理器,找到图片位置,直接将图片导入,15个图片都是这样方便地导入,然后再选该图像框的属性stretch的true就完成了缩略图,)所以也不知其坐标位置如何计算?
Private Sub Image3_Click()
form2.show ,me
End Sub
按上述命令无法打开"form2"窗体(以前也试过show,不行,这次多了,me也不行,不知何故?)
偶的form2与原窗体是在一个目录下,制作过程是:在"工程1"的树枝目录中,右击鼠标弹出菜单选添加/添加窗体,完成form2制作(是这样吗?)
然后再在form2制作图像框Image1,并导入图片的原图.
希望先解决第一个问题,打开新窗口
关于打开新窗体后如何栏截鼠标滚轮事件?还无法进行.
既然是多个image,那就每个image对应一个图片文件了,还计算什么坐标啊,建议你还是用个image数组吧,可以省很多事的。
不要计算什么坐标。用一组 PictureBox 或 Image 控件数组放缩略图好了。它们也可以都放在同一个作为容器的 PictureBox 中,你只需根据事件中返回的 Index 就可以判断序号。
------------------------------------------------
请问PictureBox 或 Image 控件要从何处添加?
能详细一些介绍操作过程吗?先谢了.
下面的代码是程序里面创建缩略图初始化image()数组用的,可能对你有些帮助
Private Sub CreatThumbs()
Dim lIdx As Long
Dim sText As String, i As Integer
Dim ImgScopeW As Single, ImgScopeH As Single
...
Imgpaint(0).Picture = LoadPicture
Imgpaint(0).Visible = False
...
If Imgpaint.Count > 1 Then
For i = 1 To Imgpaint.Count - 1
Unload Imgpaint(i)
Next
End If
...
Imgpaint(0).Cls
For lIdx = 0 To filHidden.ListCount - 1
Load Imgpaint(lIdx)
Next lIdx
...
DoEvents
...
For lIdx = 0 To filHidden.ListCount - 1
Imgload.Picture = LoadPicture()
Imgload.Picture = LoadPicture(Apath & "\" & filHidden.List(lIdx))
ImgScopeW = Imgpaint(lIdx).ScaleWidth - 8
ImgScopeH = Imgpaint(lIdx).ScaleHeight - 16
PicPainter Imgpaint(lIdx), Imgload, ImgScopeW, ImgScopeH
...
Imgpaint(lIdx).Visible = True
...
DoEvents
Next lIdx
...
Set Imgload.Picture = LoadPicture()
...
If filHidden.ListCount > 0 Then '再次判断有图片,以防DoEvents后出错
Imgpaint_Click 0
End If
End Sub
1.计算ImgThumb在缩放后,width和height的大小
2.ImgThumb上显示出图片,注意width(scalewidth),height(scaleheight),窗体的scalemode
ImgThumb.Cls
ImgThumb.PaintPicture Imgload.Picture, _
0, 0, ImgThumb.ScaleWidth, ImgThumb.ScaleHeight, _
0, 0, Imgload.ScaleWidth, Imgload.ScaleHeight '用paintpicture显示图
3.调整ImgThumb在屏幕中的位置,超出屏幕和缩回屏幕时的处理
4.鼠标按下后,可以拖曳图片
Private Sub Image3_Click()
Load form2
form2.Show
End Sub
(即只要在form2中制作一个放有放大的原图的图像框即可。)
但第二个问题还是没有解决,即打开新窗体后如何栏截鼠标滚轮事件?
按happy_sea指点的方法未能实现新窗体上的图片随滚轮操作放大和缩小。
希望能进一步指明如何使用上面提出的代码?应该将它们放到何位置?