1
cloudflight
2024-07-20 fab5d6e30b9a42a1f94524fca74ef227d2c963e4
Hydraulic/Hydro.MapUI/WindowsForm/Form_Color.cs
@@ -24,6 +24,8 @@
        public Template Template { get; private set; }
        private List<Colour> Colours = new List<Colour>();
        private Colour CurrenColour
        {
            get {
@@ -318,14 +320,14 @@
        private void GenerateFloorsButton_Click(object sender, EventArgs e)
        {
            if (CurrenColour==null)
            if (CurrenColour == null)
            {
                simpleButton9_Click(1,new EventArgs());
                simpleButton9_Click(1, new EventArgs());
            }
            // 隐藏错误标签
            ErrorLabel.Visible = false;
            float minFloorIndex;
            float maxFloorIndex;
@@ -346,7 +348,7 @@
                ErrorLabel.Visible = true;
                return;
            }
            if (!int.TryParse(tb_ColourNum.Text,out ColourNum))
            if (!int.TryParse(tb_ColourNum.Text, out ColourNum))
            {
                ErrorLabel.Text = "级数必须是数字";
                ErrorLabel.Visible = true;
@@ -366,7 +368,7 @@
            //}
            CurrenColour.color0= color0;
            CurrenColour.color0 = color0;
            CurrenColour.color1 = color1;
            CurrenColour.maxNum = maxFloorIndex;
            CurrenColour.minNum = minFloorIndex;
@@ -376,33 +378,13 @@
            //string tempID = BackgroundImgTextBox_q.Text;
            // 逐层生成楼层
            for (int i = 0; i < ColourNum; i++)
            {
                DRange currentRange =new DRange(minFloorIndex + i * (maxFloorIndex- minFloorIndex)/ColourNum, minFloorIndex + (i+1) * (maxFloorIndex - minFloorIndex) / ColourNum);
                Color c;
                //获取color0和color1,Colour个等分颜色,第一个为color0,最后一个为color1,中间的为等分颜色
                if (i == 0)
                {
                    c = color0;
                }
                else if (i == ColourNum-1)
                {
                    c = color1;
                }
                else
                {
                    c = Color.FromArgb(color0.R + (color1.R - color0.R) / (ColourNum - 1) * i, color0.G + (color1.G - color0.G) / (ColourNum - 1) * i, color0.B + (color1.B - color0.B) / (ColourNum-1) * i);
                }
                ColourItem newFloor = new ColourItem(currentRange,c);
                floors.Add(newFloor);
            }
            var items=Colour.GetColourItems(minFloorIndex, maxFloorIndex, ColourNum, color0, color1);
            floors.AddRange(items);
            // 更新楼层列表
            UpdateColourItemList();
        }
        private void SelectImageButton_Click_q(object sender, EventArgs e)
        {
@@ -563,35 +545,10 @@
            if (CurrenColour == null) return;
            double max = 0;
            double min = 0;
            switch(CurrenColour.Type)
            {
                case ColourType.节点自由压力:
                    max=this.Template.network.Nodes.Where(node=>!(node is ReservoirViewModel || node is TankViewModel)).Max(node => node.EN_PRESSURE);
                    min=this.Template.network.Nodes.Where(node => !(node is ReservoirViewModel || node is TankViewModel)).Min(node => node.EN_PRESSURE);
                    break;
                case ColourType.节点绝对压力:
                    max = this.Template.network.Nodes.Where(node => !(node is ReservoirViewModel || node is TankViewModel)).Max(node => node.EN_PRESSURE);
                    min = this.Template.network.Nodes.Where(node => !(node is ReservoirViewModel || node is TankViewModel)).Min(node => node.EN_PRESSURE);
                    break;
                case ColourType.节点需水量:
                    max = this.Template.network.Nodes.Where(node => !(node is ReservoirViewModel || node is TankViewModel)).Max(node => node.EN_DEMAND);
                    min = this.Template.network.Nodes.Where(node => !(node is ReservoirViewModel || node is TankViewModel)).Min(node => node.EN_DEMAND);
                    break;
                case ColourType.管线流量:
                    max = this.Template.network.Links.Max(link => link.EN_FLOW);
                    min = this.Template.network.Links.Min(link => link.EN_FLOW);
                    break;
                case ColourType.管线流速:
                    max = this.Template.network.Links.Max(link => link.EN_VELOCITY);
                    min = this.Template.network.Links.Min(link => link.EN_VELOCITY);
                    break;
                default:
                    break;
            }
            tb_minFloorIndex.Text = min.ToString();
            tb_maxFloorIndex.Text = max.ToString();
            var doubles=this.Template.network.getMinMax(CurrenColour.Type);
            tb_minFloorIndex.Text = doubles[0].ToString();
            tb_maxFloorIndex.Text = doubles[1].ToString();
        }
        private void btn_useColour_Click(object sender, EventArgs e)