diff --git a/Bin/SunnyUI.dll b/Bin/SunnyUI.dll
index cc886930..8cadc7f1 100644
Binary files a/Bin/SunnyUI.dll and b/Bin/SunnyUI.dll differ
diff --git a/Bin/SunnyUI.pdb b/Bin/SunnyUI.pdb
index d43fa333..a4678458 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 b314b7cc..307be2ca 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 cc886930..8cadc7f1 100644
Binary files a/SunnyUI.Demo/Bin/SunnyUI.dll and b/SunnyUI.Demo/Bin/SunnyUI.dll differ
diff --git a/SunnyUI.Demo/Charts/FBarChartEx.Designer.cs b/SunnyUI.Demo/Charts/FBarChartEx.Designer.cs
index ea581a83..d3b45fc5 100644
--- a/SunnyUI.Demo/Charts/FBarChartEx.Designer.cs
+++ b/SunnyUI.Demo/Charts/FBarChartEx.Designer.cs
@@ -114,7 +114,7 @@
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 30;
- this.uiLine1.Text = "UIBarChart";
+ this.uiLine1.Text = "UIBarChartEx";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// BarChart
diff --git a/SunnyUI.Demo/Charts/FBarChartEx.cs b/SunnyUI.Demo/Charts/FBarChartEx.cs
index 5dbf2203..208f1c73 100644
--- a/SunnyUI.Demo/Charts/FBarChartEx.cs
+++ b/SunnyUI.Demo/Charts/FBarChartEx.cs
@@ -27,6 +27,9 @@ namespace Sunny.UI.Demo
private void uiSymbolButton1_Click(object sender, System.EventArgs e)
{
UIBarOption option = new UIBarOption();
+
+ option.Grid.Bottom = 60;
+
option.Title = new UITitle();
option.Title.Text = "SunnyUI";
option.Title.SubText = "BarChartEx";
@@ -42,19 +45,25 @@ namespace Sunny.UI.Demo
var series = new UIBarSeries();
series.Name = "Bar1";
+ series.ShowBarName = true;
+ series.ShowValue = true;
series.AddData("通道1", 11);
series.AddData("通道2", 15);
option.Series.Add(series);
series = new UIBarSeries();
series.Name = "Bar2";
- series.AddData("通道1", -22);
- series.AddData("通道2", -28);
- series.AddData("通道3", -25);
+ series.ShowBarName = true;
+ series.ShowValue = true;
+ series.AddData("通道1", 22);
+ series.AddData("通道2", 28);
+ series.AddData("通道3", 25);
option.Series.Add(series);
series = new UIBarSeries();
series.Name = "Bar3";
+ series.ShowBarName = true;
+ series.ShowValue = true;
series.AddData("通道1", 7);
option.Series.Add(series);
@@ -70,6 +79,8 @@ namespace Sunny.UI.Demo
option.XAxis.Name = "日期";
option.YAxis.Name = "数值";
+ option.XAxis.AxisTick.Distance = 14;
+
option.FixedSeriesCount = 3;
option.YAxisScaleLines.Add(new UIScaleLine() { Color = Color.Red, Name = "上限", Value = 12 });
diff --git a/SunnyUI.Demo/Charts/FBarChartEx.resx b/SunnyUI.Demo/Charts/FBarChartEx.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/SunnyUI.Demo/Charts/FBarChartEx.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/SunnyUI.Demo/SunnyUI.Demo.csproj b/SunnyUI.Demo/SunnyUI.Demo.csproj
index 65361429..8f7421c9 100644
--- a/SunnyUI.Demo/SunnyUI.Demo.csproj
+++ b/SunnyUI.Demo/SunnyUI.Demo.csproj
@@ -301,6 +301,9 @@
+
+ FBarChartEx.cs
+
FAvatar.cs
diff --git a/SunnyUI/Charts/UIBarChartEx.cs b/SunnyUI/Charts/UIBarChartEx.cs
index 229c2fd7..38334dbe 100644
--- a/SunnyUI/Charts/UIBarChartEx.cs
+++ b/SunnyUI/Charts/UIBarChartEx.cs
@@ -158,7 +158,7 @@ namespace Sunny.UI
for (int j = 0; j < series.Data.Count; j++)
{
str += '\n';
- if (series.BarName.Count >= 0 && j < series.BarName.Count)
+ if (series.BarName.Count > 0 && j < series.BarName.Count)
str += series.BarName[j] + " : ";
str += series.Data[j].ToString(BarOption.ToolTip.ValueFormat);
@@ -176,9 +176,39 @@ namespace Sunny.UI
for (int i = 0; i < Bars.Count; i++)
{
var bars = Bars[i];
- foreach (var info in bars)
+ for (int j = 0; j < bars.Count; j++)
{
- g.FillRectangle(info.Color, info.Rect);
+ g.FillRectangle(bars[j].Color, bars[j].Rect);
+ var s = BarOption.Series[i];
+ if (s.ShowBarName)
+ {
+ if (s.BarName.Count > 0 && j < s.BarName.Count)
+ {
+ SizeF sf = g.MeasureString(s.BarName[j], SubFont);
+ if (s.Data[j] >= 0)
+ g.DrawString(s.BarName[j], SubFont, ChartStyle.ForeColor,
+ bars[j].Rect.Left + bars[j].Rect.Width / 2 - sf.Width / 2,
+ bars[j].Rect.Bottom + 1);
+ else
+ g.DrawString(s.BarName[j], SubFont, ChartStyle.ForeColor,
+ bars[j].Rect.Left + bars[j].Rect.Width / 2 - sf.Width / 2,
+ bars[j].Rect.Top - sf.Height);
+ }
+ }
+
+ if (s.ShowValue)
+ {
+ string value = s.Data[j].ToString("F" + BarOption.XAxis.AxisLabel.DecimalCount);
+ SizeF sf = g.MeasureString(value, SubFont);
+ if (s.Data[j] < 0)
+ g.DrawString(value, SubFont, bars[j].Color,
+ bars[j].Rect.Left + bars[j].Rect.Width / 2 - sf.Width / 2,
+ bars[j].Rect.Bottom + 1);
+ else
+ g.DrawString(value, SubFont, bars[j].Color,
+ bars[j].Rect.Left + bars[j].Rect.Width / 2 - sf.Width / 2,
+ bars[j].Rect.Top - sf.Height);
+ }
}
}
@@ -238,12 +268,12 @@ namespace Sunny.UI
foreach (var data in BarOption.Series)
{
SizeF sf = g.MeasureString(data.Name, SubFont);
- g.DrawString(data.Name, SubFont, ChartStyle.ForeColor, start - sf.Width / 2.0f, DrawOrigin.Y + BarOption.XAxis.AxisTick.Length);
+ g.DrawString(data.Name, SubFont, ChartStyle.ForeColor, start - sf.Width / 2.0f, DrawOrigin.Y + BarOption.XAxis.AxisTick.Length + BarOption.XAxis.AxisTick.Distance);
start += DrawBarWidth;
}
SizeF sfName = g.MeasureString(BarOption.XAxis.Name, SubFont);
- g.DrawString(BarOption.XAxis.Name, SubFont, ChartStyle.ForeColor, DrawOrigin.X + (DrawSize.Width - sfName.Width) / 2.0f, DrawOrigin.Y + BarOption.XAxis.AxisTick.Length + sfName.Height);
+ g.DrawString(BarOption.XAxis.Name, SubFont, ChartStyle.ForeColor, DrawOrigin.X + (DrawSize.Width - sfName.Width) / 2.0f, DrawOrigin.Y + BarOption.XAxis.AxisTick.Length + BarOption.XAxis.AxisTick.Distance + sfName.Height);
}
if (BarOption.YAxis.AxisTick.Show)
diff --git a/SunnyUI/Charts/UIBarChartOption.cs b/SunnyUI/Charts/UIBarChartOption.cs
index 4d07a9f7..0441db72 100644
--- a/SunnyUI/Charts/UIBarChartOption.cs
+++ b/SunnyUI/Charts/UIBarChartOption.cs
@@ -179,6 +179,8 @@ namespace Sunny.UI
/// 如果设置为 1,表示『隔一个标签显示一个标签』,如果值为 2,表示隔两个标签显示一个标签,以此类推。
///
public int Interval { get; set; } = 0;
+
+ public int Distance { get; set; } = 0;
}
public class UIValueAxis : UIAxis
@@ -203,6 +205,10 @@ namespace Sunny.UI
public readonly List Colors = new List();
+ public bool ShowBarName { get; set; }
+
+ public bool ShowValue { get; set; }
+
public void AddData(double value)
{
Data.Add(value);