作者fumizuki (蒙面加菲狮)
看板Visual_Basic
标题Re: [VB6 ] 关於pictureBox与scrollBar的几个问题
时间Sat May 13 11:39:30 2006
※ 引述《ashinplay (..............)》之铭言:
: 1.如何把绘pictureBox里的图片(全部物件)清除?
图片物件:Set Picture1.Picture = Nothing
绘图物件:Picture1.Cls()
: 2.如何使用scrollBar来浏览pictureBox里的图片(只考虑垂直方向)
: 就是如过图片数超过pictureBox的大小的话,那scrollBar应该怎麽写?
: (p.s. pictureBox里的图片是用PaintPicture的方式来画的)
: 感谢~
'表单上放置 PictureBox、CommonDialog、CommandButton 三个控制项
Option Explicit
Private PicMax As Long
'储存图片的总高度
Private Sub Form_Activate()
Dim w As Long, h As Long
'调整视窗位置及大小
w = 800 * Screen.TwipsPerPixelX: h = 600 * Screen.TwipsPerPixelY
Move (Screen.Width - w) / 2, (Screen.Height - h) / 2, w, h
'调整 PictureBox 位置及大小
w = 500 * Screen.TwipsPerPixelX: h = ScaleHeight
Picture1.Move 0, 0, w, h
'调整 VScrollBar 位置及大小
VScroll1.Move Picture1.Left + w, 0, 300, h
End Sub
Private Sub Command1_Click()
On Error GoTo errProc
Dim PicFile As IPictureDisp, a As Variant
Dim i As Integer, j As Integer, Count As Integer
Dim FilePath As String, FileName As String, PictureWidth As Long
Dim x As Long, y As Long, w As Long, h As Long, ratio As Single
'取得图片宽度(可显示范围@_@)
PictureWidth = Picture1.ScaleWidth - VScroll1.Width
'开启自动绘图功能
Picture1.AutoRedraw = True
'设定档案对话方块路径
ChDir App.Path
CommonDialog1.InitDir = CurDir
'多重选取、95以上标准对话方块、使用目前路径、禁示输入不存在的档案
CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer Or _
cdlOFNNoChangeDir Or cdlOFNFileMustExist
'打开档案对话方块
CommonDialog1.ShowOpen
'取得使用者选择的档案清单,Chr(0)为分隔符号
a = Split(CommonDialog1.FileName, Chr(0))
Count = UBound(a) + 1
x = 0: y = 0
'开始将选择的图片档逐一印出来
For i = 0 To Count - 1
FileName = a(i)
If i = 0 Then
If Count > 0 Then
'如果是复选的话,第一个项目即为档案路径
FilePath = a(i)
FileName = ""
Else
'如果是单选的话,第一个项目为档案路径+档案名称
j = InStrRev(FileName, "\")
FilePath = Left(FileName, j)
FileName = Mid(FileName, j + 1)
End If
If Not FilePath Like "*\" Then FilePath = FilePath & "\"
End If
If Trim(FileName) <> "" Then
'载入图片,并取得图片大小
Set PicFile = LoadPicture(FilePath & FileName)
w = PicFile.Width: h = PicFile.Height
'依比例缩图
If w > PictureWidth Then
ratio = PictureWidth / w
w = PictureWidth: h = h * ratio
End If
'将 PictureBox 调整成适当大小,不然图片会看不到
Picture1.Height = y + h
'将图片印出至 PictureBox
Picture1.PaintPicture PicFile, x, y, w, h
y = y + h
End If
Next
'设定卷轴状态
VScroll1.Min = 0
VScroll1.Max = y - ScaleHeight
VScroll1.LargeChange = y / 10
VScroll1.SmallChange = y / 20
Exit Sub
errProc:
MsgBox Err.Description
End Sub
'ScrollBar 两个事件必须处理@_@
Private Sub VScroll1_Change()
Call VScroll1_Scroll()
End Sub
Private Sub VScroll1_Scroll()
'将 PictureBox 向上移动,即可看到下面超出视窗范围的内容了
Picture1.Top = PicMax - VScroll1.Value
End Sub
--
技巧来自於 vb 研究小站,提醒大家要多多参考。
--
▃▅▇▆▄ ▆▂▃ `
逝去感情如何能留住,半点痴情遗留殊不易,██▅▇▄▃ ▇▃▂" .
█████████▃i ▁▄▇
更多凄凄惨惨的遭遇…………██▆▃ █▅▆▃ˍ▄*
◢ ▂█▄▇▅▂▌.
我不知道,王~八~蛋~~! ▂▆███ █▄▃ 。fumizuki。Check。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.58.156.43
1F:推 ashinplay:感激不尽<(_ _)> 05/13 12:56