public ActionResult MyDoodle(int id) { //todo: authorize var doodel = doodelService.Get(x => x.Id == id).SingleOrDefault(); var userDoodels = doodelService.GetUserDoodels().Where(x => x.DoodelId == doodel.Id); var doodleModel = new DoodleModel { Beginning = doodel.BeginTime, Ending = doodel.EndTime, Title = doodel.Title, Participants = new List <ParticipantDaysModel>() }; foreach (var ud in userDoodels) { var days = doodelService.GetAllUserDoodleChoices() .Where(x => x.UserDoodelId == ud.Id) .Select(x => x.Day); doodleModel.Participants.Add(new ParticipantDaysModel { User = userService.GetUser(ud.UserId).UserName, Days = days.Select(x => x.Day1).ToList() }); } return(View(doodleModel)); }
private void drawWithMovePoint(Point point) { DoodleModel model = (DoodleModel)doodleModels[doodleModels.Count - 1]; model.points.Add(new DoodlePoint(getLogicPoint(point))); switch (model.drawType) { case DoodleEnumType.eraser: { if (doodleCanvas is InkCanvas) { double eraserWidth = getEraserWidth(); eraserPointList.Add(point); if (eraserPointList.Count > 5) { eraserPointList.RemoveAt(0); } doodleCanvas.Strokes.Erase(eraserPointList, new RectangleStylusShape(eraserWidth, eraserWidth)); } } break; case DoodleEnumType.draw: { if (doodleCanvas is InkCanvas) { List <Point> pointList = new List <Point>(); pointList.Add(point); Stroke s = stroke; s.StylusPoints.Add(new StylusPointCollection(pointList)); } else if (doodleCanvas is Canvas) { Path path = (Path)element; doodleCanvas.Children.Remove(path); PathFigure pathFigure = new PathFigure(); pathFigure.StartPoint = getLocalPoint(model.points[0].GetPoint); List <Point> controls = new List <Point>(); for (int i = 0; i < model.points.Count; i++) { controls.AddRange(BezierControlPoints(model.points, i)); } for (int i = 1; i < model.points.Count; i++) { BezierSegment bs = new BezierSegment(controls[i * 2 - 1], controls[i * 2], getLocalPoint(model.points[i].GetPoint), true); bs.IsSmoothJoin = true; pathFigure.Segments.Add(bs); } PathFigureCollection pathFigureCollection = new PathFigureCollection(); pathFigureCollection.Add(pathFigure); PathGeometry pathGeometry = new PathGeometry(pathFigureCollection); path.Data = pathGeometry; doodleCanvas.Children.Add(path); } } break; case DoodleEnumType.rect: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Rectangle rect = (Rectangle)element; rect.Margin = new Thickness(getSmallX(startPoint, point), getSmallY(startPoint, point), 0, 0); rect.Width = Math.Abs(startPoint.X - point.X); rect.Height = Math.Abs(startPoint.Y - point.Y); } break; case DoodleEnumType.line: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Line line = (Line)element; line.X1 = startPoint.X; line.Y1 = startPoint.Y; line.X2 = point.X; line.Y2 = point.Y; } break; case DoodleEnumType.circle: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Ellipse circle = (Ellipse)element; circle.Margin = new Thickness(getSmallX(startPoint, point), getSmallY(startPoint, point), 0, 0); circle.Width = Math.Abs(startPoint.X - point.X); circle.Height = Math.Abs(startPoint.Y - point.Y); } break; case DoodleEnumType.arrow: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Arrow arrow = (Arrow)element; arrow.X1 = startPoint.X; arrow.Y1 = startPoint.Y; arrow.X2 = point.X; arrow.Y2 = point.Y; } break; case DoodleEnumType.cube: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); DoodleCube cone = (DoodleCube)element; cone.SetPoints(startPoint, point); } break; case DoodleEnumType.cylinder: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); DoodleCylinder cone = (DoodleCylinder)element; cone.SetPoints(startPoint, point); } break; case DoodleEnumType.cone: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); DoodleCone cone = (DoodleCone)element; cone.SetPoints(startPoint, point); } break; default: break; } }
private void drawWithModel(DoodleModel model) { switch (model.drawType) { case DoodleEnumType.eraser: { } break; case DoodleEnumType.draw: { Path path = new Path() { StrokeThickness = getBrushWidth(model.lineWidth), Stroke = getBrushColor(model.lineColor) }; PathFigure pathFigure = new PathFigure(); pathFigure.StartPoint = getLocalPoint(model.points[0].GetPoint); List <Point> controls = new List <Point>(); for (int i = 0; i < model.points.Count; i++) { controls.AddRange(BezierControlPoints(model.points, i)); } for (int i = 1; i < model.points.Count; i++) { BezierSegment bs = new BezierSegment(controls[i * 2 - 1], controls[i * 2], getLocalPoint(model.points[i].GetPoint), true); bs.IsSmoothJoin = true; pathFigure.Segments.Add(bs); } PathFigureCollection pathFigureCollection = new PathFigureCollection(); pathFigureCollection.Add(pathFigure); PathGeometry pathGeometry = new PathGeometry(pathFigureCollection); path.Data = pathGeometry; doodleCanvas.Children.Add(path); } break; case DoodleEnumType.rect: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Point point = getLocalPoint(model.points[model.points.Count - 1].GetPoint); Rectangle rect = new Rectangle() { Margin = new Thickness(getSmallX(startPoint, point), getSmallY(startPoint, point), 0, 0), Width = Math.Abs(startPoint.X - point.X), Height = Math.Abs(startPoint.Y - point.Y), StrokeThickness = getBrushWidth(model.lineWidth), Stroke = getBrushColor(model.lineColor) }; doodleCanvas.Children.Add(rect); } break; case DoodleEnumType.line: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Point point = getLocalPoint((Point)model.points[model.points.Count - 1].GetPoint); Line line = new Line() { X1 = startPoint.X, Y1 = startPoint.Y, X2 = point.X, Y2 = point.Y, StrokeThickness = getBrushWidth(model.lineWidth), Stroke = getBrushColor(model.lineColor) }; doodleCanvas.Children.Add(line); } break; case DoodleEnumType.circle: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Point point = getLocalPoint((Point)model.points[model.points.Count - 1].GetPoint); Ellipse circle = new Ellipse() { Margin = new Thickness(getSmallX(startPoint, point), getSmallY(startPoint, point), 0, 0), Width = Math.Abs(startPoint.X - point.X), Height = Math.Abs(startPoint.Y - point.Y), StrokeThickness = getBrushWidth(model.lineWidth), Stroke = getBrushColor(model.lineColor) }; doodleCanvas.Children.Add(circle); } break; case DoodleEnumType.arrow: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Point point = getLocalPoint(model.points[model.points.Count - 1].GetPoint); Arrow arrow = new Arrow() { X1 = startPoint.X, Y1 = startPoint.Y, X2 = point.X, Y2 = point.Y, StrokeThickness = getBrushWidth(model.lineWidth), Stroke = getBrushColor(model.lineColor) }; doodleCanvas.Children.Add(arrow); } break; case DoodleEnumType.cube: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Point point = getLocalPoint(model.points[model.points.Count - 1].GetPoint); DoodleCube cone = new DoodleCube(startPoint, point, getBrushWidth(model.lineWidth), getBrushColor(model.lineColor)); doodleCanvas.Children.Add(cone); } break; case DoodleEnumType.cylinder: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Point point = getLocalPoint(model.points[model.points.Count - 1].GetPoint); DoodleCylinder cone = new DoodleCylinder(startPoint, point, getBrushWidth(model.lineWidth), getBrushColor(model.lineColor)); doodleCanvas.Children.Add(cone); } break; case DoodleEnumType.cone: { Point startPoint = getLocalPoint(model.startPoint.GetPoint); Point point = getLocalPoint(model.points[model.points.Count - 1].GetPoint); DoodleCone cone = new DoodleCone(startPoint, point, getBrushWidth(model.lineWidth), getBrushColor(model.lineColor)); doodleCanvas.Children.Add(cone); } break; default: break; } }
private void drawWithBeganPoint(Point point) { DoodleModel model = new DoodleModel(); model.points.Add(new DoodlePoint(getLogicPoint(point))); model.drawType = drawType; model.lineColor = lineColor; model.lineWidth = lineWidth; doodleModels.Add(model); switch (model.drawType) { case DoodleEnumType.eraser: { if (doodleCanvas is InkCanvas) { double eraserWidth = getEraserWidth(); eraserPointList = new List <Point>(); eraserPointList.Add(point); doodleCanvas.Strokes.Erase(eraserPointList, new RectangleStylusShape(eraserWidth, eraserWidth)); } } break; case DoodleEnumType.draw: { if (doodleCanvas is InkCanvas) { DrawingAttributes attributes = new DrawingAttributes(); attributes.Color = getColor(lineColor); attributes.Width = attributes.Height = getBrushWidth(lineWidth); List <Point> pointList = new List <Point>(); pointList.Add(point); Stroke s = new Stroke(new StylusPointCollection(pointList), attributes); doodleCanvas.Strokes.Add(s); stroke = s; } else if (doodleCanvas is Canvas) { Path path = new Path() { StrokeThickness = getBrushWidth(lineWidth), Stroke = getBrushColor(lineColor) }; doodleCanvas.Children.Add(path); element = path; } } break; case DoodleEnumType.rect: { Rectangle rect = new Rectangle() { Margin = new Thickness(point.X, point.Y, 0, 0), Width = 0, Height = 0, StrokeThickness = getBrushWidth(lineWidth), Stroke = getBrushColor(lineColor) }; doodleCanvas.Children.Add(rect); element = rect; } break; case DoodleEnumType.line: { Line line = new Line() { X1 = point.X, Y1 = point.Y, X2 = point.X, Y2 = point.Y, StrokeThickness = getBrushWidth(lineWidth), Stroke = getBrushColor(lineColor) }; doodleCanvas.Children.Add(line); element = line; } break; case DoodleEnumType.circle: { Ellipse circle = new Ellipse() { Margin = new Thickness(point.X, point.Y, 0, 0), Width = 0, Height = 0, StrokeThickness = getBrushWidth(lineWidth), Stroke = getBrushColor(lineColor) }; doodleCanvas.Children.Add(circle); element = circle; } break; case DoodleEnumType.arrow: { Arrow arrow = new Arrow() { X1 = point.X, Y1 = point.Y, X2 = point.X, Y2 = point.Y, StrokeThickness = getBrushWidth(lineWidth), Stroke = getBrushColor(lineColor) }; doodleCanvas.Children.Add(arrow); element = arrow; } break; case DoodleEnumType.cube: { DoodleCube cone = new DoodleCube(point, point, getBrushWidth(lineWidth), getBrushColor(lineColor)); doodleCanvas.Children.Add(cone); element = cone; } break; case DoodleEnumType.cylinder: { DoodleCylinder cone = new DoodleCylinder(point, point, getBrushWidth(lineWidth), getBrushColor(lineColor)); doodleCanvas.Children.Add(cone); element = cone; } break; case DoodleEnumType.cone: { DoodleCone cone = new DoodleCone(point, point, getBrushWidth(lineWidth), getBrushColor(lineColor)); doodleCanvas.Children.Add(cone); element = cone; } break; default: break; } }