internal bool IsCheckBoardCircle(GrafData data) { foreach (var circle in _circleList) { var dx = data.ClicPoint.X - circle.Point.X; var dy = data.ClicPoint.Y - circle.Point.Y; var r = circle.R; if (dx * dx + dy * dy < r * r) { circle.Check = !circle.Check; data.CheckCircle = !data.CheckCircle; if (data.ForDej) { _listForDej.Enqueue(circle.Number); if (_listForDej.Count > 2) { _listForDej.Clear(); ClearChekedList(); } } return(true); } } return(false); }
internal void Draw(GrafData data) { if (_drawToRyppaty) { _lineList.Remove(_drawForRippatyList[0]); _buferLineList.Add(_drawForRippatyList[0]); _drawForRippatyList.RemoveAt(0); } foreach (var line in _lineList) { line.Draw(data); } foreach (var circle in _circleList) { circle.Draw(data); } foreach (var line in _buferLineList) { line.TimingDraw(data); } if (_drawToRyppaty) { if (_drawForRippatyList.Count == 0) { _drawToRyppaty = false; _lineList.AddRange(_buferLineList); _buferLineList.Clear(); foreach (var circle in _circleList) { circle.Check = false; } _checkedVertex.Clear(); } } }
private void UpdateDay(PersonNoTreningDaySet obj)//super metodka która trigeruje się za każdym razem jak jest zmiana na dacie { SelectedDay = (PersonNoTreningDaySet)obj; Values = new ObservableCollection <PersonNoTreningDaySet>();//wreszcie sukces ;) Values.Add(SelectedDay); using (Models.WorkOut2Container contex = new Models.WorkOut2Container()) { var listForGraf = (from c in contex.PersonNoTreningDaySetSet where c.PersonSetId == SelectedPerson.Id select c); var listForGraf1 = (from c in contex.PersonTreningDaySetSet where c.PersonSetId == SelectedPerson.Id select c); Dictionary <string, double?> dictionary = new Dictionary <string, double?>(); foreach (var graf in listForGraf) { DateTime temp = (DateTime)graf.Date; dictionary.Add(temp.ToShortDateString(), graf.Weight); } foreach (var graf in listForGraf1) { DateTime temp = (DateTime)graf.Date; dictionary.Add(temp.ToShortDateString(), graf.Weight); } var items = from pair in dictionary orderby pair.Key ascending select pair; foreach (var graf in items) { GrafData.Add(new KeyValuePair <string, double?>(graf.Key, graf.Value)); } } }
internal void TimingDraw(GrafData data) { var pen = new Pen(Color.Red, 5); var brushForWeight = new SolidBrush(Color.Black); pen.EndCap = LineCap.ArrowAnchor; data.FormGraphics.DrawLine(pen, _startPoint, _finishPoint); WriteWeight(data, brushForWeight); }
private void WriteWeight(GrafData data, Brush brush) { if (Weight != 30) { var point = new Point((_startPoint.X + _finishPoint.X) / 2, (_startPoint.Y + _finishPoint.Y) / 2); var fontFamily = new FontFamily("Comic Sans MS"); var font = new Font(fontFamily, 16, FontStyle.Underline, GraphicsUnit.Pixel); data.FormGraphics.DrawString(Weight.ToString(), font, brush, point); } }
internal void AddEdge(GrafData data) { foreach (var circle in _circleList) { if (_checkedVertex.Count == 0) { if (circle.Check) { _checkedVertex.Add(circle); return; } } if (circle.Check && circle != _checkedVertex[0]) { _checkedVertex.Add(circle); foreach (var line in _lineList) { if (data.CheckEdgeRoute) { if (line.NumStartVertex == _checkedVertex[0].Number && line.NumFinishVertex == _checkedVertex[1].Number) { return; } } else { if (line.NumStartVertex == _checkedVertex[0].Number && line.NumFinishVertex == _checkedVertex[1].Number || line.NumStartVertex == _checkedVertex[1].Number && line.NumFinishVertex == _checkedVertex[0].Number) { return; } } } _graf.AddEdge(_checkedVertex[0].Number, _checkedVertex[1].Number, data.Weight, data.CheckEdgeRoute); _lineList.Add(new LineDrawer ( _checkedVertex[0].Point, _checkedVertex[1].Point, data.Weight, _checkedVertex[0].Number, _checkedVertex[1].Number) ); _checkedVertex.Clear(); foreach (var circle2 in _circleList) { circle2.Check = false; } return; } } }
/// <summary> /// Обработка события клика, выделение, рисование вершин и ребер /// </summary> /// <param name="data">Модель данных</param> public void ClickOnPainBox(GrafData data) { if (IsCheckBoardCircle(data)) { _mainDrawer.AddEdge(data); } else { _mainDrawer.AddVertex(data); } }
internal void AddVertex(GrafData data) { var num = _graf.AddVertex(); var vertex = new CircleDrawer(num, data.ClicPoint); _circleList.Add(vertex); _checkedVertex.Clear(); foreach (var circleDrawer in _circleList) { circleDrawer.Check = false; } }
internal void Draw(GrafData data) { var pen = new Pen(Color.Green); if (data.CheckEdgeRoute) { pen = new Pen(Color.Green, 10); pen.EndCap = LineCap.ArrowAnchor; } data.FormGraphics.DrawLine(pen, _startPoint, _finishPoint); var brushForWeight = new SolidBrush(Color.Brown); WriteWeight(data, brushForWeight); }
private void UpdateDay(PersonTreningDaySet obj)//super metodka która trigeruje się za każdym razem jak jest zmiana na dacie { SelectedDay = (PersonTreningDaySet)obj; using (Models.WorkOut2Container contex = new Models.WorkOut2Container()) { firstIdOfImage = (from c in contex.PersonPhotoSetSet where c.PersonTreningDaySetId == SelectedDay.Id select c.Id).FirstOrDefault(); howManyImage = (from c in contex.PersonPhotoSetSet where c.PersonTreningDaySetId == SelectedDay.Id select c.Id).Count(); _howManyImage = howManyImage; _firstIdOfImage = firstIdOfImage; } Values = new ObservableCollection <ExtendedPersonTraninDaySet>();//wreszcie sukces ;) if (SelectedDay.PersonPhotoSet.FirstOrDefault() != null) { Photo = SelectedDay.PersonPhotoSet.FirstOrDefault().Photo; ConvertetPhoto = this.LoadImage(Photo); tmp = new ExtendedPersonTraninDaySet(SelectedDay.Date, SelectedDay.Diet, SelectedDay.PersonSetId, SelectedDay.Weight, SelectedDay.Exercises, SelectedDay.Supplementation, ConvertetPhoto); Values.Add(tmp); } tmp = new ExtendedPersonTraninDaySet(SelectedDay.Date, SelectedDay.Diet, SelectedDay.PersonSetId, SelectedDay.Weight, SelectedDay.Exercises, SelectedDay.Supplementation, null); Values.Add(tmp); using (Models.WorkOut2Container contex = new Models.WorkOut2Container()) { var listForGraf = (from c in contex.PersonNoTreningDaySetSet where c.PersonSetId == SelectedPerson.Id select c); var listForGraf1 = (from c in contex.PersonTreningDaySetSet where c.PersonSetId == SelectedPerson.Id select c); Dictionary <string, double?> dictionary = new Dictionary <string, double?>(); foreach (var graf in listForGraf) { DateTime temp = (DateTime)graf.Date; dictionary.Add(temp.ToShortDateString(), graf.Weight); } foreach (var graf in listForGraf1) { DateTime temp = (DateTime)graf.Date; dictionary.Add(temp.ToShortDateString(), graf.Weight); } var items = from pair in dictionary orderby pair.Key ascending select pair; foreach (var graf in items) { GrafData.Add(new KeyValuePair <string, double?>(graf.Key, graf.Value)); } } }
/// <summary> /// Отрисовка графа на форме /// </summary> /// <param name="data">Модель данных</param> public void Draw(GrafData data) { _mainDrawer.Draw(data); var edgeList = new List <EdgeForDGW>(); foreach (var edge in _graf.GetEdgeList()) { edgeList.Add(new EdgeForDGW { Start = edge.StartVertex, Finish = edge.FinishVertex, Weight = edge.Weight }); } AddEdgeEvent?.Invoke(edgeList); }
public void CheckVertex(GrafData data) { data.ForDej = true; _mainDrawer.IsCheckBoardCircle(data); }
/// <summary> /// Проверка выбора вершины /// </summary> /// <param name="data">Модель данных</param> /// <returns>bool, выбрана или нет</returns> private bool IsCheckBoardCircle(GrafData data) { return(_mainDrawer.IsCheckBoardCircle(data)); }