zoukankan      html  css  js  c++  java
  • VB6之截图

    今天先把主要逻辑写出来,如果有时间就实现一个真正的截图工具。

      1 Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
      2     ByVal X As Long, _
      3     ByVal Y As Long, _
      4     ByVal nWidth As Long, _
      5     ByVal nHeight As Long, _
      6     ByVal hSrcDC As Long, _
      7     ByVal xSrc As Long, _
      8     ByVal ySrc As Long, _
      9     ByVal dwRop As Long) As Long
     10 Private OnDraw As Boolean
     11 Private OnDrag As Boolean
     12 Private EndDraw As Boolean
     13 Private LocalX As Single
     14 Private LocalY As Single
     15 Private DragX As Single
     16 Private DragY As Single
     17 
     18 Private Sub Form_Load()
     19     OnDraw = False
     20     OnDrag = False
     21     EndDraw = False
     22     
     23     Shape2(0).Width = 5 * 15
     24     Shape2(0).Height = 5 * 15
     25     For i = 1 To 7
     26         Call Load(Shape2(i))
     27         Shape2(i).Width = 5 * 15
     28         Shape2(i).Height = 5 * 15
     29     Next
     30     
     31     Call ShowShape(False)
     32 End Sub
     33 
     34 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     35     'drag the rect
     36     If Button = vbLeftButton And EndDraw = True Then
     37         If X > Shape1.Left And X < (Shape1.Left + Shape1.Width) And _
     38             Y > Shape1.Top And Y < (Shape1.Top + Shape1.Height) Then
     39                 OnDrag = True
     40                 Me.MousePointer = vbSizeAll
     41                 DragX = X
     42                 DragY = Y
     43                 Exit Sub
     44         End If
     45     End If
     46 
     47     'draw the rect
     48     If Button = vbLeftButton And OnDraw = False Then
     49         Me.MousePointer = vbCrosshair
     50         LocalX = X
     51         LocalY = Y
     52         Shape1.Left = X
     53         Shape1.Top = Y
     54         Shape1.Width = 100 * 15
     55         Shape1.Height = 100 * 15
     56         Call MoveShape
     57         Call ShowShape(False)
     58         OnDraw = True
     59     End If
     60 End Sub
     61 
     62 Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     63     'drag the rect
     64     If Button = vbLeftButton And OnDrag = True Then
     65         Shape1.Left = LocalX - (DragX - X)
     66         Shape1.Top = LocalY - (DragY - Y)
     67         Call MoveShape
     68         Exit Sub
     69     End If
     70     
     71     If Button = vbLeftButton And OnDraw = True Then
     72         If X > LocalX Then
     73             Shape1.Width = X - LocalX
     74         Else
     75             Shape1.Width = LocalX - X
     76             Shape1.Left = LocalX - Shape1.Width
     77         End If
     78         
     79         If Y > LocalY Then
     80             Shape1.Height = Y - LocalY
     81         Else
     82             Shape1.Height = LocalY - Y
     83             Shape1.Top = LocalY - Shape1.Height
     84         End If
     85         
     86         Call MoveShape
     87         Call ShowShape(True)
     88     End If
     89 End Sub
     90 
     91 Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
     92     If Button = vbLeftButton Then
     93         If OnDrag = True Then
     94             OnDrag = False
     95             LocalX = Shape1.Left
     96             LocalY = Shape1.Top
     97         End If
     98         Me.MousePointer = vbDefault
     99         Call DrawShape
    100         OnDraw = False
    101         EndDraw = True
    102     ElseIf Button = vbRightButton Then
    103     'RESET
    104         Call ShowShape(False)
    105         OnDraw = False
    106         OnDrag = False
    107         EndDraw = False
    108     End If
    109 End Sub
    110 
    111 Private Sub MoveShape()
    112     Shape2(0).Left = Shape1.Left
    113     Shape2(0).Top = Shape1.Top
    114     
    115     Shape2(1).Left = Shape1.Left + Shape1.Width / 2 - (5 * 15) / 2
    116     Shape2(1).Top = Shape1.Top
    117     
    118     Shape2(2).Left = Shape1.Left + Shape1.Width - (5 * 15)
    119     Shape2(2).Top = Shape1.Top
    120     
    121     Shape2(3).Left = Shape1.Left + Shape1.Width - (5 * 15)
    122     Shape2(3).Top = Shape1.Top + Shape1.Height / 2 - (5 * 15) / 2
    123     
    124     Shape2(4).Left = Shape1.Left + Shape1.Width - (5 * 15)
    125     Shape2(4).Top = Shape1.Top + Shape1.Height - (5 * 15)
    126     
    127     Shape2(5).Left = Shape1.Left + Shape1.Width / 2 - (5 * 15) / 2
    128     Shape2(5).Top = Shape1.Top + Shape1.Height - (5 * 15)
    129     
    130     Shape2(6).Left = Shape1.Left
    131     Shape2(6).Top = Shape1.Top + Shape1.Height - (5 * 15)
    132     
    133     Shape2(7).Left = Shape1.Left
    134     Shape2(7).Top = Shape1.Top + Shape1.Height / 2 - (5 * 15) / 2
    135 End Sub
    136 
    137 Private Sub ShowShape(ByVal bool As Boolean)
    138     Shape1.Visible = bool
    139     For i = 0 To 7
    140         Shape2(i).Visible = bool
    141     Next
    142     DoEvents
    143 End Sub
    144 
    145 Private Sub DrawShape()
    146     Call ShowShape(False)
    147     Call Picture1.Cls
    148     Call BitBlt(Picture1.hDC, 0&, 0&, Shape1.Width / 15, Shape1.Height / 15, Me.hDC, Shape1.Left / 15, Shape1.Top / 15, vbSrcCopy)
    149     Call ShowShape(True)
    150 End Sub

    贴张图:

  • 相关阅读:
    python文件操作总结
    hidoCoder #1514 偶像的条件
    2017浙江省赛大学生程序设计竞赛 C题 What Kind of Friends Are You?
    51nod 1503 猪和回文串(动态规划)
    整数划分(若干不同),时间复杂度O(n*sqrt(n))
    Jiu Yuan Wants to Eat
    牛牛数括号
    P3254 圆桌问题
    方格取数(1)
    Taeyeon的困惑
  • 原文地址:https://www.cnblogs.com/lichmama/p/3856355.html
Copyright © 2011-2022 走看看