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);
         }
     }
 }
Example #2
0
        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);
 }
Example #8
0
 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));
 }
Example #10
0
 public void SetPixel(IBPoint point)
 {
     SetPixel(point.X, point.Y, point.Color.R, point.Color.G, point.Color.B, point.Color.A);
 }
Example #11
0
 public void SetPixel(IBPoint point)
 {
     SetPixel(point.X, point.Y, point.Color);
 }