首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows窗体图表中VB.NET多个高度相同的标题

在windows窗体图表中VB.NET多个高度相同的标题
EN

Stack Overflow用户
提问于 2016-06-29 20:19:17
回答 1查看 424关注 0票数 0

如何将多个标题放入同一高度的图表中?

无论我选择什么参数,我都会得到类似的结果。我在这里提问前的最后一次尝试。

屏幕截图显示了标题的背景颜色,以证明我所期望的。每当我添加两个标题时,WinForms会自动将它们放在不同的高度。

3.行是自定义添加的,目的是向您显示我希望得到的结果。

我可以写一个方法,但它应该对调整事件大小做出反应,最好用停靠或对齐来解决这个问题。

所以现在标题在chartarea里面,因为我在摆弄DockingOffsets等等,我想让它们在chartarea的顶部。

下面是我的代码:

代码语言:javascript
复制
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

我使用不同的参数调用此方法两次,并将它们添加到我的Titles集合中。

EN

回答 1

Stack Overflow用户

发布于 2016-07-07 18:29:12

由于需求,我不得不改变我的变通方法。让我的变通方法在%1下工作会非常耗时。N个大小不同的图表,这取决于图表的数量,因为标签将需要不同的大小和位置。所以我必须找到一个更好的解决方案。

我有一个具有2个不同标题的枚举。以下属性很重要。

  • Backcolor = Transparent
  • Only对于一个标题,请选择自定义位置。这会将属性"Position.Auto“转换为false。请看一下我最后的if子句。因此,因为另一个属性"Position.Auto“保持为真,因为您不需要手动更改它,所以您可以简单地分配一个偏移量,同时手动将另一个标题调整到相同的高度。

代码语言:javascript
复制
`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`

看起来是这样的:两个相同高度的标题。

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

https://stackoverflow.com/questions/38099331

复制
相关文章

相似问题

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