Example #1
0
        public PointImage()
        {
            _points = new List<PointImagePoint>();
            _imageControl = new Image();

            InitializeComponent();

            _zoomControl.Child = _imageControl;

            TemporaryPoint = new PointImagePoint(true);
            SelectedPoint = new PointImagePoint(true);
            CrossColor = Colors.Black;
            SelectedColor = Colors.White;

            _imageControl.MouseLeftButtonDown += ImageMouseLeftButtonDown;
            _imageControl.MouseMove += ImageMouseMove;

            IsDeletionEnable = false;
        }
Example #2
0
 // On delete pressed if deletion is enabled, delete and raise ondelete event
 protected override void OnKeyDown(KeyEventArgs e)
 {
     if(e.Key == Key.Delete)
     {
         if(!SelectedPoint.IsNullPoint)
         {
             var removed = SelectedPoint;
             RemovePoint(SelectedPoint);
             SelectedPoint = new PointImagePoint(true);
             if(PointDeleted != null)
                 PointDeleted(this, new PointImageEventArgs()
                 {
                     OldImagePoint = removed
                 });
         }
     }
     base.OnKeyDown(e);
 }
Example #3
0
        protected void ImageMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            // Get mouse pos and transform to image source coords
            Point mpos = Mouse.GetPosition(_imageControl);
            mpos.X *= _finalImage.PixelWidth / _imageControl.ActualWidth;
            mpos.Y *= _finalImage.PixelHeight / _imageControl.ActualHeight;
            // If isn't within image then return
            if(mpos.X < 2 || mpos.Y < 2 &&
                mpos.X > _finalImage.PixelWidth - 3 ||
                mpos.Y > _finalImage.PixelHeight - 3)
            {
                SelectedPoint = new PointImagePoint() { IsNullPoint = true };
                return;
            }
            // Check if mouse hovers over point -> list of such points
            List<PointImagePoint> hoverPoints = new List<PointImagePoint>();
            foreach(var point in _points)
            {
                if(PointHitTest(mpos, point.Position))
                {
                    hoverPoints.Add(point);
                }
            }
            if(hoverPoints.Count > 0)
            {
                // If it hovers over ones then find closest one
                PointImagePoint hoverPoint = new PointImagePoint();
                double minDist = 999999;
                foreach(var point in hoverPoints)
                {
                    double dist = (point.Position.X - mpos.X) + (point.Position.Y - mpos.Y);
                    if(dist < minDist)
                    {
                        hoverPoint = point;
                        minDist = dist;
                    }
                }
                if(hoverPoint != _selectedPoint)// if clicked not on selected one, deselect it and select new one
                {
                    SelectedPoint = new PointImagePoint() { IsNullPoint = true };
                    SelectedPoint = hoverPoint;
                    _imageMouseXPos.Text = hoverPoint.Position.X.ToString();
                    _imageMouseYPos.Text = hoverPoint.Position.Y.ToString();
                }
            }
            else
            {
                // If cursor do not hover over any, set tempPoint as mpos
                SelectedPoint = new PointImagePoint() { IsNullPoint = true };
                MoveTempPoint(mpos);
                _imageMouseXPos.Text = mpos.X.ToString();
                _imageMouseYPos.Text = mpos.Y.ToString();
            }

            base.OnMouseLeftButtonDown(e);
        }
Example #4
0
 // Do not rise event
 public void SelectPointQuiet(PointImagePoint point)
 {
     if(_selectedPoint == point)
         return;
     PointImagePoint oldpoint = _selectedPoint;
     _selectedPoint = point;
     if(_selectedPoint.IsNullPoint) // Deselect old point
     {
         oldpoint.IsSelected = false;
         if(!oldpoint.IsNullPoint)
             DrawCross(oldpoint.Position, _finalImage, CrossColor);
     }
     else // Remove temp point if there's one and select point
     {
         RemoveTempPoint();
         DrawCross(_selectedPoint.Position, _finalImage, SelectedColor);
         _selectedPoint.IsSelected = true;
     }
 }
Example #5
0
 public void RemovePoint(PointImagePoint point)
 {
     _points.Remove(point);
     point.PositionChanged -= PointPositionChanged;
     RemoveCross(point.Position, _finalImage);
 }
Example #6
0
 public void AddPoint(PointImagePoint point)
 {
     point.ParentImage = this;
     _points.Add(point);
     point.PositionChanged += PointPositionChanged;
     DrawCross(point.Position, _finalImage, CrossColor);
 }
Example #7
0
 public PointImagePoint AcceptTempPoint(object value)
 {
     if(_tempPoint.IsNullPoint)
         return null;
     PointImagePoint newPoint = new PointImagePoint()
     {
         Position = _tempPoint.Position,
         Value = value,
         ParentImage = this
     };
     _points.Add(newPoint);
     newPoint.PositionChanged += PointPositionChanged;
     TemporaryPoint.IsNullPoint = true;
     return newPoint;
 }
Example #8
0
        private void UpdateMatchedPoints()
        {
            _camImageFirst.ResetPoints();
            _camImageSec.ResetPoints();

            foreach(var match in _matches)
            {
                PointImagePoint pipLeft = new PointImagePoint()
                {
                    Position = new Point(match.LeftPoint.X, match.LeftPoint.Y),
                    Value = match
                };
                PointImagePoint pipRight = new PointImagePoint()
                {
                    Position = new Point(match.RightPoint.X, match.RightPoint.Y),
                    Value = match
                };
                _camImageFirst.AddPoint(pipLeft);
                _camImageSec.AddPoint(pipRight);
            }
        }