我想在InnerPlotPosition
上找到几个图表。
正如您在图1中所示,当我尝试用InnerPlotPosition
定位时,当我尝试自己绘制图表区域并关闭自动位置时,我无法使Y轴对齐。图2是所需的输出
见代码。
'.ChartAreas("chr" + type).InnerPlotPosition.Auto = False
' .ChartAreas("chr" + type).InnerPlotPosition.Width = 80
'.ChartAreas("chr" + type).InnerPlotPosition.Height = 90
图片1
图2
答案 0 :(得分:1)
图表中元素的绝对定位是你所知道的皇家痛苦。您需要注意以下
要将百分比值转换为绝对值,您需要进行一些计算。例如,您希望在图表区域周围有一个恒定的边框(以像素为单位),您可以执行以下操作:
首先设置定义每边边框大小的变量值(以像素为单位):
Dim ChartBorderLeft as Integer = 100 'Pixels on the left
Dim ChartBorderRight as Integer = 100 'Pixels on the right
Dim ChartBorderTop as Integer = 100 'Pixels on the top
Dim ChartBorderBottom as Integer = 100 'Pixels on the bottom
然后根据当前图表大小和边界变量调整定义代码中InnerPlotPosition的位置和大小的百分比。
chart.ChartAreas(0).InnerPlotPosition.X = CSng(ChartBorderLeft / chart.Width) * 100 'Left border
chart.ChartAreas(0).InnerPlotPosition.Y = CSng(ChartBorderTop / chart.Height) * 100 'Top Border
chart.ChartAreas(0).InnerPlotPosition.Width = CSng((chart.Width - ChartBorderLeft - ChartBorderRight) / chart.Width) * 100
chart.ChartAreas(0).InnerPlotPosition.Height = CSng((chart.Height - ChartBorderTop - ChartBorderBottom) / chart.Height) * 100
chart
是您要修改的图表对象。该代码仅考虑图表中的单个图表区域。我放弃了拥有多个图表区域的想法,而是使用了我需要的多个图表。
ChartBorderLeft
,ChartBorderRight
等是每边的边框(以像素为单位)。轴的位置是InnerPlotPosition
的边界,因此如果之后边界大小相同,它会很好地排列。
对于标题和数字,您应该计划大约100px边框。您还可以将代码放在图表的resize事件处理程序中,以便在图表大小更改时调整绘图位置。
答案 1 :(得分:1)
chart1.ChartAreas [a] .AlignWithChartArea = chart1.ChartAreas [a - 1] .Name;