* UIBarChart:继续更新

This commit is contained in:
Sunny 2020-06-17 22:54:42 +08:00
parent d25c38063f
commit 327f5ae0d1
8 changed files with 132 additions and 24 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -24,20 +24,20 @@
var series = new UIBarSeries();
series.Name = "Bar1";
series.AddData(11);
series.AddData(15);
series.AddData(12);
series.AddData(14);
series.AddData(13);
series.AddData(+11);
series.AddData(+15);
series.AddData(+12);
series.AddData(+14);
series.AddData(+13);
option.Series.Add(series);
series = new UIBarSeries();
series.Name = "Bar2";
series.AddData(22);
series.AddData(21);
series.AddData(25);
series.AddData(23);
series.AddData(24);
series.AddData(-22);
series.AddData(0);
series.AddData(-25);
series.AddData(-23);
series.AddData(-24);
option.Series.Add(series);
option.XAxis.Data.Add("Mon");
@ -46,6 +46,8 @@
option.XAxis.Data.Add("Thu");
option.XAxis.Data.Add("Fri");
option.ToolTip = new UIBarToolTip();
BarChart.SetOption(option);
}

View File

@ -80,14 +80,17 @@
this.uiImageButton1 = new Sunny.UI.UIImageButton();
this.uiImageButton2 = new Sunny.UI.UIImageButton();
this.uiImageButton3 = new Sunny.UI.UIImageButton();
this.uiImageButton4 = new Sunny.UI.UIImageButton();
this.PagePanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton4)).BeginInit();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiImageButton4);
this.PagePanel.Controls.Add(this.uiImageButton3);
this.PagePanel.Controls.Add(this.uiImageButton2);
this.PagePanel.Controls.Add(this.uiImageButton1);
@ -953,6 +956,21 @@
this.uiImageButton3.TabStop = false;
this.uiImageButton3.Text = null;
//
// uiImageButton4
//
this.uiImageButton4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiImageButton4.Image = global::Sunny.UI.Demo.Properties.Resources.dashboard0;
this.uiImageButton4.ImageHover = global::Sunny.UI.Demo.Properties.Resources.dashboard;
this.uiImageButton4.ImageOffset = new System.Drawing.Point(12, 5);
this.uiImageButton4.ImagePress = global::Sunny.UI.Demo.Properties.Resources.dashboard0;
this.uiImageButton4.Location = new System.Drawing.Point(630, 435);
this.uiImageButton4.Name = "uiImageButton4";
this.uiImageButton4.Size = new System.Drawing.Size(70, 61);
this.uiImageButton4.TabIndex = 52;
this.uiImageButton4.TabStop = false;
this.uiImageButton4.Text = "Home";
this.uiImageButton4.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
//
// FButton
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
@ -965,6 +983,7 @@
((System.ComponentModel.ISupportInitialize)(this.uiImageButton1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.uiImageButton4)).EndInit();
this.ResumeLayout(false);
}
@ -1023,5 +1042,6 @@
private UIImageButton uiImageButton3;
private UIImageButton uiImageButton2;
private UIImageButton uiImageButton1;
private UIImageButton uiImageButton4;
}
}

View File

@ -79,7 +79,7 @@ namespace Sunny.UI
{
if (minZero)
{
float h = (float)(DrawSize.Height * series.Data[j] / (end * interval));
float h = Math.Abs((float)(DrawSize.Height * series.Data[j] / (end * interval)));
Bars[i].Add(new BarInfo()
{
Rect = new RectangleF(
@ -90,25 +90,74 @@ namespace Sunny.UI
}
else if (maxZero)
{
float h = Math.Abs((float)(DrawSize.Height * series.Data[j] / (start * interval)));
Bars[i].Add(new BarInfo()
{
Rect = new RectangleF(
barX + x1 * (i + 1) + x2 * i,
BarOption.Grid.Top + 1,
x2, h - 1)
});
}
else
{
float lowH = 0;
float highH = 0;
float DrawBarHeight = DrawSize.Height * 1.0f / (YAxisEnd - YAxisStart);
float lowV = 0;
float highV = 0;
for (int k = YAxisStart; k <= YAxisEnd; k++)
{
if (k < 0) lowH += DrawBarHeight;
if (k > 0) highH += DrawBarHeight;
if (k < 0) lowV += (float)YAxisInterval;
if (k > 0) highV += (float)YAxisInterval;
}
lowH.ConsoleWriteLine();
highH.ConsoleWriteLine();
if (series.Data[j] >= 0)
{
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)
});
}
else
{
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)
});
}
}
barX += DrawBarWidth;
}
}
for (int i = 0; i < BarOption.XAxis.Data.Count; i++)
if (BarOption.ToolTip != null)
{
string str = BarOption.XAxis.Data[i];
foreach (var series in BarOption.Series)
for (int i = 0; i < BarOption.XAxis.Data.Count; i++)
{
str += '\n';
str += series.Name + " : " + series.Data[i].ToString(BarOption.ToolTip.ValueFormat);
}
string str = BarOption.XAxis.Data[i];
foreach (var series in BarOption.Series)
{
str += '\n';
str += series.Name + " : " + series.Data[i].ToString(BarOption.ToolTip.ValueFormat);
}
Bars[0][i].Tips = str;
Bars[0][i].Tips = str;
}
}
}
@ -255,7 +304,7 @@ namespace Sunny.UI
private void DrawAxis(Graphics g)
{
g.DrawLine(ChartStyle.ForeColor, DrawOrigin, new Point(DrawOrigin.X + DrawSize.Width, DrawOrigin.Y));
//g.DrawLine(ChartStyle.ForeColor, DrawOrigin, new Point(DrawOrigin.X + DrawSize.Width, DrawOrigin.Y));
g.DrawLine(ChartStyle.ForeColor, DrawOrigin, new Point(DrawOrigin.X, DrawOrigin.Y - DrawSize.Height));
if (BarOption.XAxis.AxisTick.Show)
@ -273,11 +322,24 @@ namespace Sunny.UI
}
else
{
start = DrawOrigin.X;
for (int i = 0; i <= BarOption.XAxis.Data.Count; i++)
bool haveZero = false;
for (int i = YAxisStart; i <= YAxisEnd; i++)
{
g.DrawLine(ChartStyle.ForeColor, start, DrawOrigin.Y, start, DrawOrigin.Y + BarOption.XAxis.AxisTick.Length);
start += DrawBarWidth;
if (i == 0)
{
haveZero = true;
break;
}
}
if (!haveZero)
{
start = DrawOrigin.X;
for (int i = 0; i <= BarOption.XAxis.Data.Count; i++)
{
g.DrawLine(ChartStyle.ForeColor, start, DrawOrigin.Y, start, DrawOrigin.Y + BarOption.XAxis.AxisTick.Length);
start += DrawBarWidth;
}
}
}
}
@ -310,6 +372,17 @@ namespace Sunny.UI
g.DrawLine(pn, DrawOrigin.X, start, Width - BarOption.Grid.Right, start);
}
}
else
{
g.DrawLine(ChartStyle.ForeColor, DrawOrigin.X, start, Width - BarOption.Grid.Right, start);
float lineStart = DrawOrigin.X;
for (int j = 0; j <= BarOption.XAxis.Data.Count; j++)
{
g.DrawLine(ChartStyle.ForeColor, lineStart, start, lineStart, start + BarOption.XAxis.AxisTick.Length);
lineStart += DrawBarWidth;
}
}
start -= DrawBarHeight;
}

View File

@ -282,6 +282,19 @@ namespace Sunny.UI
Invalidate();
}
public Point imageOffset;
[DefaultValue(typeof(Point),"0, 0")]
public Point ImageOffset
{
get => imageOffset;
set
{
imageOffset = value;
Invalidate();
}
}
/// <summary>
/// 绘制按钮
/// </summary>
@ -319,7 +332,7 @@ namespace Sunny.UI
if (img != null)
{
if (SizeMode == PictureBoxSizeMode.Normal)
pe.Graphics.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));
pe.Graphics.DrawImage(img, new Rectangle(ImageOffset.X, ImageOffset.Y, img.Width, img.Height));
if (SizeMode == PictureBoxSizeMode.StretchImage)
pe.Graphics.DrawImage(img, new Rectangle(0, 0, Width, Height));