• 大小: 4.52M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2024-04-28
  • 语言: C#
  • 标签: WinFrom  ROM  控件  UI  

资源简介

重写winfrom UI控件

资源截图

代码片段和文件信息

/******************************************************************************
 * SunnyUI 开源控件库、工具类库、扩展类库、多页面开发框架。
 * CopyRight (C) 2012-2020 ShenYongHua(沈永华).
 * QQ群:56829229 QQ:17612584 EMail:SunnyUI@qq.com
 *
 * Blog:   https://www.cnblogs.com/yhuse
 * Gitee:  https://gitee.com/yhuse/SunnyUI
 * GitHub: https://github.com/yhuse/SunnyUI
 *
 * SunnyUI.dll can be used for free under the GPL-3.0 license.
 * If you use this code please keep this note.
 * 如果您使用此代码,请保留此说明。
 ******************************************************************************
 * 文件名称: UIBarChart.cs
 * 文件说明: 柱状图
 * 当前版本: V2.2
 * 创建日期: 2020-06-06
 *
 * 2020-06-06: V2.2.5 增加文件说明
 * 2020-08-21: V2.2.7 可设置柱状图最小宽度
******************************************************************************/

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Windows.Forms;

namespace Sunny.UI
{
    [ToolboxItem(true)]
    public class UIBarChart : UIChart
    {
        private bool NeedDraw;

        protected override void OnSizeChanged(EventArgs e)
        {
            base.OnSizeChanged(e);
            CalcData(BarOption);
        }

        protected override void CalcData(UIOption option)
        {
            Bars.Clear();
            NeedDraw = false;
            UIBarOption o = (UIBarOption)option;
            if (o == null || o.Series == null || o.SeriesCount == 0) return;

            DrawOrigin = new Point(BarOption.Grid.Left Height - BarOption.Grid.Bottom);
            DrawSize = new Size(Width - BarOption.Grid.Left - BarOption.Grid.Right
                Height - BarOption.Grid.Top - BarOption.Grid.Bottom);

            if (DrawSize.Width <= 0 || DrawSize.Height <= 0) return;
            if (o.XAxis.Data.Count == 0) return;

            NeedDraw = true;
            DrawBarWidth = DrawSize.Width * 1.0f / o.XAxis.Data.Count;

            double min = double.MaxValue;
            double max = double.MinValue;
            foreach (var series in o.Series)
            {
                min = Math.Min(min series.Data.Min());
                max = Math.Max(max series.Data.Max());
            }

            if (min > 0 && max > 0 && !o.YAxis.Scale)
            {
                min = 0;
            }

            if (min < 0 && max < 0 && !o.YAxis.Scale)
            {
                max = 0;
            }

            if (!o.YAxis.MaxAuto) max = o.YAxis.Max;
            if (!o.YAxis.MinAuto) min = o.YAxis.Min;

            if ((max - min).IsZero())
            {
                max = 100;
                min = 0;
            }

            UIChartHelper.CalcDegreeScale(min max o.YAxis.SplitNumber
                out int start out int end out double interval);

            YAxisStart = start;
            YAxisEnd = end;
            YAxisInterval = interval;

            float x1 = DrawBarWidth / ((o.SeriesCount * 2) + o.SeriesCount + 1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-09-21 14:12  SunnyUI\
     文件        2518  2020-09-21 14:12  SunnyUI\.gitattributes
     文件        5737  2020-09-21 14:12  SunnyUI\.gitignore
     目录           0  2020-09-21 14:12  SunnyUI\Bin\
     文件     1249792  2020-09-21 14:12  SunnyUI\Bin\SunnyUI.dll
     文件     2012672  2020-09-21 14:12  SunnyUI\Bin\SunnyUI.pdb
     文件       35141  2020-09-21 14:12  SunnyUI\LICENSE
     文件        3631  2020-09-21 14:12  SunnyUI\README.md
     目录           0  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\
     目录           0  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\
     文件      367616  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\SunnyUI.Demo.exe
     文件     1249792  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\SunnyUI.dll
     目录           0  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\
     文件        4464  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\ajax.png
     文件        3654  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\atalanta.png
     文件        5174  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\barcelona.png
     文件        5683  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\benfica.png
     文件        5223  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\betis.png
     文件        5251  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\brescia.png
     文件        5997  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\chievo.png
     文件        4613  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\deportivo.png
     文件        4862  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\feyenoord.png
     文件        4917  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\heerenveen.png
     文件        6343  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\inter.png
     文件        6100  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\lazio.png
     文件        5254  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\mallorca.png
     文件        3427  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\milan.png
     文件        2365  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\parma.png
     文件        4808  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\porto.png
     文件        6800  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\psv.png
     文件        5219  2020-09-21 14:12  SunnyUI\SunnyUI.Demo\Bin\Team\real_madrid.png
............此处省略410个文件信息

评论

共有 条评论