From db45c85a6ddebc5018b32a9d9dc04f839db3fa76 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期二, 28 九月 2021 15:59:34 +0800
Subject: [PATCH] 组合调光

---
 HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs | 1042 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 732 insertions(+), 310 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
index a14cbfe..4e22ef5 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
@@ -1,5 +1,8 @@
 锘縰sing System;
 using System.Collections.Generic;
+using System.Threading;
+using HDL_ON.DAL.Server;
+using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using Shared;
@@ -25,21 +28,43 @@
         /// 鍔熻兘鍒楄〃闆嗗悎鏄剧ず鍖哄煙
         /// </summary>
         static VerticalScrolViewLayout functionListView;
-        #endregion
+        /// <summary>
+        /// 瀹屾垚鎸夐挳
+        /// </summary>
+        Button btnConfrim;
 
+        #endregion
+        /// <summary>
+        /// 鍦烘櫙閲岄潰鐨勫姛鑳藉垪琛�
+        /// </summary>
         List<Function> sceneLishtList;
-        Scene lightScene;
-        public AddLightScene(List<Function> functions,Scene scene)
+        /// <summary>
+        /// 鏈湴鐨勭伅鍏夊垪琛�
+        /// </summary>
+        List<Function> lightList;
+        /// <summary>
+        /// 鍦烘櫙瀵硅薄
+        /// </summary>
+        Scene scene;
+        /// <summary>
+        /// 鍥炶皟鍒锋柊
+        /// </summary>
+        Action<Scene> backActon;
+
+        public AddLightScene(List<Function> functions,Scene inParscene, Action<Scene> action)
         {
             bodyView = this;
             sceneLishtList = functions;
-            lightScene = scene;
+            scene = inParscene;
+            backActon = action;
+            lightList = FunctionList.List.GetLightList();
         }
 
         public void LoadPage()
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView();
+            scene.name = Language.StringByID(StringId.CombinedDimming);
 
             /// <summary>
             /// 鎴块棿鍐呭鏄剧ず鍖哄煙
@@ -78,13 +103,68 @@
             functionListView = new VerticalScrolViewLayout()
             {
                 Y = Application.GetRealHeight(64 + 52),
-                Height = Application.GetRealHeight(603 - 12 - 52),
+                Height = Application.GetRealHeight(640 - 12 - 52 -100),
             };
             bodyView.AddChidren(functionListView);
 
-            var lightList = FunctionList.List.GetLightList();
 
-            foreach (var function in lightList)
+            LoadLightRow(lightList);
+
+            #region 搴曢儴view
+            var bottomView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(591),
+                Height = Application.GetRealHeight(100),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            this.AddChidren(bottomView);
+
+            btnConfrim = new Button()
+            {
+                Y = Application.GetRealHeight(12),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(220),
+                Height = Application.GetRealHeight(44),
+                Radius = (uint)Application.GetRealHeight(22),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.MainBackgroundColor,
+                BackgroundColor = CSS_Color.BackgroundColor,
+                TextID = StringId.Confirm,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                SelectedTextColor = CSS_Color.MainBackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainColor,
+            };
+            bottomView.AddChidren(btnConfrim);
+            btnConfrim.MouseUpEventHandler = (sender, e) => {
+                if (btnConfrim.IsSelected)
+                {
+                    Action<Scene> action = (objScene) =>
+                    {
+                        backActon(objScene);
+                        this.RemoveFromParent();
+                    };
+
+                    var lightSceneDialog = new LightSceneEditDialog(sceneLishtList, scene, action);
+                    lightSceneDialog.ShowDialog();
+                }
+            };
+
+            #endregion
+
+            //鍔犺浇鍔熻兘绛涢�夌粍浠�
+            LoadDialog_ChangeFloor();
+        }
+
+        /// <summary>
+        /// 鍔犺浇鍔熻兘row
+        /// </summary>
+        /// <param name="lightList"></param>
+        void LoadLightRow(List<Function> functions)
+        {
+            functionListView.RemoveAll();
+
+            foreach (var function in functions)
             {
                 var functionDiv = new LightRow(function)
                 {
@@ -97,42 +177,45 @@
                     BackgroundColor = CSS_Color.MainBackgroundColor,
                     Tag = function.spk + function.sid
                 };
-                functionDiv.LoadDiv(sceneLishtList);
+
+                Action setAction = () =>
+                {
+                    if (sceneLishtList.Count > 0)
+                    {
+                        btnConfrim.IsSelected = true;
+                    }
+                    else
+                    {
+                        btnConfrim.IsSelected = false;
+                    }
+                };
+
+                functionDiv.LoadDiv(sceneLishtList,setAction);
                 functionListView.AddChidren(functionDiv);
 
                 functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
             }
 
+        }
 
-            #region 搴曢儴view
-            var bottomView = new FrameLayout()
+
+        /// <summary>
+        /// 浣忓畢鍒楄〃鐐瑰嚮浜嬩欢
+        /// </summary>
+        void LoadDialog_ChangeFloor()
+        {
+            string nowSelectId = null;
+            btnFloor.MouseUpEventHandler += (sender, e) =>
             {
-                Y = Application.GetRealHeight(591),
-                Height = Application.GetRealHeight(100),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
-                Radius = (uint)Application.GetRealWidth(12),
+                //鏄剧ず涓嬫媺鍒楄〃
+                var form = new FloorRoomSelectPopupView();
+                form.ShowDeviceFunctionView(btnFloor, this.lightList, (selectId, listFunc) =>
+                {
+                    nowSelectId = selectId;
+                    //閲嶆柊鍔犺浇鐣岄潰
+                    LoadLightRow(listFunc);
+                }, nowSelectId);
             };
-            this.AddChidren(bottomView);
-
-            var btnConfrim = new Button()
-            {
-                Y = Application.GetRealHeight(12),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.MainBackgroundColor,
-                BackgroundColor = CSS_Color.MainColor,
-                TextID = StringId.Confirm,
-            };
-            bottomView.AddChidren(btnConfrim);
-            btnConfrim.MouseUpEventHandler = (sender, e) => {
-                var lightSceneDialog = new LightSceneEditDialog(sceneLishtList,lightScene);
-                lightSceneDialog.ShowDialog();
-            };
-
-            #endregion
         }
 
     }
@@ -174,7 +257,7 @@
         /// <summary>
         /// 鍔犺浇鎺у埗鍗$墖鍖哄煙
         /// </summary>
-        public void LoadDiv(List<Function> functions)
+        public void LoadDiv(List<Function> functions,Action action)
         {
             btnIcon = new Button()
             {
@@ -242,6 +325,11 @@
                         functions.Remove(removeTemp);
                     }
                 }
+                ///鍒锋柊鐣岄潰
+                if (functions.Count == 0 || functions.Count == 1)
+                {
+                    action();
+                }
             };
 
         }
@@ -254,19 +342,33 @@
     /// </summary>
     public class LightSceneEditDialog :Dialog
     {
+        /// <summary>
+        /// 浼犲叆鐨勭伅鍏夊垪琛�
+        /// 鍔犲叆鍦烘櫙鎺у埗鍔熻兘鍒楄〃
+        /// </summary>
         List<Function> lights;
+        /// <summary>
+        /// 涓存椂鐏厜瀵硅薄
+        /// 澶勭悊鐏厜鏂规硶
+        /// </summary>
+        Light tempLight = new Light();
+        //鍙戦�佹暟鎹敹闆�
+        Dictionary<string, string> commandDic = new Dictionary<string, string>();
 
-        Scene editScene;
-
-        public LightSceneEditDialog(List<Function> functions,Scene scene)
+        Scene scene;
+        Action<Scene> backAction;
+        public LightSceneEditDialog(List<Function> functions,Scene inParScene,Action<Scene> action)
         {
             lights = functions;
-            editScene = scene;
+            scene = inParScene;
+            backAction = action;
         }
 
 
         public void ShowDialog()
         {
+            commandDic.Add(FunctionAttributeKey.OnOff, "off");
+
             var hadDimming = lights.Find((obj) => obj.spk == SPK.LightDimming) != null;
             var hadCCT = lights.Find((obj) => obj.spk == SPK.LightCCT) != null;
             var hadRGB = lights.Find((obj) => obj.spk == SPK.LightRGB) != null;
@@ -285,7 +387,6 @@
             bodyView.AddChidren(contentView);
 
             #region 鏍囬鍖�
-            bool inEdit = false;//鏄惁鍦ㄧ紪杈戞爣棰�
             var titleView = new FrameLayout()
             {
                 Width = Application.GetRealWidth(343),
@@ -321,48 +422,74 @@
                 X = Application.GetRealWidth(12) + btnTitle.Right,
                 Gravity = Gravity.CenterVertical,
                 UnSelectedImagePath = "Public/Edit.png",
-                SelectedImagePath = "Public/HookIcon.png"
+                //SelectedImagePath = "Public/HookIcon.png"
             };
             titleView.AddChidren(btnEditIcon);
 
-            EventHandler<MouseEventArgs> dd = (sender, e) =>
-            {
-                inEdit = !inEdit;
-                btnEditIcon.IsSelected = inEdit;
-
-                if (inEdit)
+                Action<string> callBack = (str) =>
                 {
-                    btnTitle.Width = btnTitle.GetTextWidth();
-                }
-                else
-                {
-                    if (btnTitle.GetTextWidth() > Application.GetRealWidth(197))//247
+                    //鍚嶇О涓嶈兘涓虹┖
+                    if (string.IsNullOrEmpty(str))
                     {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.NameCannotBeEmpty),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(bodyView);
+                        return;
+                    }
+                    btnTitle.Text = str;
+                    scene.name = str;
+
+
+                    if (btnTitle.GetTextWidth() > Application.GetRealWidth(197))//247
+                        {
                         btnTitle.Width = Application.GetRealWidth(197);
                     }
                     else
                     {
                         btnTitle.Width = btnTitle.GetTextWidth();
                     }
-                    editScene.name = btnTitle.Text.Trim();
+
+                };
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                List<string> sceneNameList = new List<string>();
+                foreach (var tempScene in FunctionList.List.scenes)
+                {
+                    sceneNameList.Add(tempScene.name);
                 }
+                new PublicAssmebly().LoadDialog_EditParater(StringId.SceneName, scene.name, callBack, StringId.SceneNameCannotBeEmpty, StringId.SceneNameAlreadyExists, sceneNameList);
             };
-            btnTitle.MouseUpEventHandler = dd;
-            btnEditIcon.MouseUpEventHandler = dd;
+            btnTitle.MouseUpEventHandler = eventHandler;
+            btnEditIcon.MouseUpEventHandler = eventHandler;
 
             titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor, Y = Application.GetRealHeight(51) });
 
             #endregion
 
 
-            var dimmingLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightDimming);
-            var cctLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightCCT);
-            var rgbLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightRGB);
+            //var dimmingLight = lights.Find((obj) => obj.spk == SPK.LightDimming);
+            //var cctLight = lights.Find((obj) => obj.spk == SPK.LightCCT);
+            //var rgbLight = lights.Find((obj) => obj.spk == SPK.LightRGB);
+            var dimmingLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightDimming);
+            var cctLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightCCT);
+            var rgbLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightRGB);
+
             var brightnessValue = 0;
             var cctValue = 27;
+            if(rgbLight!= null)
+            {
+                int.TryParse(rgbLight.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness).value, out brightnessValue);
+            }
             if (cctLight != null)
             {
                 int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness).value, out brightnessValue);
+                int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out cctValue);
+            }
+            if(dimmingLight!=null)
+            {
                 int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out cctValue);
             }
 
@@ -372,83 +499,113 @@
             {
                 Y = Application.GetRealHeight(52),
                 Width = Application.GetRealWidth(343),
+                ScrollEnabled = false,
             };
             //灞炴�ц缃尯鍩熼珮搴�
-            int attrViewHight = Application.GetRealHeight(27 + 22);
-            attrView.AddChidren(new Button() { Height = Application.GetRealHeight(27) });
+            int attrViewHight = Application.GetRealHeight(18 + 22);
 
-            if (hadDimming)
+
+            //鍙湁缁х數鍣�
+            if (!hadDimming && !hadCCT && !hadRGB)
             {
-                attrViewHight += Application.GetRealHeight(54 + 11);
-                var dimmingView = new FrameLayout();
-                attrView.AddChidren(dimmingView);
+                attrViewHight += Application.GetRealHeight(50);
+                attrView.Height = attrViewHight;
+                contentView.AddChidren(attrView);
+                attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
 
-
-                #region 浜害璋冭妭
-                var btnBrightnessText = new Button()
+                var view = new FrameLayout()
                 {
-                    X = Application.GetRealWidth(35),
-                    Y = Application.GetRealHeight(1),
-                    Width = Application.GetRealWidth(224),
-                    Height = Application.GetRealHeight(21),
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextID = StringId.Brightness,
-                    BackgroundColor = 0xFFFF0000
+                    Width = Application.GetRealWidth(343),
+                    Height = Application.GetRealHeight(50),
                 };
-                dimmingView.AddChidren(btnBrightnessText);
+                attrView.AddChidren(view);
+                     
 
-                var btnMinValuesText = new Button()
+                var btnClose = new Button()
                 {
-                    X = Application.GetRealWidth(35),
-                    Y = btnBrightnessText.Bottom,
-                    Width = Application.GetRealWidth(30),
-                    Height = Application.GetRealHeight(21),
-                    Text = "0%",
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    X = Application.GetRealWidth(50),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(98),
+                    Height = Application.GetRealHeight(40),
+                    TextColor = CSS_Color.TextualColor,
+                    SelectedBackgroundColor = CSS_Color.MainColor,
+                    SelectedTextColor = CSS_Color.MainBackgroundColor,
+                    BackgroundColor = CSS_Color.DividingLineColor,
+                    TextID = StringId.OFF,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    Radius = (uint)Application.GetRealWidth(5),
+                    IsSelected = true,
+                    //BorderWidth = 1,
+                    //BorderColor = 0x00000000
                 };
-                dimmingView.AddChidren(btnMinValuesText);
+                view.AddChidren(btnClose);
 
-                var dimmerBar = new DiyImageSeekBar()
+                var btnOpen = new Button()
                 {
-                    X = Application.GetRealWidth(35 + 22),
-                    Y = Application.GetRealHeight(11),
-                    Width = Application.GetRealWidth(210),
-                    Height = Application.GetRealHeight(54),
-                    SeekBarViewHeight = Application.GetRealHeight(8),
-                    ThumbImagePath = "Public/ThumbImage.png",
-                    ThumbImageHeight = Application.GetRealHeight(54),
-                    ProgressTextColor = CSS_Color.FirstLevelTitleColor,
-                    ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    ProgressBarColor = CSS_Color.AuxiliaryColor1,
-                    MaxValue = 100,
-                    Progress = brightnessValue,
-                    SeekBarPadding = Application.GetRealWidth(20),
+                    X = Application.GetRealWidth(100 + 98),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(98),
+                    Height = Application.GetRealHeight(40),
+                    TextColor = CSS_Color.TextualColor,
+                    SelectedBackgroundColor = CSS_Color.MainColor,
+                    SelectedTextColor = CSS_Color.MainBackgroundColor,
+                    BackgroundColor = CSS_Color.DividingLineColor,
+                    TextID = StringId.On,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    Radius = (uint)Application.GetRealWidth(5),
                 };
-                //dimmingView.AddChidren(dimmerBar);
+                view.AddChidren(btnOpen);
 
-                var btnMaxValuesText = new Button()
+                btnClose.MouseUpEventHandler = (sender, e) =>
                 {
-                    X = dimmerBar.Right,
-                    Y = btnBrightnessText.Bottom,
-                    Width = Application.GetRealWidth(45),
-                    Height = Application.GetRealHeight(21),
-                    Text = "100%",
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    btnClose.IsSelected = true;
+                    btnOpen.IsSelected = false;
+                    commandDic[FunctionAttributeKey.OnOff] = "off";
                 };
-                dimmingView.AddChidren(btnMaxValuesText);
-                #endregion
-
+                btnOpen.MouseUpEventHandler = (sender, e) =>
+                {
+                    btnClose.IsSelected = false;
+                    btnOpen.IsSelected = true;
+                    commandDic[FunctionAttributeKey.OnOff] = "on";
+                };
 
             }
 
-            attrView.Height = attrViewHight;
-            contentView.AddChidren(attrView);
+            else
+            {
+                if(hadRGB)
+                {
+                    attrViewHight += Application.GetRealHeight(248);
+                    hadDimming = true;
+                }
+                if (hadCCT)
+                {
+                    attrViewHight += Application.GetRealHeight(54 + 11);
+                    hadDimming = true;
+                }
+                if (hadDimming)
+                {
+                    attrViewHight += Application.GetRealHeight(54 + 11);
+                }
+                attrView.Height = attrViewHight;
+                contentView.AddChidren(attrView);
+                attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
+
+
+                if (hadDimming)
+                {
+                    LoadDimmingAttrView(attrView);
+                }
+                if (hadCCT)
+                {
+                    LoadCctAttrView(attrView);
+                }
+                if(hadRGB)
+                {
+                    LoadRgbAttrView(attrView);
+                }
+            }
+
             contentView.Height = Application.GetRealHeight(52 + 44) + attrViewHight;
             contentView.Gravity = Gravity.Center;
 
@@ -459,9 +616,10 @@
             var bottomView = new FrameLayout()
             {
                 Y = Application.GetRealHeight(52) + attrViewHight,
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealHeight(46),
             };
             contentView.AddChidren(bottomView);
+            bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
 
             var btnSave = new Button()
             {
@@ -489,212 +647,476 @@
 
             //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
             int mRectCornerID = HDLUtils.RectCornerBottomRight;
-            btnComplete.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(12), mRectCornerID);
-
-            bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
+            btnComplete.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID);
 
 
-            btnSave.MouseUpEventHandler = (sender, e) => {
-                this.Close();
-
-
-            };
 
             btnComplete.MouseUpEventHandler = (sender, e) => {
                 this.Close();
 
+                var waitPage = new Loading();
+                MainPage.BaseView.AddChidren(waitPage);
+                waitPage.Start(Language.StringByID(StringId.PleaseWait));
+
+                new Thread(() =>
+                {
+                    try
+                    {
+                        foreach (var light in lights)
+                        {
+                            Dictionary<string, string> sendDate = new Dictionary<string, string>();
+                            //璧嬪�煎満鏅姛鑳芥暟鎹�
+                            foreach (var attr in light.GetAttributes())
+                            {
+                                if (commandDic.ContainsKey(attr))
+                                {
+                                    try
+                                    {
+                                        sendDate.Add(attr, commandDic[attr]);
+                                    }
+                                    catch { }
+                                }
+
+                            }
+                                Control.Ins.SendWriteCommand(light, sendDate);
+                            Thread.Sleep(50);
+                        }
+                    }
+                    catch
+                    { }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            waitPage.Hide();
+                            if (waitPage != null)
+                            {
+                                backAction(null);
+                                waitPage.RemoveFromParent();
+                            }
+                        });
+                    }
+                })
+                { IsBackground = true }.Start();
             };
+
+
+
+            btnSave.MouseUpEventHandler += (sender, e) =>
+            {
+                if (string.IsNullOrEmpty(scene.name))
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.SceneNameCannotBeEmpty),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(bodyView);
+                    return;
+                }
+                foreach (var tempRoom in FunctionList.List.scenes)
+                {
+                    if (scene.name == tempRoom.name)
+                    {
+                        new PublicAssmebly().TipMsg(StringId.Tip, StringId.SceneNameAlreadyExists);
+                        return;
+                    }
+                }
+                var waitPage = new Loading();
+                MainPage.BaseView.AddChidren(waitPage);
+                waitPage.Start(Language.StringByID(StringId.PleaseWait));
+                new Thread(() =>
+                {
+                    try
+                    {
+                        var serverScene = new Scene();
+                        for (int i = 0; i < lights.Count; i++)
+                        {
+                            var light = lights[i];
+                            //璧嬪�煎満鏅姛鑳芥暟鎹�
+                            foreach (var attr in light.GetAttributes())
+                            {
+                                if (commandDic.ContainsKey(attr))
+                                {
+                                    try
+                                    {
+                                        light.SetAttrState(attr, commandDic[attr]);
+                                    }
+                                    catch { }
+                                }
+                            }
+                            //杞崲鍦烘櫙鐨勫姛鑳藉璞�
+                            var sceneFunction = light.ConvertSceneFunction();
+                            //鏌ヨ鏈夋病鏈夊瓨鍦�
+                            var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid);
+                            //璧嬪��
+                            if (temp != null)
+                            {
+                                temp = sceneFunction;
+                            }
+                            else
+                            {
+                                scene.functions.Add(sceneFunction);
+                            }
+                        }
+                        var result = FunctionList.List.AddScene(scene, out serverScene);
+                        Application.RunOnMainThread(() =>
+                        {
+                            if (result == StateCode.SUCCESS)
+                            {
+                                scene = serverScene;
+                                FunctionList.List.scenes.Add(scene);
+                                backAction(scene);
+                                this.Close();
+                            }
+                            else
+                            {
+                                IMessageCommon.Current.ShowErrorInfoAlter(result);
+                            }
+                        });
+                    }
+                    catch { }
+                    finally
+                    {
+                        Application.RunOnMainThread(() => {
+                            waitPage.Hide();
+                            waitPage.RemoveFromParent();
+                        });
+                    }
+                })
+                { IsBackground = true, Priority = ThreadPriority.AboveNormal }.Start();
+            };
+
+
+
+
 
 
             #endregion
 
 
             this.Show();
-            return;
-            //鍙湁璋冨厜鍣�
-            if (!hadDimming&&!hadCCT&&!hadRGB)
-            {
-                contentView.Height = Application.GetRealHeight(520);
-                contentView.Width = Application.GetRealWidth(343);
-                contentView.Gravity = Gravity.Center;
-                contentView.Radius = (uint)Application.GetRealWidth(12);
-                contentView.AddChidren(titleView);
-            }
-            else if (hadCCT && hadRGB)//
-            {
-                contentView.Height = Application.GetRealHeight(520);
-                contentView.Width = Application.GetRealWidth(343);
-                contentView.Gravity = Gravity.Center;
-                contentView.Radius = (uint)Application.GetRealWidth(12);
-                contentView.AddChidren(titleView);
-                #region 浜害璋冭妭
-                var btnBrightnessText = new Button()
-                {
-                    X = Application.GetRealWidth(35),
-                    Y = Application.GetRealHeight(82),
-                    Width = Application.GetRealWidth(224),
-                    Height = Application.GetRealHeight(21),
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextID = StringId.Brightness,
-                };
-                contentView.AddChidren(btnBrightnessText);
-
-                var btnMinValuesText = new Button()
-                {
-                    X = Application.GetRealWidth(35),
-                    Y = btnBrightnessText.Bottom,
-                    Width = Application.GetRealWidth(30),
-                    Height = Application.GetRealHeight(21),
-                    Text = "0%",
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                };
-                contentView.AddChidren(btnMinValuesText);
-
-                var dimmerBar = new DiyImageSeekBar()
-                {
-                    X = Application.GetRealWidth(35 + 22),
-                    Y = Application.GetRealHeight(312),
-                    Width = Application.GetRealWidth(210),
-                    Height = Application.GetRealHeight(54),
-                    SeekBarViewHeight = Application.GetRealHeight(8),
-                    ThumbImagePath = "Public/ThumbImage.png",
-                    ThumbImageHeight = Application.GetRealHeight(54),
-                    ProgressTextColor = CSS_Color.FirstLevelTitleColor,
-                    ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    ProgressBarColor = CSS_Color.AuxiliaryColor1 ,
-                    MaxValue = 100,
-                    Progress = brightnessValue,
-                    SeekBarPadding = Application.GetRealWidth(20),
-                };
-                contentView.AddChidren(dimmerBar);
-
-                var btnMaxValuesText = new Button()
-                {
-                    X = dimmerBar.Right,
-                    Y = btnBrightnessText.Bottom,
-                    Width = Application.GetRealWidth(45),
-                    Height = Application.GetRealHeight(21),
-                    Text = "100%",
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                };
-                contentView.AddChidren(btnMaxValuesText);
-                #endregion
-
-
-
-                #region 鑹叉俯
-                //鑹叉俯
-                var btnTempClolor = new Button();
-                btnTempClolor.X = Application.GetRealWidth(35);
-                btnTempClolor.Y = Application.GetRealHeight(159);
-                btnTempClolor.Width = Application.GetRealWidth(224);
-                btnTempClolor.Height = Application.GetRealHeight(21);
-                btnTempClolor.TextAlignment = TextAlignment.CenterLeft;
-                btnTempClolor.TextColor = CSS_Color.FirstLevelTitleColor;
-                btnTempClolor.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
-                btnTempClolor.TextID = StringId.ColorTemperature;
-                contentView.AddChidren(btnTempClolor);
-
-                //2700K
-                var btnTempClolorMin = new Button();
-                btnTempClolorMin.Y = btnTempClolor.Bottom + Application.GetRealHeight(9);
-                btnTempClolorMin.Width = Application.GetRealWidth(54);
-                btnTempClolorMin.Height = Application.GetRealHeight(21);
-                btnTempClolorMin.Text = "2700K";
-                btnTempClolorMin.TextAlignment = TextAlignment.CenterRight;
-                btnTempClolorMin.TextColor = CSS_Color.PromptingColor1;
-                btnTempClolorMin.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
-                contentView.AddChidren(btnTempClolorMin);
-
-                //婊戝姩鏉$殑鑳屾櫙鍥剧墖
-                var btnColorTemplatrueBack = new Button();
-                //闇�瑕佸噺鎺夋粦鍔ㄦ潯鐨勫乏鍙抽棿璺�
-                btnColorTemplatrueBack.Width = Application.GetRealWidth(210 - 20 * 2);
-                btnColorTemplatrueBack.Height = Application.GetRealHeight(8);
-                btnColorTemplatrueBack.Gravity = Gravity.CenterHorizontal;
-                btnColorTemplatrueBack.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatureBar.png";
-                contentView.AddChidren(btnColorTemplatrueBack);
-                //婊戝姩鏉℃帶浠�
-                var barColorTemplatrue = new CCTSeekBarControl();
-                barColorTemplatrue.X = btnTempClolorMin.Right;
-                barColorTemplatrue.Y = Application.GetRealHeight(340);
-                barColorTemplatrue.MinValue = 27;
-                barColorTemplatrue.MaxValue = 65;
-                barColorTemplatrue.ProgressBarColor = 0x00000000;//鍏ㄩ儴閫忔槑
-                barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000;
-                barColorTemplatrue.SeekBarBackgroundColor = 0x00000000;
-                contentView.AddChidren(barColorTemplatrue);
-                barColorTemplatrue.Y = btnTempClolorMin.Y - (barColorTemplatrue.Height - btnTempClolorMin.Height) / 2;
-                //鏄剧ず涓婃柟鐨凾xt
-                barColorTemplatrue.ShowCustomTextView(Application.GetRealWidth(50), CSS_FontSize.PromptFontSize_FirstLevel, CSS_Color.FirstLevelTitleColor);
-                var cct = 27;
-                int.TryParse(cctLight.status.Find((obj)=>obj.key == FunctionAttributeKey.CCT).value, out cct);
-                barColorTemplatrue.Progress = cct;
-                //璁剧疆鍒濆鍊�
-                barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
-
-                //鍙樻洿鑳屾櫙鍥剧殑Y杞村潗鏍�
-                btnColorTemplatrueBack.Y = barColorTemplatrue.Y + (barColorTemplatrue.Height - btnColorTemplatrueBack.Height) / 2;
-
-                //6500K
-                var btnTempClolorMax = new Button();
-                btnTempClolorMax.Y = btnTempClolorMin.Y;
-                btnTempClolorMax.X = barColorTemplatrue.Right;
-                btnTempClolorMax.Width = Application.GetRealWidth(54);
-                btnTempClolorMax.Height = Application.GetRealHeight(21);
-                btnTempClolorMax.Text = "6500K";
-                btnTempClolorMax.TextAlignment = TextAlignment.CenterLeft;
-                btnTempClolorMax.TextColor = CSS_Color.PromptingColor1;
-                btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
-                contentView.AddChidren(btnTempClolorMax);
-
-                #endregion
-
-                #region RGB
-
-                var btnCurColor = new Button()
-                {
-                    X = Application.GetRealWidth(24),
-                    Y = Application.GetRealHeight(241),
-                    Width = Application.GetMinRealAverage(24),
-                    Height = Application.GetMinRealAverage(24),
-                    Radius = (uint)Application.GetMinRealAverage(8),
-                    BorderColor = CSS_Color.PromptingColor2,
-                    BorderWidth = 1,
-                    BackgroundColor = (uint)(0xFF000000 + new Light().GetRGBcolor(new Function(),rgbLight.status.Find((obj) => obj.key == FunctionAttributeKey.RGB).value))
-                };
-                contentView.AddChidren(btnCurColor);
-
-                //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�)
-                var framePickerBack = new FrameLayout();
-                framePickerBack.Gravity = Gravity.CenterHorizontal;
-                framePickerBack.Y = Application.GetRealHeight(249);
-                framePickerBack.Width = Application.GetMinRealAverage(198);
-                framePickerBack.Height = Application.GetMinRealAverage(198);
-                contentView.AddChidren(framePickerBack);
-
-                var colorPicker = new ColorPicker()
-                {
-                    ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
-                };
-                framePickerBack.AddChidren(colorPicker);
-                #endregion
-            }
-            else if (hadDimming && !hadCCT && !hadRGB)
-            {
-                contentView.Height = Application.GetRealHeight(211);
-                contentView.Width = Application.GetRealWidth(343);
-                contentView.Gravity = Gravity.Center;
-                contentView.Radius = (uint)Application.GetRealWidth(12);
-                contentView.AddChidren(titleView);
-            }
+            
         }
+
+        /// <summary>
+        /// 鍔犺浇璋冨厜灞炴�ц缃帶浠�
+        /// </summary>
+        /// <param name="attrView"></param>
+        void LoadDimmingAttrView(VerticalScrolViewLayout attrView)
+        {
+
+            commandDic.TryAdd(FunctionAttributeKey.Percent, "0");
+
+            var dimmingView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(54 + 11)
+            };
+            attrView.AddChidren(dimmingView);
+
+            #region 浜害璋冭妭
+            var btnBrightnessText = new Button()
+            {
+                X = Application.GetRealWidth(35),
+                Y = Application.GetRealHeight(1),
+                Width = Application.GetRealWidth(224),
+                Height = Application.GetRealHeight(25),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextID = StringId.Brightness,
+            };
+            btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + commandDic[FunctionAttributeKey.Percent] + "%";
+            dimmingView.AddChidren(btnBrightnessText);
+
+
+            var btnMinValuesText = new Button()
+            {
+                X = Application.GetRealWidth(35),
+                Y = btnBrightnessText.Bottom,
+                Width = Application.GetRealWidth(40),
+                Height = Application.GetRealHeight(21),
+                Text = "0%",
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            dimmingView.AddChidren(btnMinValuesText);
+
+            var dimmerBar = new DiyImageSeekBar()
+            {
+                X = Application.GetRealWidth(45 + 10),
+                Y = Application.GetRealHeight(11),
+                Width = Application.GetRealWidth(220),
+                Height = Application.GetRealHeight(54),
+                SeekBarViewHeight = Application.GetRealHeight(8),
+                ThumbImagePath = "Public/ThumbImage.png",
+                ThumbImageHeight = Application.GetRealHeight(54),
+                ProgressTextColor = CSS_Color.FirstLevelTitleColor,
+                ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                ProgressBarColor = CSS_Color.AuxiliaryColor1,
+                MaxValue = 100,
+                Progress = Convert.ToInt32(commandDic[FunctionAttributeKey.Percent]),
+                SeekBarPadding = Application.GetRealWidth(20),
+                IsProgressTextShow = false,
+                ProgressChangeDelayTime = 0,
+            };
+            dimmingView.AddChidren(dimmerBar);
+            dimmerBar.OnProgressChangedEvent = (sender, e) => {
+                btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%";
+            };
+            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
+                commandDic[FunctionAttributeKey.Percent] = dimmerBar.Progress.ToString();
+                btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%";
+            };
+
+
+            var btnMaxValuesText = new Button()
+            {
+                X = dimmerBar.Right,
+                Y = btnBrightnessText.Bottom,
+                Width = Application.GetRealWidth(55),
+                Height = Application.GetRealHeight(21),
+                Text = "100%",
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            dimmingView.AddChidren(btnMaxValuesText);
+            #endregion
+
+        }
+
+        /// <summary>
+        /// 鍔犺浇cct灞炴�ц缃帶浠�
+        /// </summary>
+        /// <param name="attrView"></param>
+        void LoadCctAttrView(VerticalScrolViewLayout attrView)
+        {
+            #region 鑹叉俯
+
+            var cctView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(54 + 11)
+            };
+            attrView.AddChidren(cctView);
+
+
+            //鑹叉俯
+            var btnTempClolor = new Button();
+            btnTempClolor.X = Application.GetRealWidth(35);
+            btnTempClolor.Y = Application.GetRealHeight(1);
+            btnTempClolor.Width = Application.GetRealWidth(224);
+            btnTempClolor.Height = Application.GetRealHeight(21);
+            btnTempClolor.TextAlignment = TextAlignment.CenterLeft;
+            btnTempClolor.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnTempClolor.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnTempClolor.TextID = StringId.ColorTemperature;
+            cctView.AddChidren(btnTempClolor);
+
+            //2700K
+            var btnTempClolorMin = new Button()
+            {
+                X = Application.GetRealWidth(35),
+                Y = btnTempClolor.Bottom,
+                Width = Application.GetRealWidth(40),
+                Height = Application.GetRealHeight(21),
+            };
+            btnTempClolorMin.Width = Application.GetRealWidth(54);
+            btnTempClolorMin.Height = Application.GetRealHeight(21);
+            btnTempClolorMin.Text = "2700K";
+            btnTempClolorMin.TextAlignment = TextAlignment.CenterLeft;
+            btnTempClolorMin.TextColor = CSS_Color.PromptingColor1;
+            btnTempClolorMin.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            cctView.AddChidren(btnTempClolorMin);
+
+            //婊戝姩鏉$殑鑳屾櫙鍥剧墖
+            var btnColorTemplatrueBack = new Button()
+            {
+                X = Application.GetRealWidth(55 + 22 + 15),
+                Y = Application.GetRealHeight(11),
+                Width = Application.GetRealWidth(180),
+                Height = Application.GetRealHeight(54),
+            };
+            btnColorTemplatrueBack.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatureBar.png";
+            btnColorTemplatrueBack.Height = Application.GetRealHeight(8);
+            btnColorTemplatrueBack.Gravity = Gravity.CenterHorizontal;
+            cctView.AddChidren(btnColorTemplatrueBack);
+            //婊戝姩鏉℃帶浠�
+            var barColorTemplatrue = new CCTSeekBarControl()
+            {
+                X = Application.GetRealWidth(55 + 22),
+                Y = Application.GetRealHeight(11),
+                Width = Application.GetRealWidth(220),
+                Height = Application.GetRealHeight(54),
+            };
+            barColorTemplatrue.MinValue = 27;
+            barColorTemplatrue.MaxValue = 65;
+            barColorTemplatrue.ProgressBarColor = 0x00000000;//鍏ㄩ儴閫忔槑
+            barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000;
+            barColorTemplatrue.SeekBarBackgroundColor = 0x00000000;
+            cctView.AddChidren(barColorTemplatrue);
+            barColorTemplatrue.Y = btnTempClolorMin.Y - (barColorTemplatrue.Height - btnTempClolorMin.Height) / 2;
+            var cct = 27;
+            //int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out cct);
+            barColorTemplatrue.Progress = cct;
+            //璁剧疆鍒濆鍊�
+            btnTempClolor.Text = Language.StringByID(StringId.ColorTemperature) + " " + (barColorTemplatrue.Progress * 100 + "K");
+            barColorTemplatrue.OnProgressChangedEvent = (sender, e) =>
+            {
+                btnTempClolor.Text = Language.StringByID(StringId.ColorTemperature) + " " + (barColorTemplatrue.Progress * 100 + "K");
+            };
+            barColorTemplatrue.OnStopTrackingTouchEvent = (sender, e) =>
+            {
+                commandDic[FunctionAttributeKey.CCT] = (barColorTemplatrue.Progress*100).ToString();
+            };
+            //鍙樻洿鑳屾櫙鍥剧殑Y杞村潗鏍�
+            btnColorTemplatrueBack.Y = barColorTemplatrue.Y + (barColorTemplatrue.Height - btnColorTemplatrueBack.Height) / 2;
+
+            //6500K
+            var btnTempClolorMax = new Button();
+            btnTempClolorMax.Y = btnTempClolorMin.Y;
+            btnTempClolorMax.X = barColorTemplatrue.Right - Application.GetRealWidth(30);
+            btnTempClolorMax.Width = Application.GetRealWidth(54);
+            btnTempClolorMax.Height = Application.GetRealHeight(21);
+            btnTempClolorMax.Text = "6500K";
+            btnTempClolorMax.TextAlignment = TextAlignment.CenterRight;
+            btnTempClolorMax.TextColor = CSS_Color.PromptingColor1;
+            btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            cctView.AddChidren(btnTempClolorMax);
+
+            #endregion
+
+
+        }
+
+        /// <summary>
+        /// 鍔犺浇rgb灞炴�ц缃帶浠�
+        /// </summary>
+        /// <param name="attrView"></param>
+        void LoadRgbAttrView(VerticalScrolViewLayout attrView)
+        {
+
+            #region RGB
+            commandDic.TryAdd(FunctionAttributeKey.RGB, "255,255,255");
+
+            var rgbView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(248)
+            };
+            attrView.AddChidren(rgbView);
+
+
+            var btnCurColor = new Button()
+            {
+                X = Application.GetRealWidth(24),
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetMinRealAverage(24),
+                Height = Application.GetMinRealAverage(24),
+                Radius = (uint)Application.GetMinRealAverage(8),
+                BorderColor = CSS_Color.PromptingColor2,
+                BorderWidth = 1,
+                BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(commandDic[FunctionAttributeKey.RGB]))
+            };
+            rgbView.AddChidren(btnCurColor);
+
+            //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�)
+            var framePickerBack = new FrameLayout();
+            framePickerBack.Gravity = Gravity.CenterHorizontal;
+            framePickerBack.Y = Application.GetRealHeight(20);
+            framePickerBack.Width = Application.GetMinRealAverage(198);
+            framePickerBack.Height = Application.GetMinRealAverage(198);
+            rgbView.AddChidren(framePickerBack);
+
+            var colorPicker = new ColorPicker()
+            {
+                ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
+            };
+            framePickerBack.AddChidren(colorPicker);
+
+
+
+
+
+
+            //鐧界偣鎺т欢
+            var btnWhiteRound = new Button();
+            btnWhiteRound.Width = Application.GetRealWidth(24);
+            btnWhiteRound.Height = Application.GetRealWidth(24);
+            btnWhiteRound.UnSelectedImagePath = "FunctionIcon/Light/ColorWheelTip.png";
+            btnWhiteRound.Visible = false;
+            framePickerBack.AddChidren(btnWhiteRound);
+
+
+            //褰撳墠鐐瑰嚮鐨勩�愮偣銆戞槸鍚︽纭�
+            bool pointIsRight = false;
+            //鍦嗙殑鍗婂緞(鑰冭檻杈圭晫,闇�瑕佽缃畠鐨勫崐寰勬瘮杈冨皬涓�鐐�)
+            int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12);
+
+
+            colorPicker.ColorChaged += (sender2, e2) => {
+                string rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString();
+                commandDic[FunctionAttributeKey.RGB] = rgbString;
+                btnCurColor.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(rgbString));
+            };
+            colorPicker.MouseDownEventHandler += (sender, e) =>
+            {
+                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);
+            };
+
+
+            #endregion
+
+        }
+
+
+        /// <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;
+        }
+
     }
 
 }
\ No newline at end of file

--
Gitblit v1.8.0