这是一个哲学问题,值得各位认真考虑下面的设计模型和实现代码。

'手工添加一个Picture1,不作任何设置
Option Explicit
Dim uu As Boolean
Private Sub Form_Load()
Me.ScaleMode = 3: Picture1.ScaleMode = 3 '像素单位
Me.Caption = "椭圆形状与位置的调整"
Picture1.AutoRedraw = True '避免闪烁
Controls.Add "Vb.Shape", "Sha1", Me '添加椭圆形
Controls(1).Shape = 2: Picture1.BorderStyle = 0
End Sub
Private Sub Form_Resize()
If Picture1.BackColor <> &HFFFF80 Then '首次成形
Picture1.Move 0, 0, 60, 60
Controls(1).Move 150, 80, 100, 80
Picture1.BackColor = &HFFFF80: Controls(1).Visible = True
Picture1.Line (0, 19)-(60, 19), 255
Picture1.Line (0, 39)-(60, 39), 255
Picture1.Line (30, 0)-(30, 75), 255
Picture1.CurrentX = 3: Picture1.CurrentY = 3
Picture1.Print "宽窄 " & CStr(Controls(1).Width)
Picture1.CurrentX = 3: Picture1.CurrentY = 23
Picture1.Print "高矮 " & CStr(Controls(1).Height)
Picture1.CurrentX = 3: Picture1.CurrentY = 43
Picture1.Print "横移 纵移" '完成界面设计
End If
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim rr As Integer, tt As Single
uu = True '鼠标按下
St: tt = Timer: rr = 1: If Button = 2 Then rr = -1 '左右键
If Y < 20 Then
rr = rr * 2: If X > 10 Then rr = rr * 10 '细调与粗调
If Controls(1).Width + rr < 6 Then
Controls(1).Width = 6 '极限
Else
Controls(1).Width = Controls(1).Width + rr '变化
End If 'v_显示数值
Picture1.Line (32, 1)-(58, 17), &HFFFF80, BF
Picture1.CurrentX = 3: Picture1.CurrentY = 3
Picture1.Print " " & CStr(Controls(1).Width)
ElseIf Y < 40 Then
rr = rr * 2: If X > 10 Then rr = rr * 10
If Controls(1).Height + rr < 6 Then
Controls(1).Height = 6
Else
Controls(1).Height = Controls(1).Height + rr
End If
Picture1.Line (32, 21)-(58, 37), &HFFFF80, BF
Picture1.CurrentX = 3: Picture1.CurrentY = 23
Picture1.Print " " & CStr(Controls(1).Height)
Else
If X < 30 Then
If X > 10 Then rr = rr * 10
If Controls(1).Left + rr < 0 Then
Controls(1).Left = 0
ElseIf Controls(1).Left + rr > Width / 15 - 0.6 * Controls(1).Width Then
Controls(1).Left = Width / 15 - Int(0.6 * Controls(1).Width)
Else
Controls(1).Left = Controls(1).Left + rr
End If
Else
If X > 40 Then rr = rr * 10
If Controls(1).Top + rr < 0 Then
Controls(1).Top = 0
ElseIf Controls(1).Top + rr > Height / 15 - 0.6 * Controls(1).Height Then
Controls(1).Top = Height / 15 - Int(0.6 * Controls(1).Height)
Else
Controls(1).Top = Controls(1).Top + rr
End If
End If
End If
Do While uu = True '等待鼠标弹起
DoEvents '计时循环
If Abs(Timer - tt) > 0.22 Then GoTo St
Loop
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
uu = False '鼠标弹起
End Sub

'手工添加一个Picture1,不作任何设置
Option Explicit
Dim uu As Boolean
Private Sub Form_Load()
Me.ScaleMode = 3: Picture1.ScaleMode = 3 '像素单位
Me.Caption = "椭圆形状与位置的调整"
Picture1.AutoRedraw = True '避免闪烁
Controls.Add "Vb.Shape", "Sha1", Me '添加椭圆形
Controls(1).Shape = 2: Picture1.BorderStyle = 0
End Sub
Private Sub Form_Resize()
If Picture1.BackColor <> &HFFFF80 Then '首次成形
Picture1.Move 0, 0, 60, 60
Controls(1).Move 150, 80, 100, 80
Picture1.BackColor = &HFFFF80: Controls(1).Visible = True
Picture1.Line (0, 19)-(60, 19), 255
Picture1.Line (0, 39)-(60, 39), 255
Picture1.Line (30, 0)-(30, 75), 255
Picture1.CurrentX = 3: Picture1.CurrentY = 3
Picture1.Print "宽窄 " & CStr(Controls(1).Width)
Picture1.CurrentX = 3: Picture1.CurrentY = 23
Picture1.Print "高矮 " & CStr(Controls(1).Height)
Picture1.CurrentX = 3: Picture1.CurrentY = 43
Picture1.Print "横移 纵移" '完成界面设计
End If
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim rr As Integer, tt As Single
uu = True '鼠标按下
St: tt = Timer: rr = 1: If Button = 2 Then rr = -1 '左右键
If Y < 20 Then
rr = rr * 2: If X > 10 Then rr = rr * 10 '细调与粗调
If Controls(1).Width + rr < 6 Then
Controls(1).Width = 6 '极限
Else
Controls(1).Width = Controls(1).Width + rr '变化
End If 'v_显示数值
Picture1.Line (32, 1)-(58, 17), &HFFFF80, BF
Picture1.CurrentX = 3: Picture1.CurrentY = 3
Picture1.Print " " & CStr(Controls(1).Width)
ElseIf Y < 40 Then
rr = rr * 2: If X > 10 Then rr = rr * 10
If Controls(1).Height + rr < 6 Then
Controls(1).Height = 6
Else
Controls(1).Height = Controls(1).Height + rr
End If
Picture1.Line (32, 21)-(58, 37), &HFFFF80, BF
Picture1.CurrentX = 3: Picture1.CurrentY = 23
Picture1.Print " " & CStr(Controls(1).Height)
Else
If X < 30 Then
If X > 10 Then rr = rr * 10
If Controls(1).Left + rr < 0 Then
Controls(1).Left = 0
ElseIf Controls(1).Left + rr > Width / 15 - 0.6 * Controls(1).Width Then
Controls(1).Left = Width / 15 - Int(0.6 * Controls(1).Width)
Else
Controls(1).Left = Controls(1).Left + rr
End If
Else
If X > 40 Then rr = rr * 10
If Controls(1).Top + rr < 0 Then
Controls(1).Top = 0
ElseIf Controls(1).Top + rr > Height / 15 - 0.6 * Controls(1).Height Then
Controls(1).Top = Height / 15 - Int(0.6 * Controls(1).Height)
Else
Controls(1).Top = Controls(1).Top + rr
End If
End If
End If
Do While uu = True '等待鼠标弹起
DoEvents '计时循环
If Abs(Timer - tt) > 0.22 Then GoTo St
Loop
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
uu = False '鼠标弹起
End Sub