Per scoprire i cambiamenti di direzione
Abbiamo coordinate X e Y in un ambiente 2D. Così i cambiamenti di direzione dovranno avvenire sia su coordinate X e Y. Useremo le variabili XDirection e YDirection per scoprire i cambiamenti di direzione. Se XDirection ha un valore di 3 direzione sarà Est, 4 sarà Ovest. Se YDirection ha un valore di 1, la direzione sarà a Nord, 2 sarà Sud. Se entrambe queste variabili ha un valore di 0, allora capiremo che l'utente non ha tratto niente.
Per scoprire i cambiamenti di direzione, è l'unico modo per abbinare i valori delle coordinate correnti con quelli precedenti. Così dobbiamo registrare la X, Y informazioni disegnati precedentemente. Per raggiungere questo useremo due variabili di tipo ArrayList denominate X e Y.
Poiché non vogliamo che il nostro codice sia quella sensibile per registrare i cambiamenti di direzione su una o due modifiche dei pixel, useremo due variabili chiamate History e Range. Come ricorderete tracciamo i cambiamenti di direzione, facendo corrispondere il precedente x, record y con quelli attuali, variabile History manterrà il valore che identifica il numero di record che torneremo indietro in ArrayList. Variabile di intervallo manterrà il valore della differenza massima ammissibile tra il x, y .
Diamo un'occhiata alla foto
Per mantenere la direzione cambia in memoria
Useremo una variabile tipizzata StringBuilder chiamata OCR per raggiungere questo obiettivo. Se la variabile XDirChanged ha un valore TRUE e XDirection variabile ha un valore diverso da 0 si aggiunge la direzione alla variabile OCR.
CODICE VISUAL STUDIO 2010 - C#
...
if (XDirChanged && XDirection!=0)
OCR.Append(XDirection);
if (YDirChanged && YDirection!=0)
OCR.Append(YDirection);
...
Processo finale, interpretare i cambiamenti di direzione
Per iniziare a interpretare il cambiamento di direzione utente dovrà fare clic con il tasto destro del mouse.
Usando questo evento possiamo poi utilizzare il metodo AnaylseThis() per analizzare quello che ha scritto.
Prima di andare avanti prendete un pezzo di carta e disegnare la lettera A. Si noti la direzione si disegna. (Ricordate il grafico direzione)
Una lettera
42323?
Impara a disegnare :
Andiamo a direzione 4 per X e 2 per Y come tracciamo la linea 1
Andiamo a direzione 3 per X e 2 per Y come tracciamo la linea 2
Andiamo a direzione 3 per X e 0 per Y come tracciamo la linea 3
Finalmente possiamo comprendere che il valore 42323 è la lettera A. La prima cosa che ti chiedo è che lo stile di scrittura può variare come faremo interpretare disegni diversi per A?
Date un'occhiata al seguente codice.
CODICE VISUAL STUDIO 2010 - C#
private void AnalyseThis()
{
Graphics Gc=pictureBox1.CreateGraphics();
Gc.Clear(Color.White);
//Yorumlama;
string OCRText=OCR.ToString();
switch(OCRText)
{
//A
case "3123":
textBox2.Text+="A";
break;
case "1323":
goto case "3123";
case "1332":
goto case "3123";
case "42233":
goto case "3123";
case "42323":
goto case "3123";
case "24323":
goto case "3123";
case "31323":
goto case "42233";
//B
case "2324324":
textBox2.Text+="B";
break;
case "231243124":
goto case "2324324";
case "232434":
goto case "2324324";
//C
case "423":
textBox2.Text+="C";
break;
case "243":
goto case "423";
//D
case "2324":
textBox2.Text+="D";
break;
case "2234":
goto case "2324";
//E
case "2333":
textBox2.Text+="E";
break;
//F
case "233":
textBox2.Text+="F";
break;
//G
case "42313":
textBox2.Text+="G";
break;
//H
case "223":
textBox2.Text+="H";
break;
case "232":
goto case "223";
//I
case "2":
textBox2.Text+="I";
break;
//J
case "241":
textBox2.Text+="J";
break;
//K
case "2423":
textBox2.Text+="K";
break;
case "2243":
goto case "2423";
//L
case "23":
textBox2.Text+="L";
break;
//M
case "22312":
textBox2.Text+="M";
break;
case "23212":
goto case "22312";
//N
case "2232":
textBox2.Text+="N";
break;
case "2322":
goto case "2232";
case "2321":
goto case "2232";
//O
case "42314":
textBox2.Text+="O";
break;
//P
case "22343":
textBox2.Text+="P";
break;
case "23243":
goto case "22343";
//R
case "223432":
textBox2.Text+="R";
break;
case "223423":
goto case "223432";
case "232432":
goto case "223432";
case "232423":
goto case "223432";
//S
case "4234":
textBox2.Text+="S";
break;
//T
case "32":
textBox2.Text+="T";
break;
//U
case "231":
textBox2.Text+="U";
break;
//V
case "2313":
textBox2.Text+="V";
break;
case "2331":
goto case "2313";
case "3213":
goto case "2313";
case "3231":
goto case "2313";
//Y
case "2312":
textBox2.Text+="Y";
break;
case "3212":
goto case "2312";
//Z
case "3423":
textBox2.Text+="Z";
break;
case "3243":
goto case "3423";
}
OCR.Remove(0,OCR.Length);
}
}
Come potete vedere siamo in grado di utilizzare diverse combinazioni di direzione per una lettera.
Con questo metodo possiamo interpretare diversi stili di scrittura.
Questo codice può interpretare erroneamente per alcune lettere simili come D, P.
In questa fase è possibile scrivere alcuni componenti aggiuntivi per risolvere questo problema :)
Questo articolo è stato tradotto in italiano di seguito troverete l'articolo Originale e il nome della fonte :
(Titolo Originario) : How to Interpret Handwriting with C# - (Autore) : Levent Yildiz del 02 - Settembre - 2005