vb.net - 如何获取图表轴标签使用的实际字体大小

标签 vb.net charts

我正在使用图表 (DataVisualization.Charting.Chart) 并让图表决定轴标签的字体大小(每个轴的 IsLabelAutoFit = True)。图表绘制完成后,我想知道实际使用的字体大小。 Microsoft 文档称 LabelStyle.Font 适用于 GetSet。但是,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/

相关文章:

.net - CSS 中的 Base64 编码图像

c# - 手动激活/停用自定义控件的对齐线

javascript - Highcharts 简单条形图占总数的百分比

php - 在 Google GeoChart 中使用 PHP 处理从数据库中获取的数据

android - 在 Graphview 库中使用日期

json - 使用 NewtonSoft 获取特定的 Json 字段

vb.net - 获取文本框以仅接受 vb.net 中的字符

vb.net - 是否总是分配函数的默认返回变量?

charts - 刷新 Google 图表仪表板

javascript - 通过绘图 API 渲染 Highcharts 数据表以将容器分隔为图表?