购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.10 缩放

与平移操作一样,在缩放操作中需要先定义缩放的变量:

  Public sQuad As GLfloat
Public MIDDLE_MOUSE_DOWN As Boolean

在VB中,鼠标中键的代码是4。

  Private Sub WorkPic_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then
    LEFT_MOUSE_DOWN = True
    OGL.PICT_OLD_X = X - mQuadX * Me.WorkPic.ScaleWidth
    OGL.PICT_OLD_Y = Y + mQuadY * Me.WorkPic.ScaleHeight
  End If
  If Button = 4 Then
    OGL.MIDDLE_MOUSE_DOWN = True
    PICT_OLD_X = X
    PICT_OLD_Y = Y
  End If
End Sub

其次,在鼠标移动事件中添加以下代码:

  Private Sub WorkPic_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If LEFT_MOUSE_DOWN = True Then
    mQuadX = (X - OGL.PICT_OLD_X)/ Me.WorkPic.ScaleWidth
    mQuadY = (OGL.PICT_OLD_Y - Y)/ Me.WorkPic.ScaleHeight
    Call OGL.Display(Me.WorkPic)
  End If
  If OGL.MIDDLE_MOUSE_DOWN Then
    YY = (PICT_OLD_Y - Y)/ Me.WorkPic.ScaleHeight
    OGL.sQuad = OGL.sQuad * (1 - YY)
    PICT_OLD_Y = Y
    Call OGL.Display(Me.WorkPic)
  End If
End Sub

再次,在鼠标释放事件中添加以下代码:

  Private Sub WorkPic_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then
    LEFT_MOUSE_DOWN = False
  End If
  If Button = 4 Then
    OGL.MIDDLE_MOUSE_DOWN = False
  End If
End Sub

最后,在Display函数中,在设置绘图坐标系后添加以下代码:

  glMatrixMode mmProjection
glLoadIdentity
GLU.gluOrtho2D 0, 1, 0, 1
GL.glTranslatef mQuadX, mQuadY, mQuadZ
GL.glScalef sQuad, sQuad, 0#

与平移不同,缩放比例初始值为1。因此需要在窗体启动的时候对sQuad进行赋值。

  Private Sub Form_Load()
  sQuad = 1
  Call Me.IniColor
  Call OGL.EnableOpenGL(Me.WorkPic)
End Sub

缩放运行结果如图3-20所示。

图3-20 缩放运行结果 iL/BCJZjaRuABRyLif/ViJFygs3vWX+JGuvYVOHlzlpT0YUXPasTpm3EaHDXpU6u

点击中间区域
呼出菜单
上一章
目录
下一章
×