Quanweiz 发表于 2022-11-28 11:10:54

chart 有没有办法设置曲线不同的值范围不同的颜色?



通过下面的方法试了,没有达到想要的效果,需要实现的是 if (data.S11 > -18) 大于-18的Yellow,小于的红色。



      float previousX, previousY;
      int sequentialIncrement, sequentialDecrement;
      private void Series_SymbolRendered(object sender, RenderSymbolEventArgs e)
      {


            if (e.Index > 0)
            {
                Color lineColor;
                DataItem data = (DataItem)e.Item;

                if (data.S11 > -18)
                {
                  lineColor = Color.Yellow;
                }
                else
                {
                  lineColor = Color.Red;
                }


                e.Engine.SetStroke(new SolidBrush(lineColor));
                e.Engine.SetStrokeThickness(0.5);
                e.Engine.DrawLine(previousX, previousY, e.Point.X, e.Point.Y);
            }

            previousX = e.Point.X;
            previousY = e.Point.Y;
      }

Quanweiz 发表于 2022-11-28 11:47:39




例如附件的事例,我想设置50值以上的曲线红色,以下的绿色。怎么实现?

Richard.Ma 发表于 2022-11-28 11:54:50

本帖最后由 Richard.Ma 于 2022-11-28 12:27 编辑

请参考附件中的代码





最终效果,大于50的点,以及该点两端的线是红色,你也可以根据自己的业务逻辑修改



Quanweiz 发表于 2022-11-28 13:08:38



有没有办法设置两个点同时达到条件时才改变线的颜色?

Richard.Ma 发表于 2022-11-28 13:35:35

修改代码就行,具体可以跟你你自己的业务需要,这里只是展示自定义绘制的方法

Quanweiz 发表于 2022-11-28 13:56:47




还有就是这个线宽在分辨率低的时候线比较粗,比我实际画的线粗好多,一直没有找到方法改变。

Richard.Ma 发表于 2022-11-28 14:06:25


要改变自己绘制的线条粗细,只需要更改DrawLine时Pen的线条粗细就行,可以改任意宽度

要改变series本身绘制的线条宽度,可以通过样式直接设置,extraSerie.Style.StrokeWidth = 1;

如下图,红色是后绘制的,绿色是自动绘制的,都改变了粗细

Quanweiz 发表于 2022-11-28 14:11:31




extraSerie.Style.StrokeWidth = 1;线粗我设置这个可以改变了。

Quanweiz 发表于 2022-11-28 15:19:21

已经处理好了。

Richard.Ma 发表于 2022-11-28 15:29:32

好的,你问到的绘图区域可以这样设置边框和背景

            flexChart1.PlotStyle.FillColor = Color.LightYellow;
            flexChart1.PlotStyle.StrokeColor = Color.Red;
            flexChart1.PlotStyle.StrokeWidth = 3;


有其他问题,欢迎发新帖咨询
页: [1]
查看完整版本: chart 有没有办法设置曲线不同的值范围不同的颜色?