From e79b65b97a8ae1eae5ee172dea1b52d041006599 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期三, 02 九月 2020 17:24:32 +0800
Subject: [PATCH] 2020-09-02-3
---
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelColorSelectForm.cs | 238 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 218 insertions(+), 20 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelColorSelectForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelColorSelectForm.cs
index b1cbd81..71725b2 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelColorSelectForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelColorSelectForm.cs
@@ -32,6 +32,14 @@
/// 鍦嗙洏閫夋嫨鐨勯鑹叉樉绀烘帶浠�(鍐呮)
/// </summary>
private IconViewControl wheelSelectIcon2 = null;
+ /// <summary>
+ /// 鏄惁鏄鑹查�夋嫨
+ /// </summary>
+ private bool isColorSelect = false;
+ /// <summary>
+ /// 棰滆壊鍊艰緭鍏ユ帶浠�
+ /// </summary>
+ private TextInputControl txtColorInput = null;
#endregion
@@ -43,8 +51,10 @@
/// <param name="i_R">R</param>
/// <param name="i_G">G</param>
/// <param name="i_B">B</param>
- public void ShowForm(int i_R,int i_G,int i_B)
+ public void ShowForm(int i_R, int i_G, int i_B)
{
+ this.ScrollEnabled = false;
+
//璁剧疆澶撮儴淇℃伅
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uSelectColor));
@@ -95,17 +105,15 @@
/// </summary>
private void InitColorPictrueControl()
{
- //鍦嗙洏鎺т欢鐨凢rameLayout
- var frameBack = new FrameLayout();
- frameBack.Y = Application.GetRealHeight(66);
- frameBack.Height = Application.GetRealHeight(1204);
- bodyFrameLayout.AddChidren(frameBack);
+ //鍒濆鍖栭鑹茶緭鍏ユ帶浠�
+ this.txtColorInput = this.InitColorInputControl();
var framePic = new FrameLayout();
framePic.Width = this.GetPictrueRealSize(588);
framePic.Height = this.GetPictrueRealSize(588);
- framePic.Gravity = Gravity.Center;
- frameBack.AddChidren(framePic);
+ framePic.Gravity = Gravity.CenterHorizontal;
+ framePic.Y = Application.GetRealHeight(192);
+ bodyFrameLayout.AddChidren(framePic);
//鍦嗙洏鎺т欢
var colorPic = new ColorPicker();
@@ -119,33 +127,142 @@
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])));
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;
+ this.ShowNowSelectColorControl(eColor);
+
+ //鑾峰彇棰滆壊鐨勭炕璇戞枃鏈�
+ isColorSelect = true;
+ this.txtColorInput.Text = this.GetColorTextTranslate(listRGB[0], listRGB[1], listRGB[2]);
};
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);
+ };
+
+ //鎵嬪姩杈撳叆鍊兼敼鍙樹簨浠�
+ this.txtColorInput.TextChangeEventHandler += (sender, value) =>
+ {
+ if (isColorSelect == true)
+ {
+ //杩欓噷鏄敱鐐瑰嚮鑹茬洏杩涜璧嬪�艰Е鍙�
+ isColorSelect = false;
+ return;
+ }
+ //妫�娴嬭緭鍏ョ殑棰滆壊鍊�
+ var byteColor = this.CheckInputColorValue(value);
+ if (byteColor == null)
+ {
+ return;
+ }
+ if (btnWhiteView.Visible == true)
+ {
+ //鐧界偣闅愯棌
+ btnWhiteView.Visible = false;
+ }
+
+ //璁板綍缂撳瓨
+ listRGB = new List<int>();
+ listRGB.Add(Convert.ToInt32(Convert.ToString(byteColor[0])));
+ listRGB.Add(Convert.ToInt32(Convert.ToString(byteColor[1])));
+ listRGB.Add(Convert.ToInt32(Convert.ToString(byteColor[2])));
+
+ //鏄剧ず閫夋嫨棰滆壊鐨勬帶浠�
+ this.ShowNowSelectColorControl(byteColor);
+ };
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栭鑹茶緭鍏ユ帶浠�
+ /// </summary>
+ /// <returns></returns>
+ private TextInputControl InitColorInputControl()
+ {
+ //鑷畾涔夎壊鍊肩殑澶栨
+ var frameInput = new NormalFrameLayout();
+ frameInput.Width = Application.GetRealWidth(458);
+ frameInput.Height = Application.GetRealHeight(104);
+ frameInput.Y = Application.GetRealHeight(1103);
+ frameInput.Gravity = Gravity.CenterHorizontal;
+ frameInput.BorderColor = 0xffcccccc;
+ frameInput.Radius = (uint)Application.GetRealWidth(17);
+ frameInput.BorderWidth = Application.GetRealWidth(3) == 0 ? 1 : (uint)Application.GetRealWidth(3);
+ bodyFrameLayout.AddChidren(frameInput);
+ var btnMark = new NormalViewControl(100, 58, true);
+ btnMark.X = Application.GetRealWidth(35);
+ btnMark.Gravity = Gravity.CenterVertical;
+ btnMark.IsBold = true;
+ btnMark.Text = "# ";
+ btnMark.Width = btnMark.GetRealWidthByText();
+ btnMark.TextColor = UserCenterColor.Current.TextGrayColor2;
+ frameInput.AddChidren(btnMark);
+ //鑷畾涔夎壊鍊艰緭鍏ユ
+ var txtInput = new TextInputControl(400, 58, true);
+ txtInput.X = btnMark.Right;
+ txtInput.Gravity = Gravity.CenterVertical;
+ txtInput.TextSize = 16;
+ txtInput.FrameBorder = frameInput;
+ frameInput.AddChidren(txtInput);
+ //鑹插�煎彿涓�6浣嶏紙鐢变换鎰忔暟瀛�+瀛楁瘝缁勫悎锛�
+ var btnTipView = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(55), false);
+ btnTipView.Y = frameInput.Bottom + Application.GetRealHeight(20);
+ btnTipView.IsBold = true;
+ btnTipView.TextAlignment = TextAlignment.Center;
+ btnTipView.TextColor = UserCenterColor.Current.TextGrayColor2;
+ btnTipView.TextSize = 12;
+ btnTipView.TextID = R.MyInternationalizationString.uColorLengthMsg;
+ bodyFrameLayout.AddChidren(btnTipView);
+
+ return txtInput;
+ }
+
+ /// <summary>
+ /// 鏄剧ず閫夋嫨棰滆壊鐨勬帶浠�
+ /// </summary>
+ /// <param name="eColor"></param>
+ private void ShowNowSelectColorControl(byte[] eColor)
+ {
+ //鏄剧ず閫夋嫨棰滆壊鐨勬帶浠�
+ if (nowSelectIcon1 != null)
+ {
+ nowSelectIcon1.BorderColor = UserCenterColor.Current.White;
+ }
+ var uintColor = this.GetColorByRGB(eColor[0], eColor[1], eColor[2]);
+ wheelSelectIcon2.BackgroundColor = uintColor;
+ wheelSelectIcon1.BorderColor = 0xffcccccc;
+ wheelSelectIcon1.Name = listRGB[0] + "-" + listRGB[1] + "-" + listRGB[2];
+ nowSelectIcon1 = wheelSelectIcon1;
}
#endregion
@@ -173,7 +290,7 @@
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.Y = Application.GetRealHeight(880);
btnFrame.BackgroundColor = UserCenterColor.Current.White;
btnFrame.BorderWidth = 1;
btnFrame.BorderColor = UserCenterColor.Current.White;
@@ -184,7 +301,7 @@
var btnIcon = new IconViewControl(iconWidth, false);
btnIcon.Gravity = Gravity.Center;
btnIcon.Radius = (uint)btnIcon.IconSize / 2;
- btnFrame.AddChidren(btnIcon, ChidrenBindMode.BindEventOnly);
+ btnFrame.AddChidren(btnIcon, ChidrenBindMode.BindEvent);
if (dataColor != null)
{
@@ -200,6 +317,10 @@
wheelSelectIcon1 = btnFrame;
wheelSelectIcon2 = btnIcon;
nowSelectIcon1 = btnFrame;
+
+ //鑾峰彇棰滆壊鐨勭炕璇戞枃鏈�
+ isColorSelect = true;
+ this.txtColorInput.Text = this.GetColorTextTranslate(i_R, i_G, i_B);
}
btnFrame.ButtonClickEvent += (sender, e) =>
@@ -220,6 +341,9 @@
listRGB.Add(Convert.ToInt32(Convert.ToString(Arry[1])));
listRGB.Add(Convert.ToInt32(Convert.ToString(Arry[2])));
}
+ //鑾峰彇棰滆壊鐨勭炕璇戞枃鏈�
+ isColorSelect = true;
+ this.txtColorInput.Text = this.GetColorTextTranslate(listRGB[0], listRGB[1], listRGB[2]);
};
}
}
@@ -227,6 +351,35 @@
#endregion
#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>
/// 鍒濆鍖栧鐢ㄩ鑹茬殑榛樿鍊�
@@ -246,6 +399,51 @@
}
/// <summary>
+ /// 妫�娴嬭緭鍏ョ殑棰滆壊鍊�
+ /// </summary>
+ /// <param name="colorText"></param>
+ /// <returns></returns>
+ private byte[] CheckInputColorValue(string colorText)
+ {
+ //鍙湁闀垮害涓�6鎵嶅鐞�
+ if (colorText.Length != 6) { return null; }
+
+ colorText = colorText.ToUpper();
+ foreach (var c in colorText)
+ {
+ if (char.IsNumber(c) == true)
+ {
+ //鏁板瓧鐨勮瘽,OK
+ continue;
+ }
+ if ('A' <= c && c <= 'F')
+ {
+ //A-F鐨勮瘽,OK
+ continue;
+ }
+ return null;
+ }
+ int R = Convert.ToInt32(colorText.Substring(0, 2), 16);
+ int G = Convert.ToInt32(colorText.Substring(2, 2), 16);
+ int B = Convert.ToInt32(colorText.Substring(4, 2), 16);
+ return new byte[] { (byte)R, (byte)G, (byte)B };
+ }
+
+ /// <summary>
+ /// 鑾峰彇棰滆壊鐨勭炕璇戞枃鏈�
+ /// </summary>
+ /// <param name="i_R"></param>
+ /// <param name="i_G"></param>
+ /// <param name="i_B"></param>
+ /// <returns></returns>
+ private string GetColorTextTranslate(int i_R, int i_G, int i_B)
+ {
+ return Convert.ToString(i_R, 16).ToUpper().PadLeft(2, '0')
+ + Convert.ToString(i_G, 16).ToUpper().PadLeft(2, '0')
+ + Convert.ToString(i_B, 16).ToUpper().PadLeft(2, '0');
+ }
+
+ /// <summary>
/// 灏哛GB杞崲涓洪鑹�
/// </summary>
/// <param name="R"></param>
--
Gitblit v1.8.0