public void Prerecognize() { try { _canvas = new Canvas((Bitmap)_image.Clone(), 8.0d); _canvas.RecognizeImage(); testsparam t = _ge.testsparams.First(tp => tp.idt == _testid); t.answersparams.Load(); IEnumerable<answersparam> answers = t.answersparams.Where(a => a.idt == t.idt); foreach (answersparam a in answers) { Distances _distances = new Distances(); _distances.Add(_canvas.TopLeftMarker, (double)a.toplx, (double)a.toply); _distances.Add(_canvas.TopRightMarker, (double)a.toprx, (double)a.topry); _distances.Add(_canvas.BottomLeftMarker, (double)a.blx, (double)a.bly); _distances.Add(_canvas.BottomRightMarker, (double)a.brx, (double)a.bry); Answer _answer = new Answer(_canvas.CorrectedImage, (int)a.num, (int)a.cellscount, _distances, (int)a.intercellswidth, (int)a.cellswidth, (int)a.cellshight); IEnumerable<cellsparam> cells = a.cellsparams.Where(c => c.ida == a.ida); a.cellsparams.Load(); int i = 0; foreach (cellsparam cp in cells) { _answer.Cells[i].ContentDescription = cp.description.Trim(); i++; } _canvas.Answers.Add(_answer); } OnRecItem(); } catch (Exception ex) { throw ex; } }
private void button1_Click(object sender, EventArgs e) { // это необходимо менять double startx =58.8; double starty = 197; int rowscount = 31; int colscount = 9; double colsinterval = 86.6; double rowsinterval = 27.5; // pBaseEntities pb = new pBaseEntities(); testsparam t = pb.testsparams.First(tp => tp.idt == (int)EnumPTests.NPNA); t.answersparams.Load(); int curransverindex = 0; double x = startx; for(int col=0;col<colscount;col++) { double y = starty; for (int row = 0; row < rowscount;row++ ) { if (curransverindex <= t.answerscount-1) { Distances _distances = new Distances(); _distances.Add(_canvas.TopLeftMarker, (int)x, (int)y); _distances.Add(_canvas.TopRightMarker, (int)x, (int)y); _distances.Add(_canvas.BottomLeftMarker, (int)x, (int)y); _distances.Add(_canvas.BottomRightMarker, (int)x, (int)y); _canvas.Answers[curransverindex].Clear(); _canvas.Answers[curransverindex].Cells.ReMeasure(_distances, _canvas.Answers[curransverindex].InterCentresDistX, _canvas.Answers[curransverindex].CellsWidth, _canvas.Answers[curransverindex].CellsHeight); _canvas.Answers[curransverindex].Select(); pb_img.Refresh(); //это комментить при подгонке answersparam a = t.answersparams.First(ap => ap.num == curransverindex + 1); a.toplx = (int)_distances[0].OnX; a.toply = (int)_distances[0].OnY; a.toprx = (int)_distances[1].OnX; a.topry = (int)_distances[1].OnY; a.blx = (int)_distances[2].OnX; a.bly = (int)_distances[2].OnY; a.brx = (int)_distances[3].OnX; a.bry = (int)_distances[3].OnY; pb.SaveChanges(); y += rowsinterval; curransverindex++; } } x += colsinterval; } }
private void cmd_addtest_Click(object sender, EventArgs e) { this.lst_answ.Items.Clear(); _canvas = new Canvas((Bitmap)this.pb_img.Image,8d); _canvas.RecognizeImage(); this.pb_img.Image = _canvas.CorrectedImage; //KetelData td = new KetelData(); pBaseEntities pb = new pBaseEntities(); // modulData md = new modulData(); // testsparam tst = testsparam.Createtestsparam(0, "ОПРОСНИК МОДУЛЬ", 200, true); // for (int a = 0; a < tst.answerscount; a++) // { // answersparam ap = answersparam.Createanswersparam(0, tst.idt, "Вопрос № " + (a + 1), 2); // ap.num = a + 1; // ap.buttondescription = md.answers[a].text; // ap.intercellswidth = 27; // ap.cellshight = 25; // ap.cellswidth = 25; // ap.toplx = 0; // ap.toply = 0; // ap.toprx = 0; // ap.topry = 0; // ap.blx = 0; // ap.bly = 0; // ap.brx = 0; // ap.bry = 0; // cellsparam cp = cellsparam.Createcellsparam(0, ap.ida); // cp.description = "Да"; // cp.buttonsescription = "Да"; // cp.mark = md.answers[a].isYes?md.answers[a].mark:0; // cellsparam cp1 = cellsparam.Createcellsparam(0, ap.ida); // cp1.description = "Нет"; // cp1.buttonsescription = "Нет"; // cp1.mark = md.answers[a].isYes ? 0 : md.answers[a].mark; // ap.cellsparams.Add(cp); // ap.cellsparams.Add(cp1); // tst.answersparams.Add(ap); // } //pb.testsparams.AddObject(tst); // pb.SaveChanges(); testsparam t = pb.testsparams.First(tp => tp.idt == (int)EnumPTests.NPNA); t.answersparams.Load(); IEnumerable<answersparam> answers = t.answersparams; foreach (answersparam ap in answers) { ListViewItem it = new ListViewItem(ap.num.ToString()); it.SubItems.Add(ap.ida.ToString()); it.SubItems.Add(ap.description.ToString()); it.SubItems.Add(ap.intercellswidth.ToString()); it.SubItems.Add(ap.cellswidth.ToString()); it.SubItems.Add(ap.cellshight.ToString()); it.SubItems.Add(ap.toplx.ToString()); it.SubItems.Add(ap.toply.ToString()); this.lst_answ.Items.Add(it); //добавляем вопросы на грид //создаем коллекцию дистанций для каждого ответа Distances _distances = new Distances(); _distances.Add(_canvas.TopLeftMarker, (double)ap.toplx, (double)ap.toply); _distances.Add(_canvas.TopRightMarker, (double)ap.toprx, (double)ap.topry); _distances.Add(_canvas.BottomLeftMarker, (double)ap.blx, (double)ap.bly); _distances.Add(_canvas.BottomRightMarker, (double)ap.brx, (double)ap.bry); //_distances.Add(_canvas.TopLeftMarker, 100, 100); //_distances.Add(_canvas.TopRightMarker, 100, 100); //_distances.Add(_canvas.BottomLeftMarker, 100, 100); //_distances.Add(_canvas.BottomRightMarker, 100, 100); //создаем ответы Answer _answer = new Answer(_canvas.CorrectedImage, (int)ap.ida, (int)ap.cellscount, _distances, (int)ap.intercellswidth, (int)ap.cellswidth, (int)ap.cellshight); _answer.Select(); _canvas.Answers.Add(_answer); } }