yk6802 发表于 2021-7-26 17:50:15

Chart样式的问题

最近做一个机床数据采集项目,需要生成如下图的机床状态图表:
https://gcdn.grapecity.com.cn/forum.php?mod=image&aid=149474&size=300x300&key=8bd84f08d14d84be&nocache=yes&type=fixnone不同的颜色代表不同的状态:如绿色代表运行,黄色为待机,红色为故障,X轴以时间为轴。不知道C1chart能不能做出这个效果。

yk6802 发表于 2021-7-26 17:50:16

本帖最后由 yk6802 于 2021-8-20 10:22 编辑


状态彩条图已经实现了,上图最下方的彩条就是,就是运用了C1Chart中的StepArea实现的,代码贴出,与大家共享。
前台代码:
                        <c1:C1Chart Name="RLView" Height="50" Grid.Row="1" Grid.ColumnSpan="2">
                            <c1:C1Chart.Data>
                              <c1:ChartData>
                                    <c1:XYDataSeries Name="StopLine" Label="停机" XValueBinding="{Binding DT}" ValueBinding="{Binding Stop}" ChartType="StepArea" ConnectionStroke="DarkGray" ConnectionFill="DarkGray"/>
                                    <c1:XYDataSeries Name="RunLine" Label="运行" XValueBinding="{Binding DT}" ValueBinding="{Binding Run}" ChartType="StepArea" ConnectionStroke="DarkGreen" ConnectionFill="DarkGreen"/>
                                    <c1:XYDataSeries Name="HandLine" Label="调试" XValueBinding="{Binding DT}" ValueBinding="{Binding Debug}" ChartType="StepArea" ConnectionStroke="DarkMagenta" ConnectionFill="DarkMagenta"/>
                                    <c1:XYDataSeries Name="DebugLine" Label="手轮" XValueBinding="{Binding DT}" ValueBinding="{Binding Manual}" ChartType="StepArea" ConnectionStroke="Red" ConnectionFill="Red"/>
                                    <c1:XYDataSeries Name="FreeLine" Label="待机" XValueBinding="{Binding DT}" ValueBinding="{Binding Free}" ChartType="StepArea" ConnectionStroke="Yellow" ConnectionFill="Yellow"/>
                              </c1:ChartData>
                            </c1:C1Chart.Data>
                            <c1:C1Chart.View>
                              <c1:ChartView>
                                    <c1:ChartView.AxisY>
                                        <c1:Axis MinScale="1"/>
                                    </c1:ChartView.AxisY>
                                    <c1:ChartView.AxisX>
                                        <c1:Axis IsTime="True" AnnoFormat="HH">
                                          <c1:Axis.ScrollBar>
                                                <c1:AxisScrollBar/>
                                          </c1:Axis.ScrollBar>
                                        </c1:Axis>
                                    </c1:ChartView.AxisX>
                              </c1:ChartView>
                            </c1:C1Chart.View>
                        </c1:C1Chart>

后台代码:

      public class StatusModel
      {
            public DateTime DT { get; set; }
            public bool Stop { get; set; }
            public bool Free { get; set; }
            public bool Debug { get; set; }
            public bool Manual { get; set; }
            public bool Run { get; set; }
            public double TS { get; set; }
      }

状态数据类实例化为一个List列表作为数据源直接绑定即可。

Richard.Ma 发表于 2021-7-26 18:28:55

本帖最后由 Richard.Ma 于 2021-7-27 09:43 编辑

您好,帮您验证了一下,目前C1Chart没有此类的图表,无法实现您需要的效果

yk6802 发表于 2021-8-2 10:52:06

这几天研究了一下,通过StepArea类型的图表可以实现类似的效果,就是麻烦点。等做完以后我会提供源码,与大家分享。

Richard.Ma 发表于 2021-8-2 12:03:43

:hjyzw:,期待您分享代码

Richard.Ma 发表于 2021-8-20 12:01:30

感谢分享思路和代码
页: [1]
查看完整版本: Chart样式的问题