using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone.UserCenter.DevicePanel { /// /// 按键面板的颜色选择界面 /// public class PanelColorSelectForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 颜色选择结束的事件(R,G,B) /// public Action FinishSelectColorEvent; /// /// 选择的RGB /// private List listRGB = null; /// /// 当前选择的控件(外框) /// private FrameLayoutStatuControl nowSelectIcon1 = null; /// /// 圆盘选择的颜色显示控件(外框) /// private FrameLayoutStatuControl wheelSelectIcon1 = null; /// /// 圆盘选择的颜色显示控件(内框) /// private IconViewControl wheelSelectIcon2 = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// R /// G /// B public void ShowForm(int i_R,int i_G,int i_B) { //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uSelectColor)); //初始化中部信息 this.InitMiddleFrame(i_R, i_G, i_B); //确定 var btnfinish = new BottomClickButton(); btnfinish.TextID = R.MyInternationalizationString.Confrim; bodyFrameLayout.AddChidren(btnfinish); btnfinish.MouseUpEventHandler += (sender, e) => { if (listRGB == null || FinishSelectColorEvent == null) { this.CloseForm(); return; } //回调函数 this.FinishSelectColorEvent(listRGB[0], listRGB[1], listRGB[2]); this.CloseForm(); }; } /// /// 初始化中部信息 /// /// R /// G /// B private void InitMiddleFrame(int i_R, int i_G, int i_B) { bodyFrameLayout.BackgroundColor = UserCenterColor.Current.White; //清空bodyFrame this.ClearBodyFrame(); //初始化颜色圆盘控件 this.InitColorPictrueControl(); //初始化备用颜色的控件 this.InitSpareColorControl(i_R, i_G, i_B); } #endregion #region ■ 初始化颜色圆盘_____________________ /// /// 初始化颜色圆盘控件 /// private void InitColorPictrueControl() { //圆盘控件的FrameLayout var frameBack = new FrameLayout(); frameBack.Y = Application.GetRealHeight(66); frameBack.Height = Application.GetRealHeight(1204); bodyFrameLayout.AddChidren(frameBack); var framePic = new FrameLayout(); framePic.Width = this.GetPictrueRealSize(588); framePic.Height = this.GetPictrueRealSize(588); framePic.Gravity = Gravity.Center; frameBack.AddChidren(framePic); //圆盘控件 var colorPic = new ColorPicker(); colorPic.ColorImagePath = "Item/PickerColorWheel.png"; framePic.AddChidren(colorPic); //白点控件 var btnWhiteView = new IconViewControl(30); btnWhiteView.Visible = false; btnWhiteView.BackgroundColor = UserCenterColor.Current.White; btnWhiteView.Radius = (uint)this.GetPictrueRealSize(30) / 2; framePic.AddChidren(btnWhiteView); colorPic.ColorChaged += (sender, eColor) => { listRGB = new List(); listRGB.Add(Convert.ToInt32(Convert.ToString(eColor[0]))); listRGB.Add(Convert.ToInt32(Convert.ToString(eColor[1]))); listRGB.Add(Convert.ToInt32(Convert.ToString(eColor[2]))); //显示选择颜色的控件 if (nowSelectIcon1 != null) { nowSelectIcon1.BorderColor = UserCenterColor.Current.White; } wheelSelectIcon2.BackgroundColor = this.GetColorByRGB(eColor[0], eColor[1], eColor[2]); wheelSelectIcon1.BorderColor = 0xffcccccc; wheelSelectIcon1.Name = listRGB[0] + "-" + listRGB[1] + "-" + listRGB[2]; nowSelectIcon1 = wheelSelectIcon1; }; colorPic.MouseDownEventHandler += (sender, e) => { //显示白点 btnWhiteView.X = (int)e.X; btnWhiteView.Y = (int)e.Y; if (btnWhiteView.Visible == false) { btnWhiteView.Visible = true; } }; } #endregion #region ■ 初始化预选颜色_____________________ /// /// 初始化备用颜色的控件 /// /// R /// G /// B private void InitSpareColorControl(int i_R, int i_G, int i_B) { //控件数 var listColor = this.InitSpareDefultColor(); //X轴初始坐标 int Xdefult = (bodyFrameLayout.Width - this.GetPictrueRealSize(80 + 24) * (listColor.Count - 1) - this.GetPictrueRealSize(80)) / 2; for (int i = 0; i < listColor.Count; i++) { var dataColor = listColor[i]; var btnFrame = new FrameLayoutStatuControl(); btnFrame.Height = this.GetPictrueRealSize(80); btnFrame.Width = this.GetPictrueRealSize(80); btnFrame.Radius = (uint)this.GetPictrueRealSize(80) / 2; btnFrame.X = Xdefult + i * this.GetPictrueRealSize(80 + 24); btnFrame.Y = Application.GetRealHeight(1054); btnFrame.BackgroundColor = UserCenterColor.Current.White; btnFrame.BorderWidth = 1; btnFrame.BorderColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(btnFrame); //分两步计算,不然有可能它得出的结果有误差导致不居中 int iconWidth = btnFrame.Height - this.GetPictrueRealSize(10) - this.GetPictrueRealSize(10); var btnIcon = new IconViewControl(iconWidth, false); btnIcon.Gravity = Gravity.Center; btnIcon.Radius = (uint)btnIcon.IconSize / 2; btnFrame.AddChidren(btnIcon, ChidrenBindMode.BindEvent); if (dataColor != null) { //预设置的颜色 btnFrame.Name = dataColor[0] + "-" + dataColor[1] + "-" + dataColor[2]; btnIcon.BackgroundColor = this.GetColorByRGB((byte)dataColor[0], (byte)dataColor[1], (byte)dataColor[2]); } else { //原来的颜色 btnFrame.BorderColor = 0xffcccccc; btnIcon.BackgroundColor = this.GetColorByRGB((byte)i_R, (byte)i_G, (byte)i_B); wheelSelectIcon1 = btnFrame; wheelSelectIcon2 = btnIcon; nowSelectIcon1 = btnFrame; } btnFrame.ButtonClickEvent += (sender, e) => { //显示选择颜色的控件 if (nowSelectIcon1 != null) { nowSelectIcon1.BorderColor = UserCenterColor.Current.White; } btnFrame.BorderColor = 0xffcccccc; nowSelectIcon1 = btnFrame; if (btnFrame.Name != null) { listRGB = new List(); string[] Arry = btnFrame.Name.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries); listRGB.Add(Convert.ToInt32(Convert.ToString(Arry[0]))); listRGB.Add(Convert.ToInt32(Convert.ToString(Arry[1]))); listRGB.Add(Convert.ToInt32(Convert.ToString(Arry[2]))); } }; } } #endregion #region ■ 一般方法___________________________ /// /// 初始化备用颜色的默认值 /// /// private List> InitSpareDefultColor() { var list = new List>(); list.Add(new List() { 253, 226, 39 }); list.Add(new List() { 121, 255, 197 }); list.Add(null); list.Add(new List() { 198, 85, 250 }); list.Add(new List() { 255, 117, 67 }); return list; } /// /// 将RGB转换为颜色 /// /// /// /// /// private uint GetColorByRGB(byte R, byte G, byte B) { return (uint)(0xFF000000 + R * 256 * 256 + G * 256 + B); } #endregion #region ■ 界面关闭___________________________ /// /// 界面关闭 /// public override void CloseFormBefore() { this.FinishSelectColorEvent = null; base.CloseFormBefore(); } #endregion } }