ComponentOne Chart为图表创建可移动的指示线

作者:控件中国网   出处:控件中国网   2015-12-29 14:30:26   阅读:7

ComponentOne Chart是ComponentOne Studio for WPF中的一个子控件,主要帮助开发人员进行数据的图表可视化显示,本文主要介绍如何在C1Chart for WPF中创建一个可以移动的线,使得当鼠标拖拽的时候,可以在Chart上自由移动。为了显示拖拽的线,需要创建一个Marker,本文创建一条竖直的Marker,通过创建ChartPanelObject实现,将ChartPanelObject的Action属性设置为LeftButtonDrag,实现鼠标左键的拖拽。使用ChartPanelObject创建竖直的线,代码参考:
image.png
ChartPanelObject CreateMarker(bool isHorizontal)
        {
            var obj = new ChartPanelObject();
            var bdr = new Border()
            {
                BorderBrush = Background = new SolidColorBrush(Color.FromArgb(150, 255, 2, 2)),
                Padding = new Thickness(2),
            };
            var tb = new TextBlock();
            var bind = new Binding();
            bind.Source = obj;
 
            if (isHorizontal)
            {
                bdr.BorderThickness = new Thickness(0, 4, 0, 0);
                bdr.Margin = new Thickness(0, -1, 0, 0);
                obj.HorizontalContentAlignment = HorizontalAlignment.Stretch;
                bind.StringFormat = "y={0:#.#}";
                bind.Path = new PropertyPath("DataPoint.Y");
                obj.DataPoint = new Point(double.NaN, 0.5);
            }
            else
            {
                bdr.BorderThickness = new Thickness(4, 0, 0, 0);
                bdr.Margin = new Thickness(-1, 0, 0, 0);
                obj.VerticalContentAlignment = VerticalAlignment.Stretch;
                bind.StringFormat = "x={0:#.#}";
                bind.Path = new PropertyPath("DataPoint.X");
                obj.DataPoint = new Point(2, double.NaN);
            }
 
            tb.SetBinding(TextBlock.TextProperty, bind);
            bdr.Child = tb;
 
            bdr.IsHitTestVisible = true;
 
            obj.Content = bdr;
 
            return obj;
        }
通过bind.Path = new PropertyPath("DataPoint.X"),让这条拖拽的线展示X轴的数据。
 实现鼠标左键的代码参考:
var vmarker = CreateMarker(false);
            pnl.Children.Add(vmarker);
            vmarker.Action = ChartPanelAction.LeftMouseButtonDrag;
 
            chart.View.Layers.Add(pnl);
 
Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat