图片放大缩小
Option Explicit
Private Const ratio_small As Single = 0.5 Private Const ratio_large As Single = -1# 为什么是-1呢?
Private Sub Zoom(ByVal img As Image, ByVal ratio As Single)
img.Stretch = True
img.Left = img.Left + img.Width * ratio / 2# 为什么要除以2呢?
img.Top = img.Top + img.Height * ratio / 2# 为什么要除以2呢?
img.Width = img.Width - img.Width * ratio
img.Height = img.Height - img.Height * ratio End Sub
Private Sub Command1_Click()
Zoom Image1, ratio_small
End Sub
Private Sub Command2_Click()
Zoom Image1, ratio_large
End Sub
‘--------------------------------------------------------------------------------------------
使用 PaintPicture 或者API中的 StrechBlt
我用下面代码实现控件随窗口的放大缩小。
SX = FormName.ScaleWidth / FormOldWidth
'保存窗体宽度缩放比例
SY = FormName.ScaleHeight / FormOldHeight
'保存窗体高度缩放比例
On Error Resume Next
For Each Obj In FormName
If Len(Obj.Tag) > 0 Then
Pos = Split(Obj.Tag, " ")
If TypeOf Obj Is ComboBox Or TypeOf Obj Is DriveListBox Then
Obj.Move Pos(0) * SX, Pos(1) * SY, Pos(2) * SX
Else
Obj.Move Pos(0) * SX, Pos(1) * SY, Pos(2) * SX, Pos(3) * SY
End If
End If
Next Obj
Err.Clear
On Error GoTo 0
SX,SY中存放的是窗口放大缩小的比例。tag中放的是窗口中每个控件的left,width,right,height。
我现在能够实现窗口的放大缩小,并且控件也能够随着放大缩小
‘---------------------------------------------------------------------------------------------------------
这是一个窗体内的控件能随窗体大小变化而随之变化的代码,不足的是在窗体变化中无法保证控件(或窗体)的长宽比例不变,哪位高手能想个办法,不论窗体如何变大变小,保证其高宽的比例不会变.
Private Sub Form_Load()
form1.Height = Screen.Height / 3
form1.Width = Screen.Width / 5
End Sub
Private Sub Form_Resize()
Image1.Move 0, 0, ScaleWidth, ScaleHeight End Sub
‘----------------------------------------------------------------------------------------------------------
picture.autosize=true 是图片框的大小自动适应图像的大小,image 刚好相反,可楼主不要,要闪。
所以只能自己处理缩放。而这就牵涉到处理的时间了
‘-------------------------------------------------------------------------------------------------------------------