wxr
2020-12-18 f2d122dc78c58925a05d770d716e7fefcbd784ef
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
old mode 100644 new mode 100755
@@ -31,11 +31,14 @@
                                bodyView.dimmerBar.Progress = uFunction.brightness;
                            }
                        }
                        else
                        //状态一样时,不再刷新视图
                        else if (uFunction.trait_on_off.curValue.ToString() == "off" && bodyView.btnSwitch.IsSelected == true)
                        {
                            bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
                            bodyView.dimmerBar.ProgressBarColor = CSS.CSS_Color.PromptingColor2;
                            bodyView.btnSwitch.IsSelected = false;
                            //色盘的圆点隐藏
                            bodyView.btnWhiteRound.Visible = false;
                        }
                    }
                }
@@ -69,9 +72,17 @@
        void LoadColorChangeEvent()
        {
            DateTime colorChangeTime = DateTime.MinValue;
            //当前点击的【点】是否正确
            bool pointIsRight = false;
            //圆的半径(考虑边界,需要设置它的半径比较小一点)
            int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12);
            colorPicker.ColorChaged += (sender2, e2) => {
                if(light.trait_on_off.curValue.ToString() == "off")
                if (light.trait_on_off.curValue.ToString() == "off"
                  || pointIsRight == false)
                {
                    //pointIsRight:点的区域不是圆盘内
                    return;
                }
                if ((DateTime.Now - colorChangeTime).TotalMilliseconds > 200)
@@ -85,13 +96,32 @@
                    Control.Ins.SendWriteCommand(light, d);
                }
            };
            colorPicker.MouseUpEventHandler = (sender, e) =>
            colorPicker.MouseDownEventHandler += (sender, e) =>
            {
                var ss = btnCurColor.BackgroundColor;
                if (light.trait_on_off.curValue.ToString() == "off")
                {
                    return;
                }
                pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y);
                if (pointIsRight == false)
                {
                    //点的区域不是圆盘内
                    return;
                }
                //显示白点
                btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2;
                btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2;
                if (btnWhiteRound.Visible == false)
                {
                    btnWhiteRound.Visible = true;
                }
            };
            colorPicker.MouseMoveEventHandler += (sender, e) =>
            {
                //当鼠标点下事件处理
                colorPicker.MouseDownEventHandler(sender, e);
            };
        }
        /// <summary>
        /// 收藏功能按钮事件
@@ -215,5 +245,34 @@
                Control.Ins.SendWriteCommand(light, d);
            };
        }
        /// <summary>
        /// 检测点击点
        /// </summary>
        /// <param name="circleR">圆的半径</param>
        /// <param name="circleX">圆心X轴</param>
        /// <param name="circleY">圆心Y轴</param>
        /// <param name="pointX">点击点的X轴</param>
        /// <param name="pointY">点击点的Y轴</param>
        /// <returns></returns>
        private bool CheckPoint(int circleR, int circleX, int circleY, int pointX, int pointY)
        {
            int dwidth = circleX - pointX;
            if (dwidth < 0) { dwidth *= -1; }
            int dHeight = circleY - pointY;
            if (dHeight < 0) { dHeight *= -1; }
            //根据三角函数,求三角形的斜边长
            int dlength = dwidth * dwidth + dHeight * dHeight;
            //半径长度(不开方,所以是按平方算)
            circleR *= circleR;
            if (dlength < circleR)
            {
                //如果组成的三角形并没有长过半径,则代表还在圆内(不允许点边界)
                return true;
            }
            return false;
        }
    }
}