找回密码
 立即注册

QQ登录

只需一步,快速开始

cf10082007

初级会员

22

主题

81

帖子

215

积分

初级会员

积分
215

活字格认证

cf10082007
初级会员   /  发表于:2014-8-20 13:40  /   查看:5598  /  回复:1
你好,我想通过ChartPanel在chart上画两条垂直线条,下面是我的代码,我想问的是,如何在C#代码中动态设置线条在坐标轴上的位置。DataPoint的值是只读的。谢谢         
<c1chart:C1Chart x:Name="_chart" Grid.Column="1" Grid.Row="1" VerticalAlignment="Stretch" >                    
                <c1chart:C1Chart.View>
                    <c1chart:ChartView>
                        <c1chart:ChartView.Layers>
                            <c1chart:ChartPanel >
                                <c1chart:ChartPanelObject x:Name="cursor1Vertical"
                                Attach="None"
                                Action="LeftMouseButtonDrag"
                                DataPoint="0.2, NaN"
                                VerticalContentAlignment="Stretch"
                                HorizontalAlignment="Center"
                                DataPointChanged="cursor1Vertical_DataPointChanged">
                                    <Border Width = "40" Background="Transparent" Padding="1" BorderThickness="1 0 0 0" >
                                        <Border.BorderBrush>
                                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                                <LinearGradientBrush.GradientStops>
                                                    <GradientStop Color="Red" Offset="0"/>
                                                    <GradientStop Color="Red" Offset="0.2"/>
                                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                                    <GradientStop Color="Red" Offset="0.8"/>
                                                    <GradientStop Color="Red" Offset="1"/>
                                                </LinearGradientBrush.GradientStops>
                                            </LinearGradientBrush>
                                        </Border.BorderBrush>
                                    </Border>
                                </c1chart:ChartPanelObject>                                
                            </c1chart:ChartPanel>
                        </c1chart:ChartView.Layers>
                        <c1chart:ChartView.AxisY>
                            <c1chart:Axis Scale="1">
                                <c1chart:Axis.ScrollBar>
                                    <c1chart:AxisScrollBar Height="Auto" />
                                </c1chart:Axis.ScrollBar>
                                <c1:Axis.Title>
                                    <TextBlock x:Name="axisYTitle" Text="g" TextAlignment="Center" Foreground="Crimson" FontSize="20"/>
                                </c1:Axis.Title>
                            </c1chart:Axis>
                        </c1chart:ChartView.AxisY>
                        <c1chart:ChartView.AxisX>
                            <c1chart:Axis Scale="1">
                                <c1chart:Axis.ScrollBar>
                                    <c1chart:AxisScrollBar Height="Auto" />
                                </c1chart:Axis.ScrollBar>
                                <c1:Axis.Title>
                                    <TextBlock x:Name="axisXTitle" Text="s" TextAlignment="Center" Foreground="Crimson" FontSize="20"/>
                                </c1:Axis.Title>
                            </c1chart:Axis>
                        </c1chart:ChartView.AxisX>
                    </c1chart:ChartView>
                </c1chart:C1Chart.View>
                <c1chart:C1ChartLegend/>
            </c1chart:C1Chart>

1 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-8-20 15:57:00
沙发
回复 1楼cf10082007的帖子

根据你贴出的代码,该XMAL代码用C#代码实现如下:
  1.             var obj = new ChartPanelObject()
  2.             {
  3.                 Action= ChartPanelAction.LeftMouseButtonDrag,               
  4.                 HorizontalAlignment = HorizontalAlignment.Center,
  5.                 VerticalAlignment = VerticalAlignment.Stretch
  6.             };

  7.             var bdr = new Border()

  8.             {               
  9.                 Background = new SolidColorBrush(Colors.Green) { Opacity = 0.4 },
  10.                 BorderBrush = new SolidColorBrush(Colors.Green),
  11.                 Width=40,
  12.                 BorderThickness = new Thickness(1, 0, 0, 0),

  13.             };
  14.             
  15.             obj.Content = bdr;
  16.             obj.DataPoint = new Point(1, 20d);
  17.             var pnl = new ChartPanel();
  18.   
  19.             pnl.Children.Add(obj);
  20.             this.chart1.View.Layers.Add(pnl);
复制代码

就是给ChartPanelObject的Content设置一个Border,然后添加到ChartPanel去,最后添加到C1Chart.View.Layers.

评分

参与人数 1满意度 +5 收起 理由
cf10082007 + 5 非常感谢,解决了我部分问题。

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部