// добавление точки в бд public void insertPoint(ImagePoint point) { try { SQLiteCommand cmd; sqlite.Open(); cmd = sqlite.CreateCommand(); string value = point.To_String(); cmd.CommandText = "INSERT INTO Points (type, x, y, x1, y1) VALUES (" + value + ");"; cmd.ExecuteNonQuery(); } catch (SQLiteException ex) { System.Windows.Forms.MessageBox.Show(ex.Message.ToString()); } sqlite.Close(); }
private void draw(ImagePoint p) { Graphics g1 = Graphics.FromImage(settingPicture.Image); switch (p.t) // в зависимости от типа { case ImagePoint.type.point: g1.DrawEllipse(pen, p.X_pos - 5, p.Y_pos - 5, 10, 10); break; case ImagePoint.type.line: g1.DrawLine(pen, p.X_pos, p.Y_pos, p.X_pos2, p.Y_pos2); break; default: break; } g1.Dispose(); settingPicture.Invalidate(); }
// получение коолекции точек из бд public List<ImagePoint> getCollection() { List<ImagePoint> points = new List<ImagePoint>(); DataTable dt = selectQuery("SELECT * FROM Points"); for (int line = 0; line < dt.Rows.Count; line++) { ImagePoint p = new ImagePoint(); p.t = (ImagePoint.type)Convert.ToInt32(dt.Rows[line][1].ToString()); p.X_pos = Convert.ToInt32(dt.Rows[line][2].ToString()); p.Y_pos = Convert.ToInt32(dt.Rows[line][3].ToString()); p.X_pos2 = Convert.ToInt32(dt.Rows[line][4].ToString()); p.Y_pos2 = Convert.ToInt32(dt.Rows[line][5].ToString()); points.Add(p); } return points; }
// мышь поднята private void settingPicture_MouseUp(object sender, MouseEventArgs e) { p2 = settingPicture.PointToClient(System.Windows.Forms.Cursor.Position); // получение второй координаты double xRatio = 1.0 * settingPicture.Width / settingPicture.Image.Width; double yRatio = 1.0 * settingPicture.Height / settingPicture.Image.Height; double ratio = xRatio < yRatio ? xRatio : yRatio; int halfX = settingPicture.Width / 2; int halfY = settingPicture.Height / 2; int halfImageX = settingPicture.Image.Width / 2; int halfImageY = settingPicture.Image.Height / 2; int x = (int)((double)(p.X - halfX) / ratio + halfImageX); int y = (int)((double)(p.Y - halfY) / ratio + halfImageY); int x2 = (int)((double)(p2.X - halfX) / ratio + halfImageX); // вычисление координат оносительно картинки int y2 = (int)((double)(p2.Y - halfY) / ratio + halfImageY); ImagePoint point = new ImagePoint(); // создание новой точки для коллекции if (x == x2 && y == y2) // если координаты равны { point.t = ImagePoint.type.point; // устанавливаем тип точка } else // если нет { point.t = ImagePoint.type.line; // то тип линия } point.X_pos = x; point.Y_pos = y; // утсановка координат у точки point.X_pos2 = x2; point.Y_pos2 = y2; points.Add(point); // добавление точки в коллекцию draw(point); // отрисовка }