diff --git a/Bin/net40/SunnyUI.Demo.exe b/Bin/net40/SunnyUI.Demo.exe index 358ab9bb..85c57d2e 100644 Binary files a/Bin/net40/SunnyUI.Demo.exe and b/Bin/net40/SunnyUI.Demo.exe differ diff --git a/Bin/net40/SunnyUI.dll b/Bin/net40/SunnyUI.dll index e75a3593..9e739d92 100644 Binary files a/Bin/net40/SunnyUI.dll and b/Bin/net40/SunnyUI.dll differ diff --git a/SunnyUI.Demo/Charts/FBarChart.cs b/SunnyUI.Demo/Charts/FBarChart.cs index 30445ac0..4376ba08 100644 --- a/SunnyUI.Demo/Charts/FBarChart.cs +++ b/SunnyUI.Demo/Charts/FBarChart.cs @@ -51,17 +51,19 @@ namespace Sunny.UI.Demo option.XAxis.Data.Add("D1"); option.XAxis.Data.Add("D2"); - option.XAxis.Data.Add("D3"); + option.XAxis.Data.Add("D223"); option.XAxis.Data.Add("D4"); option.XAxis.Data.Add("D5"); option.XAxis.Data.Add("D6"); - option.XAxis.Data.Add("D7"); + option.XAxis.Data.Add("D7333"); option.XAxis.Data.Add("D8"); option.ToolTip.Visible = true; option.YAxis.Scale = true; option.XAxis.Name = "日期"; + option.XAxis.AxisLabel.Angle = 60;//(0° ~ 90°) + option.YAxis.Name = "数值"; option.YAxis.AxisLabel.DecimalCount = 1; option.YAxis.AxisLabel.AutoFormat = false; diff --git a/SunnyUI/Charts/UIBarChart.cs b/SunnyUI/Charts/UIBarChart.cs index 4c8ca4b0..7aa5e31d 100644 --- a/SunnyUI/Charts/UIBarChart.cs +++ b/SunnyUI/Charts/UIBarChart.cs @@ -20,6 +20,7 @@ * 2020-08-21: V2.2.7 可设置柱状图最小宽度 * 2021-07-22: V3.0.5 增加更新数据的方法 * 2021-01-01: V3.0.9 增加柱子上显示数值 + * 2022-03-08: V3.1.1 增加X轴文字倾斜 ******************************************************************************/ using System; @@ -500,8 +501,12 @@ namespace Sunny.UI foreach (var data in Option.XAxis.Data) { SizeF sf = g.MeasureString(data, TempFont); - g.DrawString(data, TempFont, ForeColor, start - sf.Width / 2.0f, DrawOrigin.Y + Option.XAxis.AxisTick.Length); - start += DrawBarWidth; + int angle = (Option.XAxis.AxisLabel.Angle + 36000) % 360; + if (angle > 0 && angle <= 90) + g.DrawString(data, TempFont, ForeColor, new PointF(start, DrawOrigin.Y), + new StringFormat() { Alignment = StringAlignment.Far }, (3600 - Option.XAxis.AxisLabel.Angle) % 360); + else + g.DrawString(data, TempFont, ForeColor, start - sf.Width / 2.0f, DrawOrigin.Y + Option.XAxis.AxisTick.Length); start += DrawBarWidth; } SizeF sfname = g.MeasureString(Option.XAxis.Name, TempFont);