void MovableChartLabelPoint_MouseMove(object sender, MouseEventArgs e)
 {
     if (isMoving && startPt.X != 0 && startPt.Y != 0)
     {
         Offset = (Point)((e.GetPosition(null) - startPt));
         ChartLabels lbls = this.Parent as ChartLabels;
         lbls.ForceArrange();
     }
 }
        public DecimatingArrangerSample()
        {
            InitializeComponent();

              var arranger = new DecimatingLabelArranger();
              lbls = new ChartLabels();

              chart.View.Layers.Add(lbls);
              NewData(2);

              cbDecimation.Checked += (s, e) => lbls.LabelArranger = arranger;
              cbDecimation.Unchecked += (s, e) => lbls.LabelArranger = null;
        }
        public PieArrangerSample()
        {
            InitializeComponent();

              chart.ChartType = ChartType.Pie;

              var arranger = new PieArranger();
              lbls = new ChartLabels() { LabelArranger = arranger };
              chart.View.Layers.Add(lbls);

              NewData();

              SizeChanged += (s, e) => lbls.EndUpdate();
        }
        public OptimalArrangerSample()
        {
            InitializeComponent();

              var arranger = new OptimalLabelArranger();
              lbls = new ChartLabels() { LabelArranger = arranger };

              chart.View.Layers.Add(lbls);
              chart.MouseLeftButtonDown += new MouseButtonEventHandler(chart_MouseLeftButtonDown);

              NewData(5);

              cbHideOutside.Checked += (s, e) => arranger.HideLabelsOutsideBorder = true;
              cbHideOutside.Unchecked += (s, e) => arranger.HideLabelsOutsideBorder = false;
        }
        public SimpleArrangerSample()
        {
            InitializeComponent();

              // first layer with automatic label positioning
              var arranger = new SimpleArranger();
              lbls = new ChartLabels() { LabelArranger = arranger };
              chart.View.Layers.Add(lbls);

              // second layer with user-movable labels
              lbls2 = new ChartLabels();
              chart.View.Layers.Add(lbls2);
              lbls2.LayoutUpdated += new EventHandler(lbls2_LayoutUpdated);

              NewData(5);

              chart.Actions.Add(new ZoomAction());
              chart.Actions.Add(new TranslateAction() { Modifiers = ModifierKeys.Shift });
              chart.Actions.Add(new ScaleAction() { Modifiers = ModifierKeys.Control });

              chart.MouseLeftButtonDown += new MouseButtonEventHandler(chart_MouseLeftButtonDown);
        }