public void SetMark(int pointIndex, StepLineArea area)
 {
     if (_markedArea != area || _markedPoint != pointIndex)
     {
         _markedArea = area;
     }
     _markedPoint = pointIndex;
     Redraw();
 }
        private void DrawMark(WriteableBitmap writeableBitmap, double cx, double cy, double px, double py, StepLineArea area)
        {
            int x;
            int y;

            switch (area)
            {
            case StepLineArea.None:
                return;

            case StepLineArea.Horizontal:
                x = (writeableBitmap.CheckX(GetClientX(px)) + writeableBitmap.CheckX(GetClientX(cx))) / 2;
                y = writeableBitmap.CheckY(GetClientY(py));
                break;

            case StepLineArea.PointPrev:
                x = writeableBitmap.CheckX(GetClientX(cx));
                y = writeableBitmap.CheckY(GetClientY(py));
                break;

            case StepLineArea.Vertical:
                x = writeableBitmap.CheckX(GetClientX(cx));
                y = (writeableBitmap.CheckY(GetClientY(py)) + writeableBitmap.CheckY(GetClientY(cy))) / 2;
                break;

            case StepLineArea.PointCurrent:
                x = writeableBitmap.CheckX(GetClientX(cx));
                y = writeableBitmap.CheckY(GetClientY(cy));
                break;

            default:
                throw new ArgumentOutOfRangeException("area");
            }
            if (x < 3 || x > writeableBitmap.PixelWidth - 3 || y < 3 || y > writeableBitmap.PixelHeight - 3)
            {
                return;
            }
            writeableBitmap.FillEllipseCentered(x, y, 3, 3, _intColor);
        }
 public StepLineHitTestResult(bool success, StepLineArea area, int pointIndex)
     : base(success)
 {
     Area       = area;
     PointIndex = pointIndex;
 }