⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.frm

📁 实现画图
💻 FRM
📖 第 1 页 / 共 5 页
字号:
      Begin VB.Menu mnu_openF 
         Caption         =   "打开"
      End
      Begin VB.Menu mnu_saveF 
         Caption         =   "保存"
      End
   End
   Begin VB.Menu mnu_data 
      Caption         =   "数据库"
      Begin VB.Menu mnu_opendata 
         Caption         =   "打开数据库文件(Data)"
      End
      Begin VB.Menu mnu_savedata 
         Caption         =   "保存数据库文件(Data)"
      End
      Begin VB.Menu mnu_d 
         Caption         =   "-"
      End
      Begin VB.Menu mnu_opendao 
         Caption         =   "打开数据库文件(ADO)"
      End
      Begin VB.Menu mnu_savedao 
         Caption         =   "保存数据库文件(ADO)"
      End
   End
   Begin VB.Menu mnu_view 
      Caption         =   "视图"
      Begin VB.Menu mnu_big 
         Caption         =   "放大"
      End
      Begin VB.Menu mnu_small 
         Caption         =   "缩小"
      End
      Begin VB.Menu mnu_py 
         Caption         =   "平移"
      End
   End
   Begin VB.Menu mnu_picture 
      Caption         =   "绘图(&D)"
      Begin VB.Menu mnu_point 
         Caption         =   "点类"
         Begin VB.Menu mnu_addp 
            Caption         =   "添加点"
         End
         Begin VB.Menu mnu_deletep 
            Caption         =   "删除点"
         End
         Begin VB.Menu mnu_editpoint 
            Caption         =   "点编辑"
         End
      End
      Begin VB.Menu mnu_line 
         Caption         =   "直线"
         Begin VB.Menu mnu_addl 
            Caption         =   "添加线"
         End
         Begin VB.Menu mnu_pyl 
            Caption         =   "线移动"
         End
         Begin VB.Menu mnu_editl 
            Caption         =   "线节点编辑器"
         End
         Begin VB.Menu mnu_deletel 
            Caption         =   "线删除"
         End
      End
      Begin VB.Menu mnu_ju 
         Caption         =   "矩形"
         Begin VB.Menu mnu_addj 
            Caption         =   "添加矩形"
         End
         Begin VB.Menu mnu_editj 
            Caption         =   "矩形编辑器"
         End
         Begin VB.Menu mnu_deletej 
            Caption         =   "矩形删除"
         End
      End
      Begin VB.Menu mnu_circle 
         Caption         =   "圆"
         Begin VB.Menu mnu_addc 
            Caption         =   "添加圆"
         End
         Begin VB.Menu mnu_zonrc 
            Caption         =   "圆移动"
         End
         Begin VB.Menu mnu_editc 
            Caption         =   "圆编辑"
         End
         Begin VB.Menu mnu_deletec 
            Caption         =   "圆删除"
         End
      End
   End
   Begin VB.Menu mnu_select 
      Caption         =   "拾取"
      Begin VB.Menu mnu_selectp 
         Caption         =   "点拾取"
      End
      Begin VB.Menu mnu_selectl 
         Caption         =   "线拾取"
      End
      Begin VB.Menu mnu_selectj 
         Caption         =   "矩形拾取"
      End
      Begin VB.Menu mnu_selectc 
         Caption         =   "圆拾取"
      End
   End
   Begin VB.Menu mnu_find 
      Caption         =   "查询"
      Begin VB.Menu mnu_pc 
         Caption         =   "图形到属性"
         Begin VB.Menu mnu_sp 
            Caption         =   "点属性"
         End
         Begin VB.Menu mnu_sl 
            Caption         =   "线属性"
         End
         Begin VB.Menu mnu_sr 
            Caption         =   "矩形属性"
         End
         Begin VB.Menu mnu_sec 
            Caption         =   "圆属性"
         End
      End
      Begin VB.Menu mnu_cp 
         Caption         =   "属性到图形"
      End
   End
   Begin VB.Menu mnu_pdata 
      Caption         =   "图形数据操作"
      Begin VB.Menu mnu_showdata 
         Caption         =   "数据统计"
      End
      Begin VB.Menu mnu_datashow 
         Caption         =   "数据显示"
         Begin VB.Menu mnu_pshow 
            Caption         =   "显示点数据"
         End
         Begin VB.Menu mnu_lshow 
            Caption         =   "显示线数据"
         End
         Begin VB.Menu mnu_jshow 
            Caption         =   "显示矩形数据"
         End
         Begin VB.Menu mnu_cshow 
            Caption         =   "显示圆数据"
         End
      End
      Begin VB.Menu mnu_datadelete 
         Caption         =   "数据删除"
      End
      Begin VB.Menu mnu_dataapdate 
         Caption         =   "修改数据"
      End
   End
   Begin VB.Menu mnu_man 
      Caption         =   "用户管理"
      Begin VB.Menu mnu_newp 
         Caption         =   "新建用户"
      End
      Begin VB.Menu mnu_edpa 
         Caption         =   "修改密码"
      End
      Begin VB.Menu mnu_deletey 
         Caption         =   "删除用户"
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim nOperType As Integer '操作类型
Dim nColor As Long       '颜色参数
Dim PID As Long       '点ID号
Dim LID As Long  '线ID号
Dim RID As Long '矩形ID号
Dim CID As Long  '圆ID号
Dim nSize As Integer     '宽度
Dim nLineStyle As Integer     '线宽度
Dim nFillStyle As Integer     '填充风格
Dim nFillColor As Long     '填充颜色
Dim nSelectCount As Integer '显示选中点--时钟控件实现
Dim nselectcount2 As Integer  '显示选中圆--时钟控件实现
'Dim nselectid As Long        ' 记录选中点ID
'Dim nselectidl As Long          ' 记录选中线ID
'Dim nselectidr As Long           ' 记录选中矩形ID
'Dim nselectidc As Long           ' 记录选中圆ID
Dim isShowPointInfo As Boolean '是否显示选中点信息
Dim isShowLineInfo As Boolean
Dim isShowCircleInfo As Boolean
Dim isShowRecInfo As Boolean
Dim nMouseDownCount As Integer
Dim SelectPoint As CPoint
Dim SelectLine As CLine
Dim SelectRec As CRec
Dim selectCircle As CCircle
Dim LX1 As Long
Dim LY1 As Long
Dim tempX As Long
Dim tempY As Long
Dim mx, my, cx, cy, rex, rey As Long
Dim W, H, lx, ly, rx, ry, dxy As Long
Dim max As Long
Public ok As Boolean
Dim miCount As Integer


'============================计算点是否在线段上=====================================================
'

Private Function OnLine(p As CPoint, X1 As Single, Y1 As Single, X2 As Single, Y2 As Single) As Boolean
Dim A As Single
Dim B As Single
Dim c As Single
If X1 = X2 Then          '该线段为垂线
   If (p.Y - Y1) * (p.Y - Y2) < 0 And Abs(p.X - X1) < max Then
      OnLine = True
      Exit Function
   End If

  ElseIf (p.X - X1) * (p.X - X2) < 0 Then
   A = (Y2 - Y1) / (X2 - X1)
   B = -1
   c = Y1 - A * X1
        If (A * p.X + B * p.Y + c) * (A * p.X + B * p.Y + c) / (A * A + B * B) < max * max Then
          OnLine = True
          Exit Function
        End If
    End If
    OnLine = False
   
End Function


'================================判断点是否在矩形上===============================================
Private Function OnReg(p As CPoint, r As CRec) As Boolean
If ((p.Y - r.mvarPoint1.Y) * (p.Y - r.mvarPoint2.Y) < 0 And (Abs(p.X - r.mvarPoint1.X) < max _
Or Abs(p.X - r.mvarPoint2.X) < max)) Or ((p.X - r.mvarPoint1.X) * (p.X - r.mvarPoint2.X) < 0 And _
(Abs(p.Y - r.mvarPoint1.Y) < max Or Abs(p.Y - r.mvarPoint2.Y) < max)) Or ((p.X - r.mvarPoint1.X) * _
(p.X - r.mvarPoint2.X) < 0 And (p.Y - r.mvarPoint1.Y) * (p.Y - r.mvarPoint2.Y) < 0) Then

   OnReg = True
Else
  OnReg = False
End If

End Function


'==================================判断点是否在圆上====================================================
Private Function OnCircle(p As CPoint, c As CCircle) As Boolean

  If ((p.X - c.CenterPoint.X) ^ 2 + (p.Y - c.CenterPoint.Y) ^ 2) < Abs((c.CenterPoint.X - c.cp.X) ^ 2 + (c.CenterPoint.Y - c.cp.Y) ^ 2 + max) Then

   OnCircle = True
  Else
    OnCircle = False
  End If
End Function





Private Sub Combo1_Click()
nSize = Val(Me.Combo1.Text)
End Sub



Private Sub Combo2_Click()
nLineStyle = Combo2.ListIndex
End Sub

Private Sub Combo3_Click()
nFillStyle = Combo3.ListIndex
End Sub



Private Sub DataGrid1_AfterColEdit(ByVal ColIndex As Integer)
Dim i As Long
If nOperType = 500 Then
  If Me.DataGrid1.Caption = "数据表名为:点表" Then
   Adodc1.Recordset.Fields("X").Value = Me.DataGrid1.Columns(1)
   Adodc1.Recordset.Fields("Y").Value = Me.DataGrid1.Columns(2)
   Adodc1.Recordset.Fields("Size").Value = Me.DataGrid1.Columns(3)
   Adodc1.Recordset.Fields("Color").Value = Me.DataGrid1.Columns(4)
     Do While Not Adodc1.Recordset.EOF
          Dim p As New CPoint
             p.ID = Adodc1.Recordset.Fields("ID").Value
             PntArray.Remove p.ID
             p.X = Adodc1.Recordset.Fields("X").Value
             p.Y = Adodc1.Recordset.Fields("Y").Value
            p.size = Adodc1.Recordset.Fields("Size").Value
             p.color = Adodc1.Recordset.Fields("Color").Value
             PntArray.Add p
             Set p = Nothing
             Adodc1.Recordset.MoveNext
            Me.Refresh
       Loop
          Set p = Nothing
          Me.Refresh
     End If
     
      If Me.DataGrid1.Caption = "数据表名为:线表" Then
   'Adodc1.Recordset.Fields("ID").Value = Me.DataGrid1.Columns(0)
   Adodc1.Recordset.Fields("X1").Value = Me.DataGrid1.Columns(1)
   Adodc1.Recordset.Fields("Y1").Value = Me.DataGrid1.Columns(2)
   Adodc1.Recordset.Fields("X2").Value = Me.DataGrid1.Columns(3)
   Adodc1.Recordset.Fields("Y2").Value = Me.DataGrid1.Columns(4)
   Adodc1.Recordset.Fields("Size").Value = Me.DataGrid1.Columns(5)
   Adodc1.Recordset.Fields("Color").Value = Me.DataGrid1.Columns(6)
        
     Do While Not Adodc1.Recordset.EOF()
               Dim l As New CLine
               
                l.ID = Adodc1.Recordset.Fields("ID").Value
                 LineArray.Remove l.ID
                l.startPoint.X = Adodc1.Recordset.Fields("X1").Value
               l.startPoint.Y = Adodc1.Recordset.Fields("Y1").Value
                l.endPoint.X = Adodc1.Recordset.Fields("X2").Value
               l.endPoint.Y = Adodc1.Recordset.Fields("Y2").Value
               l.size = Adodc1.Recordset.Fields("Size").Value
               l.color = Adodc1.Recordset.Fields("Color").Value
               LineArray.Add l
               Set l = Nothing
             Adodc1.Recordset.MoveNext
               Me.Refresh
            
              Loop
            Set l = Nothing
          Me.Refresh
     End If
      If Me.DataGrid1.Caption = "数据表名为:矩形表" Then
   'Adodc1.Recordset.Fields("ID").Value = Me.DataGrid1.Columns(0)
    Adodc1.Recordset.Fields("X1").Value = Me.DataGrid1.Columns(1)
   Adodc1.Recordset.Fields("Y1").Value = Me.DataGrid1.Columns(2)
   Adodc1.Recordset.Fields("X2").Value = Me.DataGrid1.Columns(3)
   Adodc1.Recordset.Fields("Y2").Value = Me.DataGrid1.Columns(4)
   Adodc1.Recordset.Fields("Size").Value = Me.DataGrid1.Columns(5)
   Adodc1.Recordset.Fields("Color").Value = Me.DataGrid1.Columns(6)
      Do While Not Adodc1.Recordset.EOF()
                Dim r As New CRec
                
                  r.ID = Adodc1.Recordset.Fields("ID").Value
                  RecArray.Remove (r.ID)
                 r.mvarPoint1.X = Adodc1.Recordset.Fields("X1").Value
                 r.mvarPoint1.Y = Adodc1.Recordset.Fields("Y1").Value
                 r.mvarPoint2.X = Adodc1.Recordset.Fields("X2").Value
                 r.mvarPoint2.Y = Adodc1.Recordset.Fields("Y2").Value
                 r.size = Adodc1.Recordset.Fields("Size").Value
                  r.color = Adodc1.Recordset.Fields("Color").Value
                 RecArray.Add r
                 Set r = Nothing
                Adodc1.Recordset.MoveNext
                  Me.Refresh

     Loop
        Set r = Nothing
          Me.Refresh
    End If
      If Me.DataGrid1.Caption = "数据表名为:圆形表" Then
   'Adodc1.Recordset.Fields("ID").Value = Me.DataGrid1.Columns(0)
        Adodc1.Recordset.Fields("X1").Value = Me.DataGrid1.Columns(1)
        Adodc1.Recordset.Fields("Y1").Value = Me.DataGrid1.Columns(2)
        Adodc1.Recordset.Fields("X2").Value = Me.DataGrid1.Columns(3)
        Adodc1.Recordset.Fields("Y2").Value = Me.DataGrid1.Columns(4)
        Adodc1.Recordset.Fields("Size").Value = Me.DataGrid1.Columns(5)
        Adodc1.Recordset.Fields("Color").Value = Me.DataGrid1.Columns(6)
        
     Do While Not Adodc1.Recordset.EOF()
         Dim c As New CCircle
          c.ID = Adodc1.Recordset.Fields("ID").Value
          CircleArray.Remove (c.ID)
         c.CenterPoint.X = Adodc1.Recordset.Fields("X1").Value
         c.CenterPoint.Y = Adodc1.Recordset.Fields("Y1").Value
         c.cp.X = Adodc1.Recordset.Fields("X2").Value
        c.cp.Y = Adodc1.Recordset.Fields("Y2").Value
        c.size = Adodc1.Recordset.Fields("Size").Value
         c.color = Adodc1.Recordset.Fields("Color").Value
         CircleArray.Add c
         Set c = Nothing
        Adodc1.Recordset.MoveNext

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -