diff --git a/Bin/SunnyUI.Demo.exe b/Bin/SunnyUI.Demo.exe
index 6367bfab..6a950fc5 100644
Binary files a/Bin/SunnyUI.Demo.exe and b/Bin/SunnyUI.Demo.exe differ
diff --git a/Bin/SunnyUI.dll b/Bin/SunnyUI.dll
index 94677090..e17a227f 100644
Binary files a/Bin/SunnyUI.dll and b/Bin/SunnyUI.dll differ
diff --git a/SunnyUI.Demo/Charts/FBarChart.cs b/SunnyUI.Demo/Charts/FBarChart.cs
index 6fe9d7c9..1f1ac7a4 100644
--- a/SunnyUI.Demo/Charts/FBarChart.cs
+++ b/SunnyUI.Demo/Charts/FBarChart.cs
@@ -26,20 +26,20 @@ namespace Sunny.UI.Demo.Charts
var series = new UIBarSeries();
series.Name = "Bar1";
- series.AddData(11);
- series.AddData(15);
- series.AddData(12);
- series.AddData(14);
- series.AddData(13);
+ series.AddData(1.1);
+ series.AddData(1.5);
+ series.AddData(1.2);
+ series.AddData(1.4);
+ series.AddData(1.3);
option.Series.Add(series);
series = new UIBarSeries();
series.Name = "Bar2";
- series.AddData(-22);
- series.AddData(-28);
- series.AddData(-25);
- series.AddData(-23);
- series.AddData(-24);
+ series.AddData(-2.2);
+ series.AddData(-2.8);
+ series.AddData(-2.5);
+ series.AddData(-2.3);
+ series.AddData(-2.4);
option.Series.Add(series);
option.XAxis.Data.Add("Mon");
diff --git a/SunnyUI.Demo/Charts/FBarChartEx.cs b/SunnyUI.Demo/Charts/FBarChartEx.cs
index 64e6e66c..02d7c2fb 100644
--- a/SunnyUI.Demo/Charts/FBarChartEx.cs
+++ b/SunnyUI.Demo/Charts/FBarChartEx.cs
@@ -47,24 +47,24 @@ namespace Sunny.UI.Demo
series.Name = "Bar1";
series.ShowBarName = true;
series.ShowValue = true;
- series.AddData("通道1", 11);
- series.AddData("通道2", 15);
+ series.AddData("通道1", 1.1);
+ series.AddData("通道2", 1.5);
option.Series.Add(series);
series = new UIBarSeries();
series.Name = "Bar2";
series.ShowBarName = true;
series.ShowValue = true;
- series.AddData("通道1", 22);
- series.AddData("通道2", 28);
- series.AddData("通道3", 25);
+ series.AddData("通道1", 2.2);
+ series.AddData("通道2", 2.8);
+ series.AddData("通道3", 2.5);
option.Series.Add(series);
series = new UIBarSeries();
series.Name = "Bar3";
series.ShowBarName = true;
series.ShowValue = true;
- series.AddData("通道1", 7);
+ series.AddData("通道1", 0.7);
option.Series.Add(series);
option.XAxis.Data.Add("Mon");
diff --git a/SunnyUI/Charts/UIBarChart.cs b/SunnyUI/Charts/UIBarChart.cs
index dbc085ac..3c396338 100644
--- a/SunnyUI/Charts/UIBarChart.cs
+++ b/SunnyUI/Charts/UIBarChart.cs
@@ -53,7 +53,7 @@ namespace Sunny.UI
/// 刻度结束值,须乘以间隔使用
/// 刻度间隔
public void CalcDegreeScale(double start, double end, int expect_num,
- out int degree_start, out int degree_end, out double degree_gap)
+ out int degree_start, out int degree_end, out double degree_gap, out int decimalCount)
{
if (start >= end)
{
@@ -101,6 +101,10 @@ namespace Sunny.UI
}
degree_end = end2;
+ _exponent = Math.Abs(_exponent);
+ if (fix_step.IsEven()) _exponent--;
+ if (_exponent < 0) _exponent = 0;
+ decimalCount = _exponent;
}
protected override void CalcData()
@@ -142,11 +146,12 @@ namespace Sunny.UI
}
CalcDegreeScale(min, max, Option.YAxis.SplitNumber,
- out int start, out int end, out double interval);
+ out int start, out int end, out double interval, out int decimalCount);
YAxisStart = start;
YAxisEnd = end;
YAxisInterval = interval;
+ YAxisDecimalCount = decimalCount;
float x1 = DrawBarWidth / (Option.SeriesCount * 2 + Option.SeriesCount + 1);
float x2 = x1 * 2;
@@ -250,6 +255,7 @@ namespace Sunny.UI
protected int YAxisStart;
protected int YAxisEnd;
protected double YAxisInterval;
+ protected int YAxisDecimalCount;
protected readonly ConcurrentDictionary> Bars = new ConcurrentDictionary>();
[DefaultValue(-1), Browsable(false)]
@@ -501,6 +507,10 @@ namespace Sunny.UI
float DrawBarHeight = DrawSize.Height * 1.0f / (YAxisEnd - YAxisStart);
int idx = 0;
float wmax = 0;
+
+ if (Option.YAxis.AxisLabel.AutoFormat)
+ Option.YAxis.AxisLabel.DecimalCount = YAxisDecimalCount;
+
for (int i = YAxisStart; i <= YAxisEnd; i++)
{
string label = Option.YAxis.AxisLabel.GetLabel(i * YAxisInterval, idx);
diff --git a/SunnyUI/Charts/UIBarChartEx.cs b/SunnyUI/Charts/UIBarChartEx.cs
index 96362d27..086c8ed2 100644
--- a/SunnyUI/Charts/UIBarChartEx.cs
+++ b/SunnyUI/Charts/UIBarChartEx.cs
@@ -74,11 +74,12 @@ namespace Sunny.UI
}
CalcDegreeScale(min, max, Option.YAxis.SplitNumber,
- out int start, out int end, out double interval);
+ out int start, out int end, out double interval, out int decimalCount);
YAxisStart = start;
YAxisEnd = end;
YAxisInterval = interval;
+ YAxisDecimalCount = decimalCount;
float barX = DrawOrigin.X;
if (Option.AutoSizeBars)
@@ -460,6 +461,10 @@ namespace Sunny.UI
float DrawBarHeight = DrawSize.Height * 1.0f / (YAxisEnd - YAxisStart);
int idx = 0;
float wmax = 0;
+
+ if (Option.YAxis.AxisLabel.AutoFormat)
+ Option.YAxis.AxisLabel.DecimalCount = YAxisDecimalCount;
+
for (int i = YAxisStart; i <= YAxisEnd; i++)
{
string label = Option.YAxis.AxisLabel.GetLabel(i * YAxisInterval, idx);
diff --git a/SunnyUI/Charts/UIBarChartOption.cs b/SunnyUI/Charts/UIBarChartOption.cs
index 10f80728..7a9bcedf 100644
--- a/SunnyUI/Charts/UIBarChartOption.cs
+++ b/SunnyUI/Charts/UIBarChartOption.cs
@@ -177,6 +177,11 @@ namespace Sunny.UI
return value.ToString("F2");
}
+ public string GetAutoLabel(double value, int decimalCount)
+ {
+ return value.ToString("F" + decimalCount);
+ }
+
///
/// 小数位个数,Formatter不为空时以Formatter为准
///
@@ -186,6 +191,8 @@ namespace Sunny.UI
/// 日期格式化字符串,Formatter不为空时以Formatter为准
///
public string DateTimeFormat { get; set; } = "HH:mm";
+
+ public bool AutoFormat { get; set; } = true;
}
public class UIAxisTick