Rollover image magnifier
The rollover image magnification effect is created by moving a frame, containing an image control, over the source image. By setting the image contained within the frame to a size factor of the compressed image it gives the illusion of magnifying the image under the frame.
Option Explicit Private m_ZoomFactor As Double Private Sub CheckBox1_Click() If CheckBox1.Value Then Image2.AutoSize = False Image2.PictureSizeMode = fmPictureSizeModeStretch Image2.Width = Image2.Width * 2 Image2.Height = Image2.Height Else Image2.PictureSizeMode = fmPictureSizeModeClip Image2.AutoSize = True End If End Sub Private Sub CommandButton1_Click() Unload Me End Sub Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then With Frame1 .Left = X .Top = Y .Visible = True End With End If End Sub Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Dim RatioX As Double Dim RatioY As Double If Button = 1 Then Frame1.Left = Image1.Left + X - (Frame1.Width / 2) Frame1.Top = Image1.Top + Y - (Frame1.Height / 2) RatioX = X / Image1.Width RatioY = Y / Image1.Height Image2.Left = -(Image2.Width * RatioX) + (Frame1.Width / 2) Image2.Top = -(Image2.Height * RatioY) + (Frame1.Height / 2) End If End Sub Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then Frame1.Left = Image1.Left + Image1.Width Frame1.Top = Image1.Top + Image1.Height Frame1.Visible = False End If End Sub Private Sub UserForm_Initialize() Image2.Picture = Image1.Picture Image2.AutoSize = True Frame1.SpecialEffect = fmSpecialEffectRaised Frame1.Visible = False m_ZoomFactor = 1 ZoomFactor.List = Array("1.0", "1.5", "2.0", "2.5", "3.0", "3.5", "4.0", "5.0", "10.0") ZoomFactor.ListIndex = 0 End Sub Private Sub ZoomFactor_Change() m_ZoomFactor = CDbl(ZoomFactor.Value) Image2.AutoSize = True If ZoomFactor.ListIndex > 0 Then Image2.AutoSize = False Image2.PictureSizeMode = fmPictureSizeModeStretch Image2.Width = Image2.Width * m_ZoomFactor Image2.Height = Image2.Height * m_ZoomFactor Else Image2.PictureSizeMode = fmPictureSizeModeClip End If End SubFor the best effect the large source image should be size such that it retains it's aspect ratio.