HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-07-20 2029e64ec0491f7e511dc15bffaf821bfbabe2de
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelColorSelectForm.cs
@@ -45,6 +45,8 @@
        /// <param name="i_B">B</param>
        public void ShowForm(int i_R,int i_G,int i_B)
        {
            this.ScrollEnabled = false;
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uSelectColor));
@@ -119,8 +121,16 @@
            btnWhiteView.Radius = (uint)this.GetPictrueRealSize(30) / 2;
            framePic.AddChidren(btnWhiteView);
            bool pointIsRight = false;
            //圆的半径
            int circleR = framePic.Width / 2 - this.GetPictrueRealSize(35);
            colorPic.ColorChaged += (sender, eColor) =>
            {
                if (pointIsRight == false)
                {
                    //点的区域不是圆盘内
                    return;
                }
                listRGB = new List<int>();
                listRGB.Add(Convert.ToInt32(Convert.ToString(eColor[0])));
                listRGB.Add(Convert.ToInt32(Convert.ToString(eColor[1])));
@@ -138,13 +148,24 @@
            };
            colorPic.MouseDownEventHandler += (sender, e) =>
            {
                pointIsRight = this.CheckPoint(circleR, framePic.Width / 2, framePic.Height / 2, (int)e.X, (int)e.Y);
                if (pointIsRight == false)
                {
                    //点的区域不是圆盘内
                    return;
                }
                //显示白点
                btnWhiteView.X = (int)e.X;
                btnWhiteView.Y = (int)e.Y;
                btnWhiteView.X = (int)e.X - btnWhiteView.Width / 2;
                btnWhiteView.Y = (int)e.Y - btnWhiteView.Height / 2;
                if (btnWhiteView.Visible == false)
                {
                    btnWhiteView.Visible = true;
                }
            };
            colorPic.MouseMoveEventHandler += (sender, e) =>
            {
                //当鼠标点下事件处理
                colorPic.MouseDownEventHandler(sender, e);
            };
        }
@@ -229,6 +250,35 @@
        #region ■ 一般方法___________________________
        /// <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;
        }
        /// <summary>
        /// 初始化备用颜色的默认值
        /// </summary>
        /// <returns></returns>