WinForms Livecharts图表标题

我在WinForms中使用LiveCharts。 我没有使用WPF的原因是因为我不想在WPF中重写GUI,所以我试图看看我是否可以在WinForms中使LiveCharts工作。

我将LiveCharts控件作为图像保存为PDF,因此标题需要在图表本身上。

我找不到任何在图表上添加标题的function。 我试过的是以下内容:

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轴上方)。 任何的想法?

在此处输入图像描述

这似乎可以解决问题:

  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); }