我正在使用图表 (DataVisualization.Charting.Chart
) 并让图表决定轴标签的字体大小(每个轴的 IsLabelAutoFit = True
)。图表绘制完成后,我想知道实际使用的字体大小。 Microsoft 文档称 LabelStyle.Font
适用于 Get
和 Set
。但是,Get 始终返回默认字体大小 (8 pts),而不是实际使用的字体大小。如何获取图表使用的真实字体大小?
Dim OriginalXLabelFont As Font = thisChart.ChartAreas("ChartArea1").AxisX.LabelStyle.Font
Dim OriginalXTitleFont As Font = thisChart.ChartAreas("ChartArea1").AxisX.TitleFont
我希望 OriginalXLabelFont
是图表使用的实际字体大小,但它始终只是默认大小。另一方面,OriginalXTitleFont
正确地为我提供了所使用的实际标题字体大小。但标题字体是固定的,绘制图表时不会动态变化。如何获取绘制图表的轴标签字体大小?
最佳答案
我四处查看,发现图表使用的实际字体大小位于轴调用 autoLabelFont 的非公共(public)字段中。要访问它,我必须使用反射。
Dim OriginalXLabelFont As Font = GetPrivateFieldValue(thisChart.ChartAreas("ChartArea1").AxisX, "autoLabelFont")
...
Private Function GetPrivateFieldValue(ByVal thisObject As Object, ByVal propName As String) As Object
If IsNothing(thisObject) Then Return Nothing
Dim fi As System.Reflection.FieldInfo = thisObject.GetType().GetField(propName, Reflection.BindingFlags.IgnoreCase Or
Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
If IsNothing(fi) Then Return Nothing
Return fi.GetValue(thisObject)
End Function
关于vb.net - 如何获取图表轴标签使用的实际字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58504950/