private void CreateLine(IBPoint startPosition, IBPoint endPosition) { //test sklonu, zda to pujde k ose x a nebo y if (Math.Abs(endPosition.Y - startPosition.Y) > Math.Abs(endPosition.X - startPosition.X)) { if ((startPosition.Y - endPosition.Y) < 0) { BresenhamMethod(startPosition.Y, startPosition.X, endPosition.Y, endPosition.X, false); } else { BresenhamMethod(endPosition.Y, endPosition.X, startPosition.Y, startPosition.X, false); } } else { if ((startPosition.Y - endPosition.Y) > 0) { BresenhamMethod(endPosition.X, endPosition.Y, startPosition.X, startPosition.Y, true); } else { BresenhamMethod(startPosition.X, startPosition.Y, endPosition.X, endPosition.Y, true); } } }
public void Fill(IBPoint point, Color fillingColor) { _fillingColor = _bitmap.GetPixel(point.X, point.Y); Stack <Point> pixels = new Stack <Point>(); pixels.Push(new Point(point.X, point.Y)); while (pixels.Count > 0) { Point a = pixels.Pop(); if (!CanvasValidator.IsCursorOutsideCanvas(a)) { var col = _bitmap.GetPixel(a.X, a.Y); if (col.ToArgb().Equals(_fillingColor.ToArgb()) && !col.ToArgb().Equals(Setting.SelectedColor.ToArgb())) { _bitmap.SetPixel(a.X, a.Y, Setting.SelectedColor); pixels.Push(new Point(a.X - 1, a.Y)); pixels.Push(new Point(a.X + 1, a.Y)); pixels.Push(new Point(a.X, a.Y - 1)); pixels.Push(new Point(a.X, a.Y + 1)); } } } }
/// <summary> /// Should call algorithm /// </summary> public void DrawLine(IBPoint startPoint, IBPoint endPoint) { CreateLine(startPoint, endPoint); PaintPixel(startPoint.X, startPoint.Y, 255, 0, 0); PaintPixel(endPoint.X, endPoint.Y, 0, 150, 0); }
public CircleModel(List <IBPoint> points, IBPoint center, int radius) { Center = center; Radius = radius; _points = points; Size = Setting.SelectedPixelSize; }
public List <IBPoint> GetLinePoints(IBPoint start, IBPoint end) { _points = new List <IBPoint>(); CreateLine(start, end); return(_points); }
public IEnumerable <Point> GetCirclePoints(IBPoint center, int radius) { var points = new List <Point>(); //Init color var color = Color.Red; //Helping variables Point dHelperVar = new Point(3, 2 * radius); int p = 1 - radius; //First init of coordinates Point coordinates = new Point(0, radius); while (coordinates.X <= coordinates.Y) { points.Add(new Point(center.X + coordinates.X, center.Y + coordinates.Y)); points.Add(new Point(center.X + coordinates.X, center.Y - coordinates.Y)); points.Add(new Point(center.X - coordinates.X, center.Y + coordinates.Y)); points.Add(new Point(center.X - coordinates.X, center.Y - coordinates.Y)); points.Add(new Point(center.X + coordinates.Y, center.Y + coordinates.X)); points.Add(new Point(center.X + coordinates.Y, center.Y - coordinates.X)); points.Add(new Point(center.X - coordinates.Y, center.Y + coordinates.X)); points.Add(new Point(center.X - coordinates.Y, center.Y - coordinates.X)); if (p > 0) { p -= dHelperVar.Y; dHelperVar.Y -= 2; coordinates.Y--; } p += dHelperVar.X; dHelperVar.X += 2; coordinates.X++; } return(points); }
public bool DoesPointMatchPosition(IBPoint point) { return(X == point.X && Y == point.Y); }
public void Fill(IBPoint point) { _fillingColor = _bitmap.GetPixel(point.X, point.Y); }
public IEnumerable <Point> GetPointsOnLine(IBPoint start, IBPoint end) { return(GetPointsOnLine(start.X, start.Y, end.X, end.Y)); }
public void SetPixel(IBPoint point) { SetPixel(point.X, point.Y, point.Color.R, point.Color.G, point.Color.B, point.Color.A); }
public void SetPixel(IBPoint point) { SetPixel(point.X, point.Y, point.Color); }