public partial class ChartUser : UserControl
{
public ChartUser()
{
InitializeComponent(); Niuibi(); Round(this.Region);
}
private int _Radius = 20; // 圆角弧度
/// <summary>圆角弧度(0为不要圆角)</summary>
[Browsable(true)]
[Description("圆角弧度(0为不要圆角)")]
public int Radius
{
get
{
return _Radius;
}
set
{
if (value < 0) { _Radius = 0; }
else { _Radius = value; }
base.Refresh();
}
}
//protected override void OnPaint(PaintEventArgs pe)
//{
// Round(this.Region);
//}
public void Round(System.Drawing.Region region)
{
System.Drawing.Drawing2D.GraphicsPath oPath = new System.Drawing.Drawing2D.GraphicsPath();
int x = 0;
int y = 0;
int thisWidth = this.Width;
int thisHeight = this.Height;
int angle = _Radius;
if (angle > 0)
{
System.Drawing.Graphics g = CreateGraphics();
oPath.AddArc(x, y, angle, angle, 180, 90); // 左上角
oPath.AddArc(thisWidth - angle, y, angle, angle, 270, 90); // 右上角
oPath.AddArc(thisWidth - angle, thisHeight - angle, angle, angle, 0, 90); // 右下角
oPath.AddArc(x, thisHeight - angle, angle, angle, 90, 90); // 左下角
oPath.CloseAllFigures();
Region = new System.Drawing.Region(oPath);
}
// -----------------------------------------------------------------------------------------------
else
{
oPath.AddLine(x + angle, y, thisWidth - angle, y); // 顶端
oPath.AddLine(thisWidth, y + angle, thisWidth, thisHeight - angle); // 右边
oPath.AddLine(thisWidth - angle, thisHeight, x + angle, thisHeight); // 底边
oPath.AddLine(x, y + angle, x, thisHeight - angle); // 左边
oPath.CloseAllFigures();
Region = new System.Drawing.Region(oPath);
}
}
public void LoadClents(List<TcpModel> Clientlist)
{
this.Invoke(new Action(() =>
{
var CountAll = Clientlist.Count();
var OnCount = Clientlist.Where(n => n.Status == true).Count();
var OffCount = Clientlist.Where(n => n.Status == false).Count();
label4.Text = CountAll.ToString();
label5.Text = OnCount.ToString();
label6.Text = OffCount.ToString();
DataTable dt = PrepareData(Clientlist);
chart1.Series[0].Points.DataBind(dt.DefaultView, "subject", "score", "LegendText=subject,YValues=score,ToolTip=subject");
chart1.Series[0].LabelAngle = 0;
chart1.DataBind();
chart1.BringToFront();
}));
}
public void Niuibi()
{
chart1.Series.Clear();
//ChartHelper.SetTitle(chart1, "大圆机设备统计", new System.Drawing.Font("微软雅黑", 24F), Docking.Top, Color.Red);
ChartHelper.AddSeries(chart1, "饼状图", SeriesChartType.Doughnut, Color.Lime, Color.Red, true);
ChartHelper.SetStyle(chart1, Color.Transparent, Color.White);
ChartHelper.SetLegend(chart1, Docking.Right, StringAlignment.Near, Color.Transparent, Color.Black);
//chart1.Series[0].Points.DataBindXY(xData1, yData1);
}
public DataTable PrepareData(List<TcpModel> Clientlist)
{
DataTable dt = new DataTable();
dt.Columns.Add("subject", typeof(string));
dt.Columns.Add("score", typeof(float));
var OnCount = Clientlist.Where(n => n.Status == true).Count();
var OffCount = Clientlist.Where(n => n.Status == false).Count();
dt.Rows.Add("在线设备", OnCount.ToString());
dt.Rows.Add("离线设备", OffCount.ToString());
return dt;
}
}