首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF C# DynamicDataDisplay -更改DateTimeAxis颜色

WPF C# DynamicDataDisplay -更改DateTimeAxis颜色
EN

Stack Overflow用户
提问于 2013-03-01 00:55:03
回答 1查看 976关注 0票数 2

我想知道如何更改我的d3绘图仪日期时间轴的颜色。

我想要更改的颜色是两条线之间的棕色和白色背景色。

如果我这么做了:

它只改变了第一个棕色条上面的东西。

可以改变这两个条的颜色吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-08 00:25:21

奇怪的是,我碰巧也在做同样的事情。事实证明,这些颜色是在MayorDateTimeLabelProvider.cs中硬编码的(我已经注意到下面注释中的行)。如果您使用的是已编译的DLL,则无法更改这些值。就我个人而言,D3非常不成熟,所以我保留了自己的构建,并根据需要进行更改以扩展它(例如在本例中!)。

代码语言:javascript
运行
复制
public override UIElement[] CreateLabels(ITicksInfo<DateTime> ticksInfo)
{
    object info = ticksInfo.Info;
    var ticks = ticksInfo.Ticks;
    UIElement[] res = new UIElement[ticks.Length - 1];
    int labelsNum = 3;

    if (info is DifferenceIn)
    {
        DifferenceIn diff = (DifferenceIn)info;
        DateFormat = GetDateFormat(diff);
    }
    else if (info is MayorLabelsInfo)
    {
        MayorLabelsInfo mInfo = (MayorLabelsInfo)info;
        DifferenceIn diff = (DifferenceIn)mInfo.Info;
        DateFormat = GetDateFormat(diff);
        labelsNum = mInfo.MayorLabelsCount + 1;

        //DebugVerify.Is(labelsNum < 100);
    }

    DebugVerify.Is(ticks.Length < 10);

    LabelTickInfo<DateTime> tickInfo = new LabelTickInfo<DateTime>();
    for (int i = 0; i < ticks.Length - 1; i++)
    {
        tickInfo.Info = info;
        tickInfo.Tick = ticks[i];

        string tickText = GetString(tickInfo);

        Grid grid = new Grid
        {
            Background = Brushes.Beige // **** HARD CODED HERE
        };
        Rectangle rect = new Rectangle
        {
            Stroke = Brushes.Peru,     // **** AND HERE
            StrokeThickness = 2
        };
        Grid.SetColumn(rect, 0);
        Grid.SetColumnSpan(rect, labelsNum);

        for (int j = 0; j < labelsNum; j++)
        {
            grid.ColumnDefinitions.Add(new ColumnDefinition());
        }

        grid.Children.Add(rect);

        for (int j = 0; j < labelsNum; j++)
        {
            var tb = new TextBlock
            {
                Text = tickText,
                HorizontalAlignment = HorizontalAlignment.Center,
                Margin = new Thickness(0, 3, 0, 3)
            };
            Grid.SetColumn(tb, j);
            grid.Children.Add(tb);
        }

        ApplyCustomView(tickInfo, grid);

        res[i] = grid;
    }

    return res;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15141204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档