private void button1_Click(object sender, EventArgs e) //проверка ключа { List <FixedKey> fix = new List <FixedKey>(); try { SaveBmp(bm2, $@"{dir}\test"); //сохраняем рисунок ключа bool[,] arrFilled = BmpToMatrix(bm2); //переводим в вид матрицы TestKey newKey = new TestKey(DateTime.Now, arrFilled); //чтение списка эталонных ключей System.IO.FileStream fs = new System.IO.FileStream($@"{dir}\collection.ini", System.IO.FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); fix.Clear();//очищаем коллекцию перед записью из файла do { fix.Add((FixedKey)bf.Deserialize(fs)); } while (fs.Position < fs.Length); fs.Close(); int i = 1; foreach (FixedKey f in fix) { int ck = newKey.CheckTestKey(newKey.matrix, f.matrix); textBox1.Text += $"{i}) {ck}%" + Environment.NewLine; i++; } // NewPic(); //очистка поля после проверки } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void btnChkKey_Click(object sender, RoutedEventArgs e) //проверка ключа { if (dir == null) //если не прочитаны настройки (некуда сохранять ключи) - выходим { System.Windows.MessageBox.Show($"Невозможно сохранить ключи.\nЛибо не читаются настройки, либо указана некорректная дирректория сохранения."); return; } bool opened = false; textBox1.Text = null;//##окно для вывода % совпадения ключей, потом убрать Bitmap bmp = MakeBmpFromInkCanvas(); bool[,] arrFilled = BmpToMatrix(bmp);//переводим в вид матрицы тестовый ключ TestKey newKey = new TestKey(DateTime.Now, arrFilled); fix = TakeFixKey(); if (fix == null) { return; //проверяем на наличие ключей } int i = 1; foreach (FixedKey f in fix) { int ck = newKey.CheckTestKey(newKey.matrix, f.matrix); textBox1.Text += $"{i}) {ck}%" + Environment.NewLine; if (ck >= 98 && !opened) { OpenLock(); //##Подумать над механизмом разрешения!!! opened = true; failsCount = 0; //обнуляем счётчик неудачных вводов } i++; } LogWrite($"Произведено сравнение ключа c эталонным."); if (!opened) { failsCount++; } if (failsCount >= 3) //если неудачных попыток ввода >=3 { AlertMail(failsCount); } inkcanvas.Strokes.Clear(); //очищаем поле ввода ключа }