frmMain.frm
上传用户:zhouyf163
上传日期:2010-02-28
资源大小:80k
文件大小:31k
源码类别:

图形/文字识别

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  3. Begin VB.Form frmMain 
  4.    BorderStyle     =   3  'Fixed Dialog
  5.    Caption         =   "Character Recognition"
  6.    ClientHeight    =   5055
  7.    ClientLeft      =   1755
  8.    ClientTop       =   1410
  9.    ClientWidth     =   8730
  10.    DrawStyle       =   5  'Transparent
  11.    FillColor       =   &H00C0FFFF&
  12.    FillStyle       =   2  'Horizontal Line
  13.    BeginProperty Font 
  14.       Name            =   "Tahoma"
  15.       Size            =   8.25
  16.       Charset         =   0
  17.       Weight          =   400
  18.       Underline       =   0   'False
  19.       Italic          =   0   'False
  20.       Strikethrough   =   0   'False
  21.    EndProperty
  22.    ForeColor       =   &H80000018&
  23.    Icon            =   "frmMain.frx":0000
  24.    LinkTopic       =   "Form1"
  25.    MaxButton       =   0   'False
  26.    MinButton       =   0   'False
  27.    MouseIcon       =   "frmMain.frx":0442
  28.    ScaleHeight     =   5055
  29.    ScaleWidth      =   8730
  30.    ShowInTaskbar   =   0   'False
  31.    Begin MSComctlLib.ProgressBar progressRecognition 
  32.       Height          =   375
  33.       Left            =   3120
  34.       TabIndex        =   14
  35.       Top             =   3240
  36.       Width           =   2535
  37.       _ExtentX        =   4471
  38.       _ExtentY        =   661
  39.       _Version        =   393216
  40.       BorderStyle     =   1
  41.       Appearance      =   0
  42.       Scrolling       =   1
  43.    End
  44.    Begin VB.CommandButton buttonLearnCancel 
  45.       Caption         =   "&Cancel"
  46.       Height          =   375
  47.       Left            =   1080
  48.       TabIndex        =   7
  49.       Top             =   4320
  50.       Width           =   615
  51.    End
  52.    Begin VB.CommandButton buttonLearnConfirm 
  53.       Caption         =   "Enter"
  54.       Height          =   375
  55.       Left            =   360
  56.       Picture         =   "frmMain.frx":074C
  57.       TabIndex        =   6
  58.       Top             =   4320
  59.       Width           =   615
  60.    End
  61.    Begin VB.TextBox inputLearnCharacter 
  62.       Appearance      =   0  'Flat
  63.       BeginProperty Font 
  64.          Name            =   "MS Sans Serif"
  65.          Size            =   8.25
  66.          Charset         =   0
  67.          Weight          =   400
  68.          Underline       =   0   'False
  69.          Italic          =   0   'False
  70.          Strikethrough   =   0   'False
  71.       EndProperty
  72.       Height          =   405
  73.       Left            =   1800
  74.       TabIndex        =   5
  75.       Top             =   4080
  76.       Width           =   495
  77.    End
  78.    Begin VB.CommandButton buttonLearn 
  79.       Caption         =   "Learn"
  80.       Height          =   375
  81.       Left            =   6000
  82.       TabIndex        =   4
  83.       Top             =   3240
  84.       Width           =   2535
  85.    End
  86.    Begin VB.CommandButton buttonRecognise 
  87.       Caption         =   "&Recognise"
  88.       Height          =   375
  89.       Left            =   1440
  90.       TabIndex        =   3
  91.       Top             =   3240
  92.       Width           =   1335
  93.    End
  94.    Begin VB.CommandButton buttonClearScreen 
  95.       Caption         =   "&Clear Screen"
  96.       Height          =   375
  97.       Left            =   240
  98.       TabIndex        =   2
  99.       Top             =   3240
  100.       Width           =   1215
  101.    End
  102.    Begin VB.PictureBox AppTemplateArea 
  103.       BackColor       =   &H80000001&
  104.       BeginProperty Font 
  105.          Name            =   "MS Sans Serif"
  106.          Size            =   8.25
  107.          Charset         =   0
  108.          Weight          =   400
  109.          Underline       =   0   'False
  110.          Italic          =   0   'False
  111.          Strikethrough   =   0   'False
  112.       EndProperty
  113.       Height          =   2655
  114.       Left            =   3120
  115.       ScaleHeight     =   2595
  116.       ScaleWidth      =   2475
  117.       TabIndex        =   1
  118.       Top             =   480
  119.       Width           =   2535
  120.    End
  121.    Begin VB.PictureBox userTemplateArea 
  122.       BackColor       =   &H80000005&
  123.       BeginProperty Font 
  124.          Name            =   "MS Sans Serif"
  125.          Size            =   8.25
  126.          Charset         =   0
  127.          Weight          =   400
  128.          Underline       =   0   'False
  129.          Italic          =   0   'False
  130.          Strikethrough   =   0   'False
  131.       EndProperty
  132.       Height          =   2655
  133.       Left            =   6000
  134.       ScaleHeight     =   2595
  135.       ScaleWidth      =   2475
  136.       TabIndex        =   0
  137.       Top             =   480
  138.       Width           =   2535
  139.    End
  140.    Begin VB.Frame frameArea1 
  141.       Caption         =   "User's Draw Area"
  142.       Height          =   3495
  143.       Left            =   120
  144.       TabIndex        =   8
  145.       Top             =   240
  146.       Width           =   2775
  147.       Begin VB.PictureBox userDrawArea 
  148.          BackColor       =   &H80000016&
  149.          DrawStyle       =   2  'Dot
  150.          BeginProperty Font 
  151.             Name            =   "MS Sans Serif"
  152.             Size            =   8.25
  153.             Charset         =   0
  154.             Weight          =   400
  155.             Underline       =   0   'False
  156.             Italic          =   0   'False
  157.             Strikethrough   =   0   'False
  158.          EndProperty
  159.          Height          =   2655
  160.          Left            =   120
  161.          ScaleHeight     =   2595
  162.          ScaleWidth      =   2475
  163.          TabIndex        =   11
  164.          Top             =   240
  165.          Width           =   2535
  166.       End
  167.    End
  168.    Begin VB.Frame frameArea3 
  169.       Caption         =   "Buffer Data Area"
  170.       Height          =   3495
  171.       Left            =   5880
  172.       TabIndex        =   10
  173.       Top             =   240
  174.       Width           =   2775
  175.    End
  176.    Begin VB.Frame frameArea2 
  177.       Caption         =   "Database Area"
  178.       Height          =   3495
  179.       Left            =   3000
  180.       TabIndex        =   9
  181.       Top             =   240
  182.       Width           =   2775
  183.    End
  184.    Begin VB.Label Label1 
  185.       Caption         =   "About"
  186.       BeginProperty Font 
  187.          Name            =   "Tahoma"
  188.          Size            =   8.25
  189.          Charset         =   0
  190.          Weight          =   700
  191.          Underline       =   -1  'True
  192.          Italic          =   0   'False
  193.          Strikethrough   =   0   'False
  194.       EndProperty
  195.       Height          =   255
  196.       Left            =   7800
  197.       TabIndex        =   15
  198.       Top             =   3840
  199.       Width           =   975
  200.    End
  201.    Begin VB.Label TeachLabelText 
  202.       Caption         =   "Enter a character that must be taught"
  203.       BeginProperty Font 
  204.          Name            =   "Tahoma"
  205.          Size            =   8.25
  206.          Charset         =   0
  207.          Weight          =   700
  208.          Underline       =   0   'False
  209.          Italic          =   0   'False
  210.          Strikethrough   =   0   'False
  211.       EndProperty
  212.       Height          =   495
  213.       Left            =   360
  214.       TabIndex        =   12
  215.       Top             =   3840
  216.       Width           =   2175
  217.    End
  218.    Begin VB.Label textResult 
  219.       Caption         =   "Character Recognition Ready..."
  220.       BeginProperty Font 
  221.          Name            =   "Tahoma"
  222.          Size            =   8.25
  223.          Charset         =   0
  224.          Weight          =   700
  225.          Underline       =   0   'False
  226.          Italic          =   0   'False
  227.          Strikethrough   =   0   'False
  228.       EndProperty
  229.       Height          =   225
  230.       Left            =   120
  231.       TabIndex        =   13
  232.       Top             =   4800
  233.       Width           =   3015
  234.    End
  235.    Begin VB.Menu mnuPopUp 
  236.       Caption         =   "mnuPopUp"
  237.       Visible         =   0   'False
  238.       Begin VB.Menu mnuPopUp_About 
  239.          Caption         =   "&About"
  240.       End
  241.       Begin VB.Menu mnuPopUp_Close 
  242.          Caption         =   "&Close"
  243.       End
  244.    End
  245. End
  246. Attribute VB_Name = "frmMain"
  247. Attribute VB_GlobalNameSpace = False
  248. Attribute VB_Creatable = False
  249. Attribute VB_PredeclaredId = True
  250. Attribute VB_Exposed = False
  251. Public Main_inputLearnCharacter As String
  252. Dim strCaption As String
  253. Dim recordFileExtension As String
  254. Dim currentlyDrawing As Boolean
  255. Dim c As Integer
  256. Dim strData As String
  257. Dim strRECpk As String
  258. Dim arrRawData(100 * 100) As String
  259. Dim arrTagData(100 * 100) As String
  260. Private Sub buttonLearnCancel_Click()
  261.     
  262.     Me.TeachLabelText.FontBold = True
  263.     Me.TeachLabelText.Caption = strCaption
  264.     
  265.     Me.buttonLearnConfirm.Visible = False
  266.     Me.buttonLearnCancel.Visible = False
  267.     Me.inputLearnCharacter.Visible = False
  268.     
  269.   
  270.     Me.buttonLearn.Visible = True
  271.     Me.buttonRecognise.Visible = True
  272.     Me.buttonClearScreen.Visible = True
  273.   
  274.     
  275. End Sub
  276. Private Sub buttonClearScreen_Click()
  277.     strData = ""
  278.     Me.textResult.Caption = ""
  279.     Me.textResult.ToolTipText = ""
  280.     Me.Refresh
  281.  '  Clear all the drawing windows....
  282.     userDrawArea.Cls
  283.     AppTemplateArea.Cls
  284.     userTemplateArea.Cls
  285.    
  286. '   Enable all buttons
  287.     Me.buttonLearn.Enabled = False
  288.     Me.buttonRecognise.Enabled = False
  289.     Me.buttonClearScreen.Enabled = False
  290.     
  291. End Sub
  292. Private Sub buttonLearnConfirm_Click()
  293. Dim Filename_Database As String
  294. Dim Filename_buttonLearn As String
  295. Dim Buffer_DrawArea As Variant
  296. Dim strbuttonLearnText As String
  297. Dim intCounter As Integer
  298. Dim strBuffer As String
  299. 'Dim buttonLearnDialog As New frmbuttonLearn
  300. 'Dim oFile As TextStream
  301. '    Set oFile = New TextStream
  302.     
  303.     FileSystem.ChDir (App.Path)
  304.     userTemplateArea.Cls
  305.     strbuttonLearnText = Me.inputLearnCharacter.Text
  306.     
  307.     intCounter = 0
  308.     
  309.     Filename_Database = "DATA" & recordFileExtension
  310.     Filename_buttonLearn = Filename_Database
  311.   
  312.     intCounter = intCounter + 1
  313.     
  314.     Call GraspRawData
  315.     
  316.     If strData = "" Then
  317.         Call buttonClearScreen_Click
  318.         Me.buttonLearn.Enabled = Not Me.buttonLearn.Enabled
  319.         MsgBox "Detect No character was drawn in the Draw Area. buttonLearn operation can not be proceed. ", vbExclamation, "Warning..."
  320.         GoTo buttonLearnConfirm_SkipbuttonLearn
  321.     End If
  322.     Open Filename_buttonLearn For Binary As #1
  323.         strBuffer = Space(5)
  324.         Get #1, , strBuffer
  325.     Close #1
  326.     
  327.     If strBuffer = "recPK" Then
  328. ' add buttonLearning character as binary
  329. '**
  330.         strRECpk = ""
  331.         strBuffer = ""
  332.         Open Filename_buttonLearn For Binary As #1
  333.             strBuffer = Space(5)
  334.             Get #1, , strBuffer
  335.             strRECpk = strRECpk & strBuffer
  336.             strBuffer = Space(22)
  337.             While Not EOF(1)
  338.                 Get #1, , strBuffer
  339.                 strRECpk = strRECpk & strBuffer
  340.             Wend
  341.         Close #1
  342.         strRECpk = Mid(strRECpk, 1, Len(strRECpk) - 22)
  343.         i = 3
  344.         strRECpk = strRECpk & strbuttonLearnText
  345.         strRECpk = strRECpk & ","
  346.         For j = 1 To 10
  347.             strRECpk = strRECpk & Chr(BinToDec(Mid(strData, i - 2 + ((j - 1) * 10), 2)))
  348.             strRECpk = strRECpk & Chr(BinToDec(Mid(strData, i + 0 + ((j - 1) * 10), 8)))
  349.         Next j
  350.         Open Filename_buttonLearn For Binary As #1
  351.             Put #1, , strRECpk
  352.         Close #1
  353.     Else
  354. ' add buttonLearning character as string
  355.         Open Filename_buttonLearn For Append As #1
  356.             Write #1, strbuttonLearnText & "," & strData
  357.         Close #1
  358. '**
  359.     End If
  360.     
  361. buttonLearnConfirm_SkipbuttonLearn:
  362.     
  363.     Me.TeachLabelText.FontBold = True
  364.     Me.TeachLabelText.Caption = strCaption
  365.     
  366.     Me.buttonLearnConfirm.Visible = False
  367.     Me.buttonLearnCancel.Visible = False
  368.     Me.inputLearnCharacter.Visible = False
  369.     
  370.     Me.buttonLearn.Enabled = False
  371.  
  372.     Me.buttonLearn.Visible = True
  373.     Me.buttonRecognise.Visible = True
  374.     Me.buttonClearScreen.Visible = True
  375.    
  376. End Sub
  377. Private Sub Image1_Click()
  378.  frmSplash.Show
  379.  frmSplash.Refresh
  380. End Sub
  381. Private Sub Label1_Click()
  382. frmAbout.Show
  383. frmAbout.Refresh
  384. End Sub
  385. Private Sub userDrawArea_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  386.     
  387.     currentlyDrawing = True
  388.     
  389.     userDrawArea.DrawWidth = 17
  390.     userDrawArea.PSet (x, y)
  391.     If Not Me.buttonLearn.Enabled Then
  392.      
  393.         Me.buttonLearn.Enabled = True
  394.         Me.buttonRecognise.Enabled = True
  395.         Me.buttonClearScreen.Enabled = True
  396.     End If
  397.     
  398.     If Not Me.buttonRecognise.Enabled Then
  399.         Me.buttonRecognise.Enabled = True
  400.       
  401.     End If
  402. End Sub
  403. Private Sub userDrawArea_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  404.     
  405.     userDrawArea.DrawStyle = vbSolid
  406.     userDrawArea.DrawWidth = 17
  407.     If currentlyDrawing Then
  408.         userDrawArea.PSet (x, y)
  409.         
  410.         If Not fMainForm.buttonLearn.Enabled Then
  411.             Me.buttonLearn.Enabled = True
  412.             Me.buttonRecognise.Enabled = True
  413.             Me.buttonClearScreen.Enabled = True
  414.         End If
  415.     End If
  416. End Sub
  417. Private Sub userDrawArea_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  418.     currentlyDrawing = False
  419.     
  420.     Call GraspRawData
  421. End Sub
  422. Private Sub Exit_Click()
  423. '    MsgBox "Are you sure want to Exit?", vbYesNo, "Confirmation"
  424. '    If vbYes Then
  425. '      Unload Me
  426. '    End If
  427. '        frmConfirmation.Left = (frmMain.Width / 2) - (frmConfirmation.Width / 2)
  428. '        frmConfirmation.Top = (frmMain.ScaleHeight / 2) - (frmConfirmation.Height)
  429.         frmConfirmation.Show vbModal
  430.         If frmConfirmation.YES Then
  431.             Unload Me
  432.         End If
  433. End Sub
  434. Private Sub Form_Load()
  435.   
  436.     recordFileExtension = ".rec"
  437.     strCaption = "The software is ready for processing"
  438.     Me.TeachLabelText.FontBold = True
  439.     Me.TeachLabelText.Caption = strCaption
  440.     
  441.     Me.userTemplateArea.DrawWidth = 2
  442.     Me.AppTemplateArea.DrawWidth = 2
  443.     
  444.     Me.buttonLearn.Enabled = False
  445.     Me.buttonRecognise.Enabled = False
  446.     Me.buttonClearScreen.Enabled = False
  447.     
  448.     Me.inputLearnCharacter.Visible = False
  449.     Me.buttonLearnConfirm.Visible = False
  450.     Me.buttonLearnCancel.Visible = False
  451.     
  452.     
  453.     Me.progressRecognition.Value = 0
  454.     
  455.    
  456.     
  457.     
  458. End Sub
  459. Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  460.     If Button = vbRightButton Then
  461.         Me.PopupMenu mnuPopUp
  462.     End If
  463. End Sub
  464. Private Sub mnuPopUp_About_Click()
  465. Dim AboutDialog As New frmAbout
  466.     AboutDialog.Show vbModal
  467. End Sub
  468. Private Sub mnuPopUp_Close_Click()
  469.     Call Exit_Click
  470. End Sub
  471. Private Sub buttonRecognise_Click()
  472. Dim Filename_Database As String
  473. Dim strbuttonRecognised As String
  474. Dim intMatch As Integer
  475. Dim intMaxMatch As Integer
  476. Dim intCounter As Integer
  477. Dim boolFindLastFile As Boolean
  478. Dim boolNoMoreFileLeft As Boolean
  479. Dim buffer As String
  480. Dim Buffer_DatabaseArea As Variant
  481. Dim strBuffer As String
  482.    FileSystem.ChDir (App.Path)
  483.     
  484.     
  485.     
  486.     strbuttonRecognised = ""
  487.     intMaxMatch = 0
  488.     intCounter = 0
  489.     c = 0
  490.     
  491.     On Error GoTo buttonRecognise_FileClose
  492.     Filename_Database = "DATA" & recordFileExtension
  493.     
  494.     If Filename_Database <> "" Then
  495.         Me.AppTemplateArea.Cls
  496.         Open Filename_Database For Binary As #1
  497.             i = 0
  498.             strBuffer = Space(5)
  499.                 Get #1, , strBuffer
  500.                 arrRawData(i) = strBuffer
  501.                 i = i + 1
  502.             strBuffer = Space(22)
  503.             While Not EOF(1)
  504.                 Get #1, , strBuffer
  505.                 arrRawData(i) = strBuffer
  506.                 i = i + 1
  507.             Wend
  508.             arrRawData(i - 1) = ""
  509.             Close #1
  510.             
  511.             i = 0
  512.             strBuffer = ""
  513.             If arrRawData(0) = "recPK" Then
  514.                 i = i + 1
  515.                 
  516.                 strbuttonRecognised = ""
  517.                 intMaxMatch = 0
  518.                 intCounter = 0
  519.                 c = 0
  520.                 
  521.                 While arrRawData(i) <> ""
  522.                 
  523.                     a = 190
  524.                     b = 190
  525.                     d = 0
  526.                     intMatch = 0
  527.                     Me.AppTemplateArea.Cls
  528.                 
  529.                     arrTagData(i - 1) = Mid(arrRawData(i), 1, 1)
  530. '                    strBuffer = strBuffer & Mid(strData(i), 1, 1) & vbCrLf
  531. '                    strBuffer = strBuffer & Mid(strData(0), i, 1) & ","
  532. '                    Me.ListBox_List.AddItem i & ". <" & Mid(strData(i), 1, 1) & ">"
  533.                     
  534.                     arrRawData(i - 1) = ""
  535.                     
  536.                     For j = 1 To 10
  537. '                        strBuffer = strBuffer & DecToBin(Asc(Mid(strData(i), 3 + ((j - 1) * 2), 1)), 2)
  538. '                        strBuffer = strBuffer & DecToBin(Asc(Mid(strData(i), 4 + ((j - 1) * 2), 1)), 8)
  539.                         arrRawData(i - 1) = arrRawData(i - 1) & _
  540.                                             DecToBin(Asc(Mid(arrRawData(i), 3 + ((j - 1) * 2), 1)), 2) & _
  541.                                             DecToBin(Asc(Mid(arrRawData(i), 4 + ((j - 1) * 2), 1)), 8)
  542. '                        strBuffer = strBuffer
  543.                     Next j
  544.                     
  545. '                    strBuffer = strBuffer & vbCrLf
  546.                     i = i + 1
  547.                     For ii = 1 To 10
  548.                     For jj = 1 To 10
  549.                         If Mid(arrRawData(c), d + 1, 1) = vbBlack Then
  550.         '                    userTemplateArea.PSet (i, j)
  551. ' j2 - mask - finalise
  552. '                            AppTemplateArea.PSet (a, b)
  553.         '                    userTemplateArea.Circle (a, b), 110
  554.         '                    AppTemplateArea.Line (a - 110, b - 110)-(a + 110, b - 110)
  555.         '                    AppTemplateArea.Line (a + 110, b - 110)-(a + 110, b + 110)
  556.         '                    AppTemplateArea.Line (a + 110, b + 110)-(a - 110, b + 110)
  557.         '                    AppTemplateArea.Line (a - 110, b + 110)-(a - 110, b - 110)
  558.         '                    Debug.Print ""
  559.                             If Mid(strData, d + 1, 1) = vbBlack Then
  560.                                 intMatch = intMatch + 1
  561.                             Else
  562.                                 intMatch = intMatch - 1
  563.                             End If
  564.                         Else
  565.                             If Mid(strData, d + 1, 1) <> vbBlack Then
  566.                                 intMatch = intMatch + 1
  567.                             Else
  568.                                 intMatch = intMatch - 1
  569.                             End If
  570.                         End If
  571.                         d = d + 1
  572.                         b = b + (Me.AppTemplateArea.Height - 200) / 10
  573.                     Next jj
  574.                     b = 190
  575.                     a = a + (Me.AppTemplateArea.Width - 200) / 10
  576.                     Next ii
  577.                     If intMaxMatch < intMatch Then
  578.                         intMaxMatch = intMatch
  579.                         strbuttonRecognised = arrTagData(c)
  580.                         intCounter = c
  581.                         Me.progressRecognition.Value = intMaxMatch
  582.                         If intMaxMatch > 90 Then
  583.                             GoTo buttonRecognise_FileClose
  584.                         End If
  585.                     End If
  586.                     c = c + 1
  587.                 
  588.                 Wend
  589. '                Me.RichTextBox_Text.Text = strBuffer
  590.         '        Me.TextBox_Text.ScrollBars
  591.                 
  592.                 arrTagData(i - 1) = ""
  593.                 arrRawData(i - 1) = ""
  594.    
  595.             Else
  596.             
  597.                 strbuttonRecognised = ""
  598.                 intMaxMatch = 0
  599.                 intCounter = 0
  600.                 c = 0
  601.                 
  602.                 Open Filename_Database For Input As #1
  603.                 While Not EOF(1)
  604. buttonRecognise_SkipLine:
  605.                 a = 190
  606.                 b = 190
  607.                 d = 0
  608.                 intMatch = 0
  609.                 Me.AppTemplateArea.Cls
  610.                     If EOF(1) Then
  611.                         GoTo buttonRecognise_FileClose
  612.                     End If
  613.                     Input #1, arrRawData(c)
  614.                     If Len(arrRawData(c)) < 102 Then
  615.                         GoTo buttonRecognise_SkipLine
  616.                     End If
  617.                     arrTagData(c) = Mid(arrRawData(c), 1, 1)
  618.                     arrRawData(c) = Mid(arrRawData(c), 3)
  619.         '            Debug.Print arrRawData(c)
  620.                     
  621.                     For i = 1 To 10
  622.                     For j = 1 To 10
  623.                         If Mid(arrRawData(c), d + 1, 1) = vbBlack Then
  624.         '                    userTemplateArea.PSet (i, j)
  625.                             AppTemplateArea.PSet (a, b)
  626.         '                    userTemplateArea.Circle (a, b), 110
  627.         '                    AppTemplateArea.Line (a - 110, b - 110)-(a + 110, b - 110)
  628.         '                    AppTemplateArea.Line (a + 110, b - 110)-(a + 110, b + 110)
  629.         '                    AppTemplateArea.Line (a + 110, b + 110)-(a - 110, b + 110)
  630.         '                    AppTemplateArea.Line (a - 110, b + 110)-(a - 110, b - 110)
  631.         '                    Debug.Print ""
  632.                             If Mid(strData, d + 1, 1) = vbBlack Then
  633.                                 intMatch = intMatch + 1
  634.                             Else
  635.                                 intMatch = intMatch - 1
  636.                             End If
  637.                         Else
  638.                             If Mid(strData, d + 1, 1) <> vbBlack Then
  639.                                 intMatch = intMatch + 1
  640.                             Else
  641.                                 intMatch = intMatch - 1
  642.                             End If
  643.                         End If
  644.                         d = d + 1
  645.                         b = b + (Me.AppTemplateArea.Height - 200) / 10
  646.                     Next j
  647.                     b = 190
  648.                     a = a + (Me.AppTemplateArea.Width - 200) / 10
  649.                     Next i
  650.                     If intMaxMatch < intMatch Then
  651.                         intMaxMatch = intMatch
  652.                         strbuttonRecognised = arrTagData(c)
  653.                         intCounter = c
  654.                         Me.progressRecognition.Value = intMaxMatch
  655.                         If intMaxMatch > 90 Then
  656.                             GoTo buttonRecognise_FileClose
  657.                         End If
  658.                     End If
  659.                     c = c + 1
  660.                 Wend
  661. buttonRecognise_FileClose:
  662.                 Close #1
  663.             End If
  664.     End If
  665.     
  666.     Me.buttonRecognise.Enabled = False
  667.     Me.progressRecognition.Value = 0
  668.     
  669.     If strbuttonRecognised <> "" Then
  670.         AppTemplateArea.Cls
  671.         
  672.         With AppTemplateArea
  673.         .ForeColor = vbWhite
  674.         
  675.         End With
  676.         
  677.         
  678.         a = 190
  679.         b = 190
  680.         d = 0
  681.         For i = 1 To 10
  682.         For j = 1 To 10
  683.             If Mid(arrRawData(intCounter), d + 1, 1) = vbBlack Then
  684.                 AppTemplateArea.PSet (a, b)
  685.                 AppTemplateArea.Line (a - 110, b - 110)-(a + 110, b - 110)
  686.                 AppTemplateArea.Line (a + 110, b - 110)-(a + 110, b + 110)
  687.                 AppTemplateArea.Line (a + 110, b + 110)-(a - 110, b + 110)
  688.                 AppTemplateArea.Line (a - 110, b + 110)-(a - 110, b - 110)
  689.             End If
  690.             d = d + 1
  691.             b = b + (Me.AppTemplateArea.Height - 200) / 10
  692.         Next j
  693.         b = 190
  694.         a = a + (Me.AppTemplateArea.Width - 200) / 10
  695.         Next i
  696.     End If
  697.     
  698.     If strbuttonRecognised <> "" Then
  699.         'The highest posible of drawn character is buttonRecognised as   'X'
  700.         Me.textResult.Caption = intMaxMatch & "% Match with character '" & strbuttonRecognised & "'"
  701.         Me.textResult.ToolTipText = intMaxMatch & "%"
  702.         '& " , " & intMaxMatch & "%"
  703.         
  704.         Me.DrawWidth = 2
  705.         
  706.   
  707.     End If
  708.     
  709. End Sub
  710. Private Sub buttonLearn_Click()
  711.     Me.TeachLabelText.FontBold = False
  712.     Me.TeachLabelText.Caption = "Enter a character to be buttonLearn"
  713.     
  714.     
  715.     Me.buttonLearn.Visible = False
  716.     Me.buttonRecognise.Visible = False
  717.     Me.buttonClearScreen.Visible = False
  718.   
  719.     
  720.     Me.buttonLearnConfirm.Visible = True
  721.     Me.buttonLearnCancel.Visible = True
  722.     Me.inputLearnCharacter.Visible = True
  723.     Me.inputLearnCharacter.Text = ""
  724.     Me.inputLearnCharacter.SetFocus
  725.     Me.buttonLearnConfirm.Enabled = False
  726.     
  727. End Sub
  728. Private Sub GraspRawData()
  729. Dim bool1stScan As Boolean
  730. Dim ax As Integer
  731. Dim ay As Integer
  732. Dim bx As Integer
  733. Dim by As Integer
  734. bool1stScan = True
  735. strData = ""
  736. c = 0
  737. Me.userTemplateArea.Cls
  738. For i = 1 To userDrawArea.Width Step 100
  739.     For j = 1 To userDrawArea.Height Step 100
  740.         If userDrawArea.Point(i, j) = vbBlack Then
  741.             userTemplateArea.PSet (i, j)
  742.             If Not bool1stScan Then
  743.                 If i < ax Then
  744.                     ax = i
  745.                     End If
  746.                 If i > bx Then
  747.                     bx = i
  748.                     End If
  749.                 If j < ay Then
  750.                     ay = j
  751.                     End If
  752.                 If j > by Then
  753.                     by = j
  754.                     End If
  755.             Else
  756.                 bool1stScan = False
  757.                 ax = i
  758.                 bx = i
  759.                 ay = j
  760.                 by = j
  761.             End If
  762.         End If
  763. Next j, i
  764. 'MsgBox ""
  765. If bx - ax <> 0 And by - ay <> 0 Then
  766.     a = 190
  767.     b = 190
  768.     
  769.     Me.userTemplateArea.Cls
  770.     For i = ax To bx - (bx - ax) / 10 Step (bx - ax) / 10
  771.         For j = ay To by - (by - ay) / 10 Step (by - ay) / 10
  772.             If userDrawArea.Point(i, j) = vbBlack Then
  773.                 userTemplateArea.PSet (a, b)
  774.     '''            userTemplateArea.Circle (a, b), 110
  775.                 userTemplateArea.Line (a - 110, b - 110)-(a + 110, b - 110)
  776.                 userTemplateArea.Line (a + 110, b - 110)-(a + 110, b + 110)
  777.                 userTemplateArea.Line (a + 110, b + 110)-(a - 110, b + 110)
  778.                 userTemplateArea.Line (a - 110, b + 110)-(a - 110, b - 110)
  779.     '                    userTemplateArea.FillStyle = vbSolid
  780.     '                    userTemplateArea.FillColor = vbBlack
  781.     '                    userTemplateArea.fil
  782.     '            RawData(c) = userDrawArea.Point(i, j)
  783.                 strData = strData & userDrawArea.Point(i, j)
  784.                 c = c + 1
  785.             Else
  786.     '            RawData(c) = 1
  787.                 strData = strData & 1
  788.                 c = c + 1
  789.             End If
  790.             b = b + (Me.userTemplateArea.Height - 200) / 10
  791.         Next j
  792.         b = 190
  793.         a = a + (Me.userTemplateArea.Width - 200) / 10
  794.     Next i
  795. End If
  796. End Sub
  797. Private Sub inputLearnCharacter_GotFocus()
  798.     Me.inputLearnCharacter.SelStart = 0
  799.     Me.inputLearnCharacter.SelLength = Len(Me.inputLearnCharacter.Text)
  800. End Sub
  801. Private Sub inputLearnCharacter_KeyUp(KeyCode As Integer, Shift As Integer)
  802.     
  803.     If Len(Me.inputLearnCharacter.Text) = 1 Then
  804.         Me.buttonLearnConfirm.Enabled = True
  805.         Me.buttonLearnConfirm.SetFocus
  806.     ElseIf Len(Me.inputLearnCharacter.Text) > 1 Then
  807.         Me.inputLearnCharacter.Text = ""
  808.         Me.buttonLearnConfirm.Enabled = False
  809.     Else
  810.         Me.buttonLearnConfirm.Enabled = False
  811.     End If
  812.     
  813. End Sub
  814. Private Function StatusWindow(Optional ByVal strBuffer As String) As String
  815. Dim Status_OpenButton As String
  816. Dim Status_buttonLearnButton As String
  817. Dim Status_buttonLearnConfirmButton As String
  818. Dim Status_buttonLearnCancelButton As String
  819. Dim Status_buttonRecogniseButton As String
  820. Dim Status_buttonClearScreenButton As String
  821. Dim Status_ExitButton As String
  822. Dim Status_DrawArea As String
  823. Dim Status_DatabaseArea As String
  824. Dim Status_DataArea As String
  825. Dim Status_Form As String
  826.     
  827.     Status_OpenButton = "Tips && Help : Open File - Just click the Open button to open FILE then type in your FILENAME - Try it..."
  828.     Status_buttonLearnButton = "Tips && Help : buttonLearn - Just click the buttonLearn button to buttonLearn then type in your buttonLearn CHARACTER - Try it..."
  829.     Status_buttonLearnConfirmButton = "Tips && Help : Confirm the character ENTER in the textbox is match with the drawn character in the Draw Area."
  830.     Status_buttonLearnCancelButton = "Tips && Help : Mispressed or Give up or Do not want to buttonLearn."
  831.     Status_buttonRecogniseButton = "Tips && Help : buttonRecognise Text - Just click the this button to buttonRecognise drawn character then the buttonRecognised character will display at the BOTTOM. Try it..."
  832.     Status_buttonClearScreenButton = "Tips && Help : Clear Screen - Just click the this button to CLEAR screen then continue to draw character. Try it..."
  833.     Status_ExitButton = "Tips && Help : Exit this software."
  834.     Status_DrawArea = "Tips && Help : Your mouse pointer is in the Draw Area, just Click and drag to draw a character..."
  835.     Status_DatabaseArea = "Tips && Help : This is Database Area, which it will display a buttonRecognised character from the database when you click buttonRecognise Button."
  836.     Status_DataArea = "Tips && Help : This Data Area act as a buffer storage of Draw Area when user draw in Draw Area or to retrieve database data when user click Open Button."
  837.     Status_Form = "Tips && Help : Thanks for using this software. Just move the mouse to the Draw Area, then drag the mouse when you want to draw a character to be buttonRecognised. Nice Try ..."
  838.     
  839.     Select Case strBuffer
  840.     Case "OpenButton": strBuffer = Status_OpenButton
  841.     Case "buttonLearnButton": strBuffer = Status_buttonLearnButton
  842.     Case "buttonLearnConfirmButton": strBuffer = Status_buttonLearnConfirmButton
  843.     Case "buttonLearnCancelButton": strBuffer = Status_buttonLearnCancelButton
  844.     Case "buttonRecogniseButton": strBuffer = Status_buttonRecogniseButton
  845.     Case "buttonClearScreenButton": strBuffer = Status_buttonClearScreenButton
  846.     Case "ExitButton": strBuffer = Status_ExitButton
  847.     Case "DrawArea": strBuffer = Status_DrawArea
  848.     Case "DatabaseArea": strBuffer = Status_DatabaseArea
  849.     Case "DataArea": strBuffer = Status_DataArea
  850.     Case "Form": strBuffer = Status_Form
  851.     End Select
  852.     
  853.     StatusWindow = strBuffer
  854. End Function
  855. Private Function BinToDec(strBin As String) As Integer
  856. i = Len(strBin)
  857. While i > 0
  858.     If Mid(strBin, i, 1) = "1" Then
  859.         BinToDec = BinToDec + 2 ^ (Len(strBin) - i)
  860.     End If
  861.     i = i - 1
  862. Wend
  863. End Function
  864. Private Function DecToBin(intDec As Integer, intDigit As Integer) As String
  865. Dim intTemp As Integer
  866. While intDec > 0 And intDigit > 0
  867.     intDigit = intDigit - 1
  868.     intTemp = intDec Mod 2
  869.     If intTemp Then
  870.         DecToBin = "1" & DecToBin
  871.         intDec = (intDec - 1) / 2
  872.     Else
  873.         DecToBin = "0" & DecToBin
  874.         intDec = intDec / 2
  875.     End If
  876. Wend
  877. While intDigit
  878.     intDigit = intDigit - 1
  879.     DecToBin = "0" & DecToBin
  880. Wend
  881. End Function