Название диаграммы WinForms Livecharts

Я использую LiveCharts в WinForms. Причина, по которой я не использую WPF, заключается в том, что я не хочу переписывать графический интерфейс в WPF, поэтому я пытаюсь посмотреть, смогу ли я заставить LiveCharts работать в WinForms.

Я сохраняю элемент управления LiveCharts в виде изображения в формате PDF, поэтому заголовок должен быть на самой диаграмме.

Я не могу найти никаких функций для добавления заголовка на график. Я пробовал следующее:

        VisualElement title = new VisualElement();
        title.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
        title.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        title.X = 0.5;
        title.Y = maxYVal;

        TextBlock titleText = new TextBlock();
        titleText.Text = chartName;
        var newTitleFont = HelperFunctions.NewTypeFaceFromFont(titleFont);
        titleText.FontFamily = newTitleFont.FontFamily;
        titleText.FontStyle = newTitleFont.Style;
        titleText.FontSize = titleFont.Size;
        title.UIElement = titleText;

        cartChart.VisualElements.Add(title);

Приведенный выше код добавляет только метку на саму диаграмму (в пределах диапазона оси Y). Заголовок должен быть независимым (над осью Y). Есть идеи?

введите здесь описание изображения


person ceds    schedule 08.03.2017    source источник


Ответы (1)


Кажется, это помогает:

    public static TableLayoutPanel AddTitleToChart(Control chart,string title, System.Drawing.Font titleFont)
    {

        Label label = new Label();
        label.AutoSize = true;
        label.Dock = System.Windows.Forms.DockStyle.Fill;
        label.Font = titleFont;
        label.Location = new System.Drawing.Point(3, 0);
        label.Name = "label1";
        label.Size = new System.Drawing.Size(1063, 55);
        label.TabIndex = 0;
        label.Text = title;
        label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
        label.BackColor = chart.BackColor;

        chart.Dock = System.Windows.Forms.DockStyle.Fill;

        TableLayoutPanel tableLayoutPanel = new TableLayoutPanel();
        tableLayoutPanel.AutoSize = true;
        tableLayoutPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
        tableLayoutPanel.BackColor = System.Drawing.Color.White;
        tableLayoutPanel.ColumnCount = 1;
        tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 1069F));
        tableLayoutPanel.Controls.Add(label, 0, 0);
        tableLayoutPanel.Controls.Add(chart, 0, 1);
        tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
        tableLayoutPanel.Location = new System.Drawing.Point(0, 0);
        tableLayoutPanel.Name = "tableLayoutPanel1";
        tableLayoutPanel.RowCount = 2;
        tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
        tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
        tableLayoutPanel.Size = new System.Drawing.Size(1069, 662);
        tableLayoutPanel.TabIndex = 2;

        return (tableLayoutPanel);
    }
person ceds    schedule 09.03.2017
comment
Не то, что я искал, но это решило проблему с внешним видом заголовка. - person Muhammad Umar; 22.01.2018