如何将多个标题放入同一高度的图表中?
无论我选择什么参数,我都会得到类似的结果。我在问这里之前的最后一次尝试。
屏幕截图显示带有背景颜色的标题,以证明我的预期。 每当我添加2个标题时,WinForms会自动将它们置于不同的高度。
3.自定义添加行以显示我想要的结果。
我可以写一个方法,但它应该对resize事件做出反应,并且首选对接或对齐来解决这个问题。
所以现在标题都在图表区域内,因为我正在摆弄DockingOffsets等。我希望它们位于图表区域之上。
这是我的代码:
Friend Function CreateTitle(ByVal titleName As TitleName, ByVal chart As Chart) As Title
Dim font As Font = Nothing
Dim foreColor As Color = Nothing
Dim backColor As Color = Nothing
Dim alignment As ContentAlignment = Nothing
Dim dockingOffset As Integer
Dim name As String = String.Empty
Dim titleText As String = String.Empty
Dim dockedToChartArea As String = String.Empty
Dim docking As Docking = Nothing
' Default settings
font = New Font("Arial", 12)
foreColor = color.blue
dockingOffset = 0
dockedToChartArea = chart.ChartAreas(0).Name
' Custom settings
Select Case titleName
Case ChartControls.TitleName.ComponentName
name = TITLENAME_COMP
titleText = chart.Name
alignment = ContentAlignment.BottomLeft
dockingOffset = 0
docking = DataVisualization.Charting.Docking.Top
backColor = Color.Coral
Case ChartControls.TitleName.TrafficLight
name = TITLENAME_TRAFFICLIGHT
titleText = "+34.6% / 1800 €"
alignment = ContentAlignment.TopRight
dockingOffset = 0
docking = DataVisualization.Charting.Docking.Top
backColor = Color.Beige
End Select
Dim title As New Title(titleText)
title.Name = name
title.Font = font
title.ForeColor = foreColor
title.BackColor = backColor
title.Alignment = alignment
title.Position = New ElementPosition()
title.Docking = docking
title.DockingOffset = dockingOffset
title.DockedToChartArea = dockedToChartArea
Return title
End Function
我用不同的参数调用此方法两次,并将它们添加到我的标题集合中。
答案 0 :(得分:0)
由于要求,我不得不改变我的解决方法。如果根据图表的数量大小不同,那么使我的解决方法适用于1 .. n图表会非常耗时,因为标签需要不同的大小和位置。所以我必须找到一个更好的解决方案。
我有一个有2个不同标题的枚举。以下属性很重要。
`Friend Function CreateTitle(ByVal titleName As TitleName) As Title
Dim titleText As String = String.Empty
Dim alignment As ContentAlignment
' Custom settings
Select Case titleName
Case ChartControls.TitleName.Title1
titleText = "Title1"
alignment = ContentAlignment.MiddleLeft
Case ChartControls.TitleName.Title2
titleText = "Title2"
alignment = ContentAlignment.TopRight
End Select
Dim title As New Title()
title.Text = titleText
title.Font = New Font("Arial", 12)
title.BackColor = Color.Transparent
If titleName.Equals(CCT.ChartControls.TitleName.Title2) Then
title.Position = New ElementPosition(0, 3, 94, 5)
Else
title.DockingOffset = 0
End If
title.Alignment = alignment
Return title
End Function`