diff --git a/Bin/SunnyUI.dll b/Bin/SunnyUI.dll index 3e1c8f33..1acec1da 100644 Binary files a/Bin/SunnyUI.dll and b/Bin/SunnyUI.dll differ diff --git a/Bin/SunnyUI.pdb b/Bin/SunnyUI.pdb index 1a3548e4..a24b457d 100644 Binary files a/Bin/SunnyUI.pdb and b/Bin/SunnyUI.pdb differ diff --git a/SunnyUI.Demo/Bin/SunnyUI.Demo.exe b/SunnyUI.Demo/Bin/SunnyUI.Demo.exe index 10d05c38..667bf829 100644 Binary files a/SunnyUI.Demo/Bin/SunnyUI.Demo.exe and b/SunnyUI.Demo/Bin/SunnyUI.Demo.exe differ diff --git a/SunnyUI.Demo/Bin/SunnyUI.dll b/SunnyUI.Demo/Bin/SunnyUI.dll index 3e1c8f33..1acec1da 100644 Binary files a/SunnyUI.Demo/Bin/SunnyUI.dll and b/SunnyUI.Demo/Bin/SunnyUI.dll differ diff --git a/SunnyUI/Charts/UIBarChart.cs b/SunnyUI/Charts/UIBarChart.cs index 666741c9..df080308 100644 --- a/SunnyUI/Charts/UIBarChart.cs +++ b/SunnyUI/Charts/UIBarChart.cs @@ -79,23 +79,23 @@ namespace Sunny.UI float barX = DrawOrigin.X; var series = o.Series[i]; Bars.TryAdd(i, new List()); - for (int j = 0; j < series.Data.Count; j++) { Color color = ChartStyle.GetColor(i); if (series.Colors.Count > 0 && j >= 0 && j < series.Colors.Count) color = series.Colors[j]; + float xx = barX + x1 * (i + 1) + x2 * i + x1; + float ww = Math.Min(x2, series.MaxWidth); + xx = xx - ww / 2.0f; + if (YAxisStart >= 0) { float h = Math.Abs((float)(DrawSize.Height * (series.Data[j] - start * interval) / ((end - start) * interval))); Bars[i].Add(new BarInfo() { - Rect = new RectangleF( - barX + x1 * (i + 1) + x2 * i, - DrawOrigin.Y - h, - x2, h), + Rect = new RectangleF(xx, DrawOrigin.Y - h, ww, h), Color = color }); } @@ -104,10 +104,7 @@ namespace Sunny.UI float h = Math.Abs((float)(DrawSize.Height * (end * interval - series.Data[j]) / ((end - start) * interval))); Bars[i].Add(new BarInfo() { - Rect = new RectangleF( - barX + x1 * (i + 1) + x2 * i, - BarOption.Grid.Top + 1, - x2, h - 1), + Rect = new RectangleF(xx, BarOption.Grid.Top + 1, ww, h - 1), Color = color }); } @@ -134,10 +131,7 @@ namespace Sunny.UI float h = Math.Abs((float)(highH * series.Data[j] / highV)); Bars[i].Add(new BarInfo() { - Rect = new RectangleF( - barX + x1 * (i + 1) + x2 * i, - DrawOrigin.Y - lowH - h, - x2, h), + Rect = new RectangleF(xx, DrawOrigin.Y - lowH - h, ww, h), Color = color }); } @@ -146,10 +140,7 @@ namespace Sunny.UI float h = Math.Abs((float)(lowH * series.Data[j] / lowV)); Bars[i].Add(new BarInfo() { - Rect = new RectangleF( - barX + x1 * (i + 1) + x2 * i, - DrawOrigin.Y - lowH + 1, - x2, h - 1), + Rect = new RectangleF(xx, DrawOrigin.Y - lowH + 1, ww, h - 1), Color = color }); } diff --git a/SunnyUI/Charts/UIBarChartOption.cs b/SunnyUI/Charts/UIBarChartOption.cs index f18d0c55..b7996a34 100644 --- a/SunnyUI/Charts/UIBarChartOption.cs +++ b/SunnyUI/Charts/UIBarChartOption.cs @@ -170,6 +170,8 @@ namespace Sunny.UI { public string Name { get; set; } + public int MaxWidth { get; set; } = int.MaxValue; + public UISeriesType Type => UISeriesType.Bar; public readonly List Data = new List();