C# ZedGraph中曲线项的不同颜色填充是否可行?

C# ZedGraph中曲线项的不同颜色填充是否可行?,c#,zedgraph,C#,Zedgraph,我有一条带圆点的单曲线。是否可以将CurveItemPoints设置为不同的填充颜色?我会给不同的颜色设置明显的点。简短回答:不 为了做类似的事情,我创建了额外的SymbolObj类,并将该类的对象添加到窗格中,以标记一些重要的点 下面是一些代码: internal class SymbolObj : ZedGraph.GraphObj { private ZedGraph.Symbol symbol; public SymbolObj(ZedGraph.SymbolType

我有一条带圆点的单曲线。是否可以将CurveItemPoints设置为不同的填充颜色?我会给不同的颜色设置明显的点。

简短回答:不

为了做类似的事情,我创建了额外的
SymbolObj
类,并将该类的对象添加到窗格中,以标记一些重要的点

下面是一些代码:

internal class SymbolObj : ZedGraph.GraphObj
{
    private ZedGraph.Symbol symbol;

    public SymbolObj(ZedGraph.SymbolType type, Color color, PointF position, float size)
    {
        this.symbol = new ZedGraph.Symbol(type, color);
        this.symbol.Size = size;
        if((type== SymbolType.Plus || type == SymbolType.Star || type== SymbolType.HDash || type == SymbolType.XCross || type == SymbolType.VDash) && size >= 4)
            this.symbol.Border.Width = 3f;
        this.symbol.Fill.IsVisible = true;
        this.symbol.Fill.Color = color;
        this.Location.X = position.X;
        this.Location.Y = position.Y;
    }

    public SymbolObj(SymbolObj rhs)
        : base(rhs)
    {
        this.symbol = new Symbol(rhs.symbol);
    }

    public override void Draw(Graphics g, ZedGraph.PaneBase pane, float scaleFactor)
    {
        if (((GraphPane)pane).XAxis.Type == AxisType.Text)
        {
            if (Location.X > 0)
            {
                var xx = new double[(int)Location.X];
                var yy = new double[(int)Location.X];

                for (int i = 0; i < Location.X; i++)
                {
                    xx[i] = i;
                    yy[i] = double.NegativeInfinity;

                }
                yy[yy.Count() - 1] = Location.Y;
                LineItem line = new LineItem("Symbol", xx, yy, symbol.Fill.Color, SymbolType.None);
                symbol.Draw(g, (GraphPane)pane, line, scaleFactor, false);
            }
        }
        else
        {
            LineItem line = new LineItem("Symbol", new double[] { Location.X }, new double[] { Location.Y }, symbol.Fill.Color, SymbolType.None);
            symbol.Draw(g, (GraphPane)pane, line, scaleFactor, false);
        }
    }

    public override void GetCoords(ZedGraph.PaneBase pane, Graphics g, float scaleFactor, out string shape, out string coords)
    {
        shape = "point";
        coords = this.Location.X.ToString() + ", " + this.Location.Y.ToString();
    }
 }
内部类SymbolObj:ZedGraph.graphbobj
{
私人ZedGraph.Symbol;
公共SymbolObj(ZedGraph.SymbolType类型、颜色、PointF位置、浮点大小)
{
this.symbol=新的ZedGraph.symbol(类型、颜色);
this.symbol.Size=尺寸;
如果((type==SymbolType.Plus | | type==SymbolType.Star | | type==SymbolType.HDash | | type==SymbolType.XCross | type==SymbolType.VDash)&&size>=4)
this.symbol.Border.Width=3f;
this.symbol.Fill.IsVisible=true;
this.symbol.Fill.Color=颜色;
此.Location.X=位置.X;
此.Location.Y=位置.Y;
}
公共SymbolObj(SymbolObj rhs)
:底座(右侧)
{
此符号=新符号(rhs符号);
}
公共覆盖无效绘制(图形g、ZedGraph.PaneBase窗格、浮点比例因子)
{
if(((图形平面)窗格).XAxis.Type==AxisType.Text)
{
如果(位置X>0)
{
var xx=新的双精度[(int)Location.X];
var yy=新的双精度[(int)Location.X];
对于(int i=0;i
简短回答:否

为了做类似的事情,我创建了额外的
SymbolObj
类,并将该类的对象添加到窗格中,以标记一些重要的点

下面是一些代码:

internal class SymbolObj : ZedGraph.GraphObj
{
    private ZedGraph.Symbol symbol;

    public SymbolObj(ZedGraph.SymbolType type, Color color, PointF position, float size)
    {
        this.symbol = new ZedGraph.Symbol(type, color);
        this.symbol.Size = size;
        if((type== SymbolType.Plus || type == SymbolType.Star || type== SymbolType.HDash || type == SymbolType.XCross || type == SymbolType.VDash) && size >= 4)
            this.symbol.Border.Width = 3f;
        this.symbol.Fill.IsVisible = true;
        this.symbol.Fill.Color = color;
        this.Location.X = position.X;
        this.Location.Y = position.Y;
    }

    public SymbolObj(SymbolObj rhs)
        : base(rhs)
    {
        this.symbol = new Symbol(rhs.symbol);
    }

    public override void Draw(Graphics g, ZedGraph.PaneBase pane, float scaleFactor)
    {
        if (((GraphPane)pane).XAxis.Type == AxisType.Text)
        {
            if (Location.X > 0)
            {
                var xx = new double[(int)Location.X];
                var yy = new double[(int)Location.X];

                for (int i = 0; i < Location.X; i++)
                {
                    xx[i] = i;
                    yy[i] = double.NegativeInfinity;

                }
                yy[yy.Count() - 1] = Location.Y;
                LineItem line = new LineItem("Symbol", xx, yy, symbol.Fill.Color, SymbolType.None);
                symbol.Draw(g, (GraphPane)pane, line, scaleFactor, false);
            }
        }
        else
        {
            LineItem line = new LineItem("Symbol", new double[] { Location.X }, new double[] { Location.Y }, symbol.Fill.Color, SymbolType.None);
            symbol.Draw(g, (GraphPane)pane, line, scaleFactor, false);
        }
    }

    public override void GetCoords(ZedGraph.PaneBase pane, Graphics g, float scaleFactor, out string shape, out string coords)
    {
        shape = "point";
        coords = this.Location.X.ToString() + ", " + this.Location.Y.ToString();
    }
 }
内部类SymbolObj:ZedGraph.graphbobj
{
私人ZedGraph.Symbol;
公共SymbolObj(ZedGraph.SymbolType类型、颜色、PointF位置、浮点大小)
{
this.symbol=新的ZedGraph.symbol(类型、颜色);
this.symbol.Size=尺寸;
如果((type==SymbolType.Plus | | type==SymbolType.Star | | type==SymbolType.HDash | | type==SymbolType.XCross | type==SymbolType.VDash)&&size>=4)
this.symbol.Border.Width=3f;
this.symbol.Fill.IsVisible=true;
this.symbol.Fill.Color=颜色;
此.Location.X=位置.X;
此.Location.Y=位置.Y;
}
公共SymbolObj(SymbolObj rhs)
:底座(右侧)
{
此符号=新符号(rhs符号);
}
公共覆盖无效绘制(图形g、ZedGraph.PaneBase窗格、浮点比例因子)
{
if(((图形平面)窗格).XAxis.Type==AxisType.Text)
{
如果(位置X>0)
{
var xx=新的双精度[(int)Location.X];
var yy=新的双精度[(int)Location.X];
对于(int i=0;i
我很高兴这有帮助。如果我的回答对你有帮助,你应该接受,如果你觉得有价值,你应该投票。这是stackoverflow的习惯:)我很高兴它对你有帮助。如果我的回答对你有帮助,你应该接受,如果你觉得有价值,你应该投票。这是stackoverflow的习惯:)