diff --git a/src/PBAnaly/Assist/GlobalData.cs b/src/PBAnaly/Assist/GlobalData.cs
new file mode 100644
index 0000000..fd0c1d6
--- /dev/null
+++ b/src/PBAnaly/Assist/GlobalData.cs
@@ -0,0 +1,169 @@
+using AntdUI;
+using PBAnaly.LoginCommon;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SQLite;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PBAnaly.Assist
+{
+ public static class GlobalData
+ {
+
+ public static string dbPath = "UserManage.db";
+ public static string connectionString = $"Data Source={dbPath};Version=3;";
+
+
+ #region Propertys 全局属性,属性名、属性值
+ ///
+ /// 全局属性,属性名、属性值
+ ///
+ private static Dictionary Propertys;
+ #endregion
+ ///
+ /// 全局属性更改事件
+ ///
+ public static event PropertyChangedHandle PropertyChanged;
+ ///
+ /// 带两个参数无返回值的委托
+ ///
+ /// 属性名
+ /// 属性值
+ public delegate void PropertyChangedHandle(string name, string value);
+
+ #region SetProperty 设置全局属性
+ ///
+ /// 设置全局属性
+ ///
+ /// 属性名
+ /// 属性值
+ public static void SetProperty(string name, string value)
+ {
+ //判断当前key是否在集合内
+ if (GlobalData.Propertys.ContainsKey(name))
+ {
+ //当前key在集合内
+ //判断要设置的属性是否相同
+ if (GlobalData.Propertys[name] != value)
+ {
+ //设置属性
+ GlobalData.Propertys[name] = value;
+
+ //根据属性名更新数据库
+ UpdateGlobalPropertyByName(name, value);
+
+ //触发属性更改事件
+ PropertyChanged?.Invoke(name, value);
+ }
+ }
+ else
+ {
+ try
+ {
+ using (var connection = new SQLiteConnection(connectionString))
+ {
+ connection.Open();
+
+ string insertSQL = @"
+ INSERT OR IGNORE INTO global_property (property_name, property_value)
+ VALUES (@property_name, @property_value);";
+
+ using (var command = new SQLiteCommand(insertSQL, connection))
+ {
+ // 参数化查询,防止SQL注入
+ command.Parameters.AddWithValue("@property_name", name);
+ command.Parameters.AddWithValue("@property_value", value);
+ command.ExecuteNonQuery();
+ }
+
+ connection.Close();
+ }
+
+ //更新集合中当前key对应的值
+ GlobalData.Propertys[name] = value;
+
+ PropertyChanged?.Invoke(name, value);
+ }
+ catch (Exception ex)
+ {
+ }
+ }
+ }
+ #endregion
+
+ #region GetProperty 根据属性名获取属性值
+ ///
+ /// 根据属性名获取属性值
+ ///
+ /// 属性名
+ /// 属性值
+ public static string GetProperty(string name)
+ {
+ string value = "";
+ if (GlobalData.Propertys.ContainsKey(name))
+ {
+ value = GlobalData.Propertys[name];
+ }
+ return value;
+ }
+ #endregion
+
+ #region LoadGlobalPropertyFromDb 加载全局变量
+ ///
+ /// 加载全局变量LoadGlobalPropertyFromDb
+ ///
+ public static void LoadGlobalPropertyFromDb()
+ {
+ Propertys = new Dictionary();
+ using (var connection = new SQLiteConnection(connectionString))
+ {
+ connection.Open();
+
+ string query = "select *from global_property";
+ using (var command = new SQLiteCommand(query, connection))
+ {
+ using (var reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ string key = reader["property_name"].ToString();
+ string value = reader["property_value"].ToString();
+ GlobalData.Propertys.Add(key, value);
+ }
+ }
+ }
+
+ connection.Close();
+ }
+ }
+ #endregion
+
+ #region UpdateGlobalPropertyByName 根据属性名更新属性表
+ ///
+ /// 根据属性名更新属性表
+ ///
+ /// 属性名
+ /// 属性值
+ private static void UpdateGlobalPropertyByName(string name, object value)
+ {
+ string sql = string.Format("update global_property set property_value='{0}' where property_name='{1}'", value, name);
+ using (SQLiteConnection conn = new SQLiteConnection(connectionString))
+ {
+ conn.Open();
+
+ using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
+ {
+ var blnResult = (cmd.ExecuteNonQuery() > 0);
+ }
+ conn.Close();
+ }
+
+ }
+ #endregion
+
+ }
+}
diff --git a/src/PBAnaly/LaneChartForm.Designer.cs b/src/PBAnaly/LaneChartForm.Designer.cs
index 4b42075..99706b4 100644
--- a/src/PBAnaly/LaneChartForm.Designer.cs
+++ b/src/PBAnaly/LaneChartForm.Designer.cs
@@ -28,13 +28,13 @@
///
private void InitializeComponent()
{
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
- System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint5 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1D, 5D);
- System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint6 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.5D, 5D);
- System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint7 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.9D, 8D);
- System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint8 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 0D);
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint1 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1D, 5D);
+ System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint2 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.5D, 5D);
+ System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint3 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.9D, 8D);
+ System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint4 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 0D);
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.选项ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -49,46 +49,46 @@
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.文件ToolStripMenuItem,
this.选项ToolStripMenuItem});
- this.menuStrip1.Location = new System.Drawing.Point(3, 24);
+ this.menuStrip1.Location = new System.Drawing.Point(4, 30);
this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2);
- this.menuStrip1.Size = new System.Drawing.Size(899, 25);
+ this.menuStrip1.Padding = new System.Windows.Forms.Padding(5, 2, 0, 2);
+ this.menuStrip1.Size = new System.Drawing.Size(1199, 30);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// 文件ToolStripMenuItem
//
this.文件ToolStripMenuItem.Name = "文件ToolStripMenuItem";
- this.文件ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
+ this.文件ToolStripMenuItem.Size = new System.Drawing.Size(53, 26);
this.文件ToolStripMenuItem.Text = "文件";
//
// 选项ToolStripMenuItem
//
this.选项ToolStripMenuItem.Name = "选项ToolStripMenuItem";
- this.选项ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
+ this.选项ToolStripMenuItem.Size = new System.Drawing.Size(53, 26);
this.选项ToolStripMenuItem.Text = "选项";
//
// chart1
//
- chartArea2.Name = "ChartArea1";
- this.chart1.ChartAreas.Add(chartArea2);
+ chartArea1.Name = "ChartArea1";
+ this.chart1.ChartAreas.Add(chartArea1);
this.chart1.Dock = System.Windows.Forms.DockStyle.Fill;
- legend2.Name = "Legend1";
- this.chart1.Legends.Add(legend2);
- this.chart1.Location = new System.Drawing.Point(3, 49);
- this.chart1.Margin = new System.Windows.Forms.Padding(2);
+ legend1.Name = "Legend1";
+ this.chart1.Legends.Add(legend1);
+ this.chart1.Location = new System.Drawing.Point(4, 60);
+ this.chart1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chart1.Name = "chart1";
this.chart1.Palette = System.Windows.Forms.DataVisualization.Charting.ChartColorPalette.Bright;
- series2.ChartArea = "ChartArea1";
- series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine;
- series2.Legend = "Legend1";
- series2.Name = "Series1";
- series2.Points.Add(dataPoint5);
- series2.Points.Add(dataPoint6);
- series2.Points.Add(dataPoint7);
- series2.Points.Add(dataPoint8);
- this.chart1.Series.Add(series2);
- this.chart1.Size = new System.Drawing.Size(899, 366);
+ series1.ChartArea = "ChartArea1";
+ series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine;
+ series1.Legend = "Legend1";
+ series1.Name = "Series1";
+ series1.Points.Add(dataPoint1);
+ series1.Points.Add(dataPoint2);
+ series1.Points.Add(dataPoint3);
+ series1.Points.Add(dataPoint4);
+ this.chart1.Series.Add(series1);
+ this.chart1.Size = new System.Drawing.Size(1199, 458);
this.chart1.TabIndex = 1;
this.chart1.Text = "chart1";
this.chart1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.chart1_MouseDown);
@@ -96,17 +96,17 @@
//
// LaneChartForm
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(905, 418);
+ this.ClientSize = new System.Drawing.Size(1207, 522);
this.Controls.Add(this.chart1);
this.Controls.Add(this.menuStrip1);
this.DrawerAutoShow = true;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.MainMenuStrip = this.menuStrip1;
- this.Margin = new System.Windows.Forms.Padding(2);
+ this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "LaneChartForm";
- this.Padding = new System.Windows.Forms.Padding(3, 24, 3, 3);
+ this.Padding = new System.Windows.Forms.Padding(4, 30, 4, 4);
this.Text = "LaneChartForm";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LaneChartForm_FormClosing);
this.menuStrip1.ResumeLayout(false);
diff --git a/src/PBAnaly/LoginCommon/BackPassWordForm.cs b/src/PBAnaly/LoginCommon/BackPassWordForm.cs
index 678a53a..f44dc8a 100644
--- a/src/PBAnaly/LoginCommon/BackPassWordForm.cs
+++ b/src/PBAnaly/LoginCommon/BackPassWordForm.cs
@@ -1,11 +1,15 @@
using AntdUI;
+using PBAnaly.Assist;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -21,6 +25,15 @@ namespace PBAnaly.LoginCommon
this.StartPosition = FormStartPosition.CenterScreen;
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
#region =====重写WndPoc方法 无边框窗体更改大小及拖动=========
@@ -102,7 +115,49 @@ namespace PBAnaly.LoginCommon
}
#endregion
- private void txt_UserName_TextChanged(object sender, EventArgs e)
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
+
+
+
+private void txt_UserName_TextChanged(object sender, EventArgs e)
{
try
{
diff --git a/src/PBAnaly/LoginCommon/BackPassWordForm.en-US.resx b/src/PBAnaly/LoginCommon/BackPassWordForm.en-US.resx
new file mode 100644
index 0000000..20f6acc
--- /dev/null
+++ b/src/PBAnaly/LoginCommon/BackPassWordForm.en-US.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ back
+
+
diff --git a/src/PBAnaly/LoginCommon/BackPassWordForm.zh-CN.resx b/src/PBAnaly/LoginCommon/BackPassWordForm.zh-CN.resx
new file mode 100644
index 0000000..66c0f7a
--- /dev/null
+++ b/src/PBAnaly/LoginCommon/BackPassWordForm.zh-CN.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 返回
+
+
diff --git a/src/PBAnaly/LoginCommon/LoginForm.cs b/src/PBAnaly/LoginCommon/LoginForm.cs
index 38637cd..85b7514 100644
--- a/src/PBAnaly/LoginCommon/LoginForm.cs
+++ b/src/PBAnaly/LoginCommon/LoginForm.cs
@@ -7,8 +7,11 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -27,7 +30,16 @@ namespace PBAnaly.LoginCommon
this.StartPosition = FormStartPosition.CenterScreen;
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
-
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+
//如果上一次登录的时候是勾选了记住本次登录,那么就像用户名和密码填充到本文控件
if (UserManage.LastLoginUser.Count > 0)
@@ -44,9 +56,48 @@ namespace PBAnaly.LoginCommon
}
}
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
#region =====重写WndPoc方法 无边框窗体更改大小及拖动=========
- const int HTLEFT = 10;
+const int HTLEFT = 10;
const int HTRIGHT = 11;
const int HTTOP = 12;
const int HTTOPLEFT = 13;
diff --git a/src/PBAnaly/LoginCommon/RegisterFrom.Designer.cs b/src/PBAnaly/LoginCommon/RegisterFrom.Designer.cs
index 5be9a4f..f195692 100644
--- a/src/PBAnaly/LoginCommon/RegisterFrom.Designer.cs
+++ b/src/PBAnaly/LoginCommon/RegisterFrom.Designer.cs
@@ -29,19 +29,19 @@
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
+ this.label_re_Answer = new System.Windows.Forms.Label();
+ this.label_re_question = new System.Windows.Forms.Label();
+ this.label_enterPassword = new System.Windows.Forms.Label();
+ this.label_re_password = new System.Windows.Forms.Label();
+ this.label_re_userNma = new System.Windows.Forms.Label();
+ this.txt_answer = new System.Windows.Forms.TextBox();
+ this.txt_broblem = new System.Windows.Forms.TextBox();
+ this.txt_enter_password = new System.Windows.Forms.TextBox();
this.txt_Password = new System.Windows.Forms.TextBox();
this.txt_UserName = new System.Windows.Forms.TextBox();
- this.btn_register = new MaterialSkin.Controls.MaterialButton();
- this.btn_back = new MaterialSkin.Controls.MaterialButton();
+ this.btn_re_register = new MaterialSkin.Controls.MaterialButton();
+ this.btn_back_form_re = new MaterialSkin.Controls.MaterialButton();
this.label4 = new System.Windows.Forms.Label();
- this.txt_enter_password = new System.Windows.Forms.TextBox();
- this.txt_broblem = new System.Windows.Forms.TextBox();
- this.txt_answer = new System.Windows.Forms.TextBox();
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
- this.label5 = new System.Windows.Forms.Label();
- this.label6 = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
@@ -51,23 +51,112 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
- this.panel1.Controls.Add(this.label6);
- this.panel1.Controls.Add(this.label5);
- this.panel1.Controls.Add(this.label3);
- this.panel1.Controls.Add(this.label2);
- this.panel1.Controls.Add(this.label1);
+ this.panel1.Controls.Add(this.label_re_Answer);
+ this.panel1.Controls.Add(this.label_re_question);
+ this.panel1.Controls.Add(this.label_enterPassword);
+ this.panel1.Controls.Add(this.label_re_password);
+ this.panel1.Controls.Add(this.label_re_userNma);
this.panel1.Controls.Add(this.txt_answer);
this.panel1.Controls.Add(this.txt_broblem);
this.panel1.Controls.Add(this.txt_enter_password);
this.panel1.Controls.Add(this.txt_Password);
this.panel1.Controls.Add(this.txt_UserName);
- this.panel1.Controls.Add(this.btn_register);
- this.panel1.Controls.Add(this.btn_back);
+ this.panel1.Controls.Add(this.btn_re_register);
+ this.panel1.Controls.Add(this.btn_back_form_re);
this.panel1.Location = new System.Drawing.Point(-1, 33);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(638, 537);
this.panel1.TabIndex = 452;
//
+ // label_re_Answer
+ //
+ this.label_re_Answer.AutoSize = true;
+ this.label_re_Answer.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_re_Answer.ForeColor = System.Drawing.Color.White;
+ this.label_re_Answer.Location = new System.Drawing.Point(90, 361);
+ this.label_re_Answer.Name = "label_re_Answer";
+ this.label_re_Answer.Size = new System.Drawing.Size(80, 25);
+ this.label_re_Answer.TabIndex = 459;
+ this.label_re_Answer.Text = "Answer";
+ //
+ // label_re_question
+ //
+ this.label_re_question.AutoSize = true;
+ this.label_re_question.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_re_question.ForeColor = System.Drawing.Color.White;
+ this.label_re_question.Location = new System.Drawing.Point(90, 282);
+ this.label_re_question.Name = "label_re_question";
+ this.label_re_question.Size = new System.Drawing.Size(94, 25);
+ this.label_re_question.TabIndex = 458;
+ this.label_re_question.Text = "Question";
+ //
+ // label_enterPassword
+ //
+ this.label_enterPassword.AutoSize = true;
+ this.label_enterPassword.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_enterPassword.ForeColor = System.Drawing.Color.White;
+ this.label_enterPassword.Location = new System.Drawing.Point(90, 209);
+ this.label_enterPassword.Name = "label_enterPassword";
+ this.label_enterPassword.Size = new System.Drawing.Size(99, 25);
+ this.label_enterPassword.TabIndex = 457;
+ this.label_enterPassword.Text = "Password";
+ //
+ // label_re_password
+ //
+ this.label_re_password.AutoSize = true;
+ this.label_re_password.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_re_password.ForeColor = System.Drawing.Color.White;
+ this.label_re_password.Location = new System.Drawing.Point(90, 138);
+ this.label_re_password.Name = "label_re_password";
+ this.label_re_password.Size = new System.Drawing.Size(99, 25);
+ this.label_re_password.TabIndex = 456;
+ this.label_re_password.Text = "Password";
+ //
+ // label_re_userNma
+ //
+ this.label_re_userNma.AutoSize = true;
+ this.label_re_userNma.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_re_userNma.ForeColor = System.Drawing.Color.White;
+ this.label_re_userNma.Location = new System.Drawing.Point(90, 72);
+ this.label_re_userNma.Name = "label_re_userNma";
+ this.label_re_userNma.Size = new System.Drawing.Size(65, 25);
+ this.label_re_userNma.TabIndex = 455;
+ this.label_re_userNma.Text = "Name";
+ //
+ // txt_answer
+ //
+ this.txt_answer.Font = new System.Drawing.Font("宋体", 18F);
+ this.txt_answer.Location = new System.Drawing.Point(195, 355);
+ this.txt_answer.Multiline = true;
+ this.txt_answer.Name = "txt_answer";
+ this.txt_answer.Size = new System.Drawing.Size(389, 33);
+ this.txt_answer.TabIndex = 21;
+ this.txt_answer.Text = "Security answer";
+ this.txt_answer.Click += new System.EventHandler(this.txt_answer_Click);
+ //
+ // txt_broblem
+ //
+ this.txt_broblem.Font = new System.Drawing.Font("宋体", 18F);
+ this.txt_broblem.Location = new System.Drawing.Point(195, 276);
+ this.txt_broblem.Multiline = true;
+ this.txt_broblem.Name = "txt_broblem";
+ this.txt_broblem.Size = new System.Drawing.Size(389, 33);
+ this.txt_broblem.TabIndex = 20;
+ this.txt_broblem.Text = "Security problem";
+ this.txt_broblem.Click += new System.EventHandler(this.txt_broblem_Click);
+ //
+ // txt_enter_password
+ //
+ this.txt_enter_password.Font = new System.Drawing.Font("宋体", 18F);
+ this.txt_enter_password.Location = new System.Drawing.Point(195, 203);
+ this.txt_enter_password.Multiline = true;
+ this.txt_enter_password.Name = "txt_enter_password";
+ this.txt_enter_password.PasswordChar = '*';
+ this.txt_enter_password.Size = new System.Drawing.Size(389, 33);
+ this.txt_enter_password.TabIndex = 19;
+ this.txt_enter_password.Text = "User Name";
+ this.txt_enter_password.Click += new System.EventHandler(this.txt_enter_password_Click);
+ //
// txt_Password
//
this.txt_Password.Font = new System.Drawing.Font("宋体", 18F);
@@ -91,47 +180,47 @@
this.txt_UserName.Text = "User Name";
this.txt_UserName.Click += new System.EventHandler(this.txt_UserName_Click);
//
- // btn_register
+ // btn_re_register
//
- this.btn_register.AutoSize = false;
- this.btn_register.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.btn_register.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
- this.btn_register.Depth = 0;
- this.btn_register.HighEmphasis = true;
- this.btn_register.Icon = null;
- this.btn_register.Location = new System.Drawing.Point(394, 431);
- this.btn_register.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
- this.btn_register.MouseState = MaterialSkin.MouseState.HOVER;
- this.btn_register.Name = "btn_register";
- this.btn_register.NoAccentTextColor = System.Drawing.Color.Empty;
- this.btn_register.Size = new System.Drawing.Size(147, 36);
- this.btn_register.TabIndex = 15;
- this.btn_register.Text = "register";
- this.btn_register.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
- this.btn_register.UseAccentColor = false;
- this.btn_register.UseVisualStyleBackColor = true;
- this.btn_register.Click += new System.EventHandler(this.btn_register_Click);
+ this.btn_re_register.AutoSize = false;
+ this.btn_re_register.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.btn_re_register.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
+ this.btn_re_register.Depth = 0;
+ this.btn_re_register.HighEmphasis = true;
+ this.btn_re_register.Icon = null;
+ this.btn_re_register.Location = new System.Drawing.Point(394, 431);
+ this.btn_re_register.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.btn_re_register.MouseState = MaterialSkin.MouseState.HOVER;
+ this.btn_re_register.Name = "btn_re_register";
+ this.btn_re_register.NoAccentTextColor = System.Drawing.Color.Empty;
+ this.btn_re_register.Size = new System.Drawing.Size(147, 36);
+ this.btn_re_register.TabIndex = 15;
+ this.btn_re_register.Text = "register";
+ this.btn_re_register.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
+ this.btn_re_register.UseAccentColor = false;
+ this.btn_re_register.UseVisualStyleBackColor = true;
+ this.btn_re_register.Click += new System.EventHandler(this.btn_register_Click);
//
- // btn_back
+ // btn_back_form_re
//
- this.btn_back.AutoSize = false;
- this.btn_back.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.btn_back.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
- this.btn_back.Depth = 0;
- this.btn_back.HighEmphasis = true;
- this.btn_back.Icon = null;
- this.btn_back.Location = new System.Drawing.Point(14, 9);
- this.btn_back.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
- this.btn_back.MouseState = MaterialSkin.MouseState.HOVER;
- this.btn_back.Name = "btn_back";
- this.btn_back.NoAccentTextColor = System.Drawing.Color.Empty;
- this.btn_back.Size = new System.Drawing.Size(62, 30);
- this.btn_back.TabIndex = 14;
- this.btn_back.Text = "back";
- this.btn_back.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
- this.btn_back.UseAccentColor = false;
- this.btn_back.UseVisualStyleBackColor = true;
- this.btn_back.Click += new System.EventHandler(this.btn_back_Click);
+ this.btn_back_form_re.AutoSize = false;
+ this.btn_back_form_re.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.btn_back_form_re.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
+ this.btn_back_form_re.Depth = 0;
+ this.btn_back_form_re.HighEmphasis = true;
+ this.btn_back_form_re.Icon = null;
+ this.btn_back_form_re.Location = new System.Drawing.Point(14, 9);
+ this.btn_back_form_re.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.btn_back_form_re.MouseState = MaterialSkin.MouseState.HOVER;
+ this.btn_back_form_re.Name = "btn_back_form_re";
+ this.btn_back_form_re.NoAccentTextColor = System.Drawing.Color.Empty;
+ this.btn_back_form_re.Size = new System.Drawing.Size(62, 30);
+ this.btn_back_form_re.TabIndex = 14;
+ this.btn_back_form_re.Text = "back";
+ this.btn_back_form_re.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
+ this.btn_back_form_re.UseAccentColor = false;
+ this.btn_back_form_re.UseVisualStyleBackColor = true;
+ this.btn_back_form_re.Click += new System.EventHandler(this.btn_back_Click);
//
// label4
//
@@ -144,95 +233,6 @@
this.label4.TabIndex = 454;
this.label4.Text = "register";
//
- // txt_enter_password
- //
- this.txt_enter_password.Font = new System.Drawing.Font("宋体", 18F);
- this.txt_enter_password.Location = new System.Drawing.Point(195, 203);
- this.txt_enter_password.Multiline = true;
- this.txt_enter_password.Name = "txt_enter_password";
- this.txt_enter_password.PasswordChar = '*';
- this.txt_enter_password.Size = new System.Drawing.Size(389, 33);
- this.txt_enter_password.TabIndex = 19;
- this.txt_enter_password.Text = "User Name";
- this.txt_enter_password.Click += new System.EventHandler(this.txt_enter_password_Click);
- //
- // txt_broblem
- //
- this.txt_broblem.Font = new System.Drawing.Font("宋体", 18F);
- this.txt_broblem.Location = new System.Drawing.Point(195, 276);
- this.txt_broblem.Multiline = true;
- this.txt_broblem.Name = "txt_broblem";
- this.txt_broblem.Size = new System.Drawing.Size(389, 33);
- this.txt_broblem.TabIndex = 20;
- this.txt_broblem.Text = "Security problem";
- this.txt_broblem.Click += new System.EventHandler(this.txt_broblem_Click);
- //
- // txt_answer
- //
- this.txt_answer.Font = new System.Drawing.Font("宋体", 18F);
- this.txt_answer.Location = new System.Drawing.Point(195, 355);
- this.txt_answer.Multiline = true;
- this.txt_answer.Name = "txt_answer";
- this.txt_answer.Size = new System.Drawing.Size(389, 33);
- this.txt_answer.TabIndex = 21;
- this.txt_answer.Text = "Security answer";
- this.txt_answer.Click += new System.EventHandler(this.txt_answer_Click);
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label1.ForeColor = System.Drawing.Color.White;
- this.label1.Location = new System.Drawing.Point(78, 72);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(111, 25);
- this.label1.TabIndex = 455;
- this.label1.Text = "User Name";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label2.ForeColor = System.Drawing.Color.White;
- this.label2.Location = new System.Drawing.Point(90, 138);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(99, 25);
- this.label2.TabIndex = 456;
- this.label2.Text = "Password";
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label3.ForeColor = System.Drawing.Color.White;
- this.label3.Location = new System.Drawing.Point(11, 209);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(178, 25);
- this.label3.TabIndex = 457;
- this.label3.Text = "Confirm Password";
- //
- // label5
- //
- this.label5.AutoSize = true;
- this.label5.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label5.ForeColor = System.Drawing.Color.White;
- this.label5.Location = new System.Drawing.Point(23, 282);
- this.label5.Name = "label5";
- this.label5.Size = new System.Drawing.Size(166, 25);
- this.label5.TabIndex = 458;
- this.label5.Text = "security question";
- //
- // label6
- //
- this.label6.AutoSize = true;
- this.label6.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label6.ForeColor = System.Drawing.Color.White;
- this.label6.Location = new System.Drawing.Point(109, 361);
- this.label6.Name = "label6";
- this.label6.Size = new System.Drawing.Size(80, 25);
- this.label6.TabIndex = 459;
- this.label6.Text = "Answer";
- //
// RegisterFrom
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -259,13 +259,13 @@
private System.Windows.Forms.TextBox txt_enter_password;
private System.Windows.Forms.TextBox txt_Password;
private System.Windows.Forms.TextBox txt_UserName;
- private MaterialSkin.Controls.MaterialButton btn_register;
- private MaterialSkin.Controls.MaterialButton btn_back;
+ private MaterialSkin.Controls.MaterialButton btn_re_register;
+ private MaterialSkin.Controls.MaterialButton btn_back_form_re;
private System.Windows.Forms.Label label4;
- private System.Windows.Forms.Label label6;
- private System.Windows.Forms.Label label5;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label_re_Answer;
+ private System.Windows.Forms.Label label_re_question;
+ private System.Windows.Forms.Label label_enterPassword;
+ private System.Windows.Forms.Label label_re_password;
+ private System.Windows.Forms.Label label_re_userNma;
}
}
\ No newline at end of file
diff --git a/src/PBAnaly/LoginCommon/RegisterFrom.cs b/src/PBAnaly/LoginCommon/RegisterFrom.cs
index 68c1fbe..4a46346 100644
--- a/src/PBAnaly/LoginCommon/RegisterFrom.cs
+++ b/src/PBAnaly/LoginCommon/RegisterFrom.cs
@@ -1,10 +1,14 @@
-using System;
+using PBAnaly.Assist;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -22,8 +26,56 @@ namespace PBAnaly.LoginCommon
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
+
#region =====重写WndPoc方法 无边框窗体更改大小及拖动=========
const int HTLEFT = 10;
const int HTRIGHT = 11;
diff --git a/src/PBAnaly/LoginCommon/RoleManageForm.Designer.cs b/src/PBAnaly/LoginCommon/RoleManageForm.Designer.cs
index 07f0e3b..fd978b6 100644
--- a/src/PBAnaly/LoginCommon/RoleManageForm.Designer.cs
+++ b/src/PBAnaly/LoginCommon/RoleManageForm.Designer.cs
@@ -33,9 +33,9 @@
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
this.panel1 = new System.Windows.Forms.Panel();
- this.btn_Close = new System.Windows.Forms.Button();
+ this.btn_role_save = new System.Windows.Forms.Button();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
- this.btn_save = new System.Windows.Forms.Button();
+ this.btn_Close = new System.Windows.Forms.Button();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
@@ -52,27 +52,28 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.BackColor = System.Drawing.Color.White;
- this.panel1.Controls.Add(this.btn_save);
+ this.panel1.Controls.Add(this.btn_role_save);
this.panel1.Controls.Add(this.dataGridView1);
this.panel1.Location = new System.Drawing.Point(0, 27);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(756, 569);
this.panel1.TabIndex = 0;
//
- // btn_Close
+ // btn_role_save
//
- this.btn_Close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.btn_Close.BackColor = System.Drawing.Color.Transparent;
- this.btn_Close.FlatAppearance.BorderSize = 0;
- this.btn_Close.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_Close.ForeColor = System.Drawing.Color.Transparent;
- this.btn_Close.Image = global::PBAnaly.Properties.Resources.关闭White;
- this.btn_Close.Location = new System.Drawing.Point(712, 0);
- this.btn_Close.Name = "btn_Close";
- this.btn_Close.Size = new System.Drawing.Size(44, 28);
- this.btn_Close.TabIndex = 458;
- this.btn_Close.UseVisualStyleBackColor = false;
- this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
+ this.btn_role_save.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_role_save.FlatAppearance.BorderSize = 0;
+ this.btn_role_save.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_role_save.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
+ this.btn_role_save.ForeColor = System.Drawing.Color.White;
+ this.btn_role_save.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_role_save.Location = new System.Drawing.Point(641, 49);
+ this.btn_role_save.Name = "btn_role_save";
+ this.btn_role_save.Size = new System.Drawing.Size(101, 38);
+ this.btn_role_save.TabIndex = 506;
+ this.btn_role_save.Text = "保存";
+ this.btn_role_save.UseVisualStyleBackColor = false;
+ this.btn_role_save.Click += new System.EventHandler(this.btn_save_Click);
//
// dataGridView1
//
@@ -120,57 +121,56 @@
this.dataGridView1.Size = new System.Drawing.Size(632, 569);
this.dataGridView1.TabIndex = 4;
//
- // btn_save
+ // btn_Close
//
- this.btn_save.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
- this.btn_save.FlatAppearance.BorderSize = 0;
- this.btn_save.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_save.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
- this.btn_save.ForeColor = System.Drawing.Color.White;
- this.btn_save.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btn_save.Location = new System.Drawing.Point(641, 49);
- this.btn_save.Name = "btn_save";
- this.btn_save.Size = new System.Drawing.Size(101, 38);
- this.btn_save.TabIndex = 506;
- this.btn_save.Text = "保存";
- this.btn_save.UseVisualStyleBackColor = false;
- this.btn_save.Click += new System.EventHandler(this.btn_save_Click);
+ this.btn_Close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.btn_Close.BackColor = System.Drawing.Color.Transparent;
+ this.btn_Close.FlatAppearance.BorderSize = 0;
+ this.btn_Close.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_Close.ForeColor = System.Drawing.Color.Transparent;
+ this.btn_Close.Image = global::PBAnaly.Properties.Resources.关闭White;
+ this.btn_Close.Location = new System.Drawing.Point(712, 0);
+ this.btn_Close.Name = "btn_Close";
+ this.btn_Close.Size = new System.Drawing.Size(44, 28);
+ this.btn_Close.TabIndex = 458;
+ this.btn_Close.UseVisualStyleBackColor = false;
+ this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
//
// Column1
//
- this.Column1.HeaderText = "序号";
+ this.Column1.HeaderText = "ID";
this.Column1.Name = "Column1";
//
// Column2
//
- this.Column2.HeaderText = "描述";
+ this.Column2.HeaderText = "Description";
this.Column2.Name = "Column2";
this.Column2.ReadOnly = true;
//
// Column3
//
- this.Column3.HeaderText = "操作员";
+ this.Column3.HeaderText = "Operator";
this.Column3.Name = "Column3";
this.Column3.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.Column3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// Column4
//
- this.Column4.HeaderText = "工程师";
+ this.Column4.HeaderText = "Engineer";
this.Column4.Name = "Column4";
this.Column4.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.Column4.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// Column5
//
- this.Column5.HeaderText = "管理员";
+ this.Column5.HeaderText = "Administrator";
this.Column5.Name = "Column5";
this.Column5.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.Column5.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// Column6
//
- this.Column6.HeaderText = "超级管理员";
+ this.Column6.HeaderText = "SupperAdministrator";
this.Column6.Name = "Column6";
this.Column6.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.Column6.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
@@ -198,7 +198,7 @@
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.Button btn_Close;
- private System.Windows.Forms.Button btn_save;
+ private System.Windows.Forms.Button btn_role_save;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewCheckBoxColumn Column3;
diff --git a/src/PBAnaly/LoginCommon/RoleManageForm.cs b/src/PBAnaly/LoginCommon/RoleManageForm.cs
index a730897..3593028 100644
--- a/src/PBAnaly/LoginCommon/RoleManageForm.cs
+++ b/src/PBAnaly/LoginCommon/RoleManageForm.cs
@@ -1,10 +1,14 @@
-using System;
+using PBAnaly.Assist;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -20,8 +24,58 @@ namespace PBAnaly.LoginCommon
this.StartPosition = FormStartPosition.CenterScreen;
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+
}
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
+
#region =====重写WndPoc方法 无边框窗体更改大小及拖动=========
const int HTLEFT = 10;
const int HTRIGHT = 11;
diff --git a/src/PBAnaly/LoginCommon/UserManage.cs b/src/PBAnaly/LoginCommon/UserManage.cs
index df74a64..7657d80 100644
--- a/src/PBAnaly/LoginCommon/UserManage.cs
+++ b/src/PBAnaly/LoginCommon/UserManage.cs
@@ -105,6 +105,19 @@ namespace PBAnaly.LoginCommon
Console.WriteLine("表 'last' 已创建。");
}
+ sql = @"
+ CREATE TABLE IF NOT EXISTS global_property (
+ property_name VARCHAR(200) NOT NULL,
+ property_value VARCHAR(2000) NOT NULL,
+ PRIMARY KEY (property_name)
+ );";
+
+ using (var command = new SQLiteCommand(sql, connection))
+ {
+ command.ExecuteNonQuery(); // 执行SQL命令创建表
+ Console.WriteLine("表 'global_property' 已创建。");
+ }
+
// 插入数据
InsertDefaultUserData(connectionString);
}
diff --git a/src/PBAnaly/LoginCommon/UserManageForm.Designer.cs b/src/PBAnaly/LoginCommon/UserManageForm.Designer.cs
index d583fdd..95107ff 100644
--- a/src/PBAnaly/LoginCommon/UserManageForm.Designer.cs
+++ b/src/PBAnaly/LoginCommon/UserManageForm.Designer.cs
@@ -45,22 +45,22 @@
this.btn_role_manage = new System.Windows.Forms.Button();
this.btn_fix_role = new System.Windows.Forms.Button();
this.txt_UserName = new System.Windows.Forms.TextBox();
- this.label11 = new System.Windows.Forms.Label();
+ this.label_role_userName = new System.Windows.Forms.Label();
this.cbx_role_role = new System.Windows.Forms.ComboBox();
- this.label12 = new System.Windows.Forms.Label();
+ this.label1_role = new System.Windows.Forms.Label();
this.tab_delete = new System.Windows.Forms.TabPage();
this.btn_delete_user = new System.Windows.Forms.Button();
- this.label1 = new System.Windows.Forms.Label();
+ this.label_DeleteTips = new System.Windows.Forms.Label();
this.tab_fix_password = new System.Windows.Forms.TabPage();
this.btn_FixPassword = new System.Windows.Forms.Button();
this.txt_password = new System.Windows.Forms.TextBox();
- this.label3 = new System.Windows.Forms.Label();
+ this.label_password_formUserManage = new System.Windows.Forms.Label();
this.txt_fix_p_UserName = new System.Windows.Forms.TextBox();
- this.label2 = new System.Windows.Forms.Label();
+ this.label_Username_form_userManage = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
- this.btn_delete = new System.Windows.Forms.Button();
- this.btn_edit_password = new System.Windows.Forms.Button();
- this.btn_editRole = new System.Windows.Forms.Button();
+ this.btn_delete_role = new System.Windows.Forms.Button();
+ this.btn_edit_password_role = new System.Windows.Forms.Button();
+ this.btn_editRole_head = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -131,7 +131,7 @@
//
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Column1.DefaultCellStyle = dataGridViewCellStyle2;
- this.Column1.HeaderText = "序号";
+ this.Column1.HeaderText = "ID";
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
this.Column1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
@@ -140,14 +140,14 @@
//
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
this.Column2.DefaultCellStyle = dataGridViewCellStyle3;
- this.Column2.HeaderText = "用户名";
+ this.Column2.HeaderText = "UserName";
this.Column2.Name = "Column2";
this.Column2.ReadOnly = true;
this.Column2.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// Column5
//
- this.Column5.HeaderText = "创建人";
+ this.Column5.HeaderText = "Creator";
this.Column5.Name = "Column5";
this.Column5.ReadOnly = true;
//
@@ -155,7 +155,7 @@
//
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Column3.DefaultCellStyle = dataGridViewCellStyle4;
- this.Column3.HeaderText = "创建时间";
+ this.Column3.HeaderText = "CreationTime";
this.Column3.Name = "Column3";
this.Column3.ReadOnly = true;
this.Column3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
@@ -164,7 +164,7 @@
//
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Column4.DefaultCellStyle = dataGridViewCellStyle5;
- this.Column4.HeaderText = "权限";
+ this.Column4.HeaderText = "Role";
this.Column4.Name = "Column4";
this.Column4.ReadOnly = true;
this.Column4.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
@@ -188,9 +188,9 @@
this.tab_fix.Controls.Add(this.btn_role_manage);
this.tab_fix.Controls.Add(this.btn_fix_role);
this.tab_fix.Controls.Add(this.txt_UserName);
- this.tab_fix.Controls.Add(this.label11);
+ this.tab_fix.Controls.Add(this.label_role_userName);
this.tab_fix.Controls.Add(this.cbx_role_role);
- this.tab_fix.Controls.Add(this.label12);
+ this.tab_fix.Controls.Add(this.label1_role);
this.tab_fix.Location = new System.Drawing.Point(4, 22);
this.tab_fix.Name = "tab_fix";
this.tab_fix.Padding = new System.Windows.Forms.Padding(3);
@@ -241,15 +241,15 @@
this.txt_UserName.Size = new System.Drawing.Size(292, 28);
this.txt_UserName.TabIndex = 504;
//
- // label11
+ // label_role_userName
//
- this.label11.AutoSize = true;
- this.label11.Font = new System.Drawing.Font("宋体", 15F);
- this.label11.Location = new System.Drawing.Point(18, 51);
- this.label11.Name = "label11";
- this.label11.Size = new System.Drawing.Size(69, 20);
- this.label11.TabIndex = 503;
- this.label11.Text = "用户名";
+ this.label_role_userName.AutoSize = true;
+ this.label_role_userName.Font = new System.Drawing.Font("宋体", 15F);
+ this.label_role_userName.Location = new System.Drawing.Point(18, 51);
+ this.label_role_userName.Name = "label_role_userName";
+ this.label_role_userName.Size = new System.Drawing.Size(69, 20);
+ this.label_role_userName.TabIndex = 503;
+ this.label_role_userName.Text = "用户名";
//
// cbx_role_role
//
@@ -266,20 +266,20 @@
this.cbx_role_role.Size = new System.Drawing.Size(292, 28);
this.cbx_role_role.TabIndex = 502;
//
- // label12
+ // label1_role
//
- this.label12.AutoSize = true;
- this.label12.Font = new System.Drawing.Font("宋体", 15F);
- this.label12.Location = new System.Drawing.Point(38, 148);
- this.label12.Name = "label12";
- this.label12.Size = new System.Drawing.Size(49, 20);
- this.label12.TabIndex = 501;
- this.label12.Text = "权限";
+ this.label1_role.AutoSize = true;
+ this.label1_role.Font = new System.Drawing.Font("宋体", 15F);
+ this.label1_role.Location = new System.Drawing.Point(18, 145);
+ this.label1_role.Name = "label1_role";
+ this.label1_role.Size = new System.Drawing.Size(49, 20);
+ this.label1_role.TabIndex = 501;
+ this.label1_role.Text = "权限";
//
// tab_delete
//
this.tab_delete.Controls.Add(this.btn_delete_user);
- this.tab_delete.Controls.Add(this.label1);
+ this.tab_delete.Controls.Add(this.label_DeleteTips);
this.tab_delete.Location = new System.Drawing.Point(4, 22);
this.tab_delete.Name = "tab_delete";
this.tab_delete.Padding = new System.Windows.Forms.Padding(3);
@@ -304,22 +304,22 @@
this.btn_delete_user.UseVisualStyleBackColor = false;
this.btn_delete_user.Click += new System.EventHandler(this.btn_delete_user_Click);
//
- // label1
+ // label_DeleteTips
//
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(119, 17);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(161, 12);
- this.label1.TabIndex = 0;
- this.label1.Text = "选中左侧表格的一行即可删除";
+ this.label_DeleteTips.AutoSize = true;
+ this.label_DeleteTips.Location = new System.Drawing.Point(119, 17);
+ this.label_DeleteTips.Name = "label_DeleteTips";
+ this.label_DeleteTips.Size = new System.Drawing.Size(161, 12);
+ this.label_DeleteTips.TabIndex = 0;
+ this.label_DeleteTips.Text = "选中左侧表格的一行即可删除";
//
// tab_fix_password
//
this.tab_fix_password.Controls.Add(this.btn_FixPassword);
this.tab_fix_password.Controls.Add(this.txt_password);
- this.tab_fix_password.Controls.Add(this.label3);
+ this.tab_fix_password.Controls.Add(this.label_password_formUserManage);
this.tab_fix_password.Controls.Add(this.txt_fix_p_UserName);
- this.tab_fix_password.Controls.Add(this.label2);
+ this.tab_fix_password.Controls.Add(this.label_Username_form_userManage);
this.tab_fix_password.Location = new System.Drawing.Point(4, 22);
this.tab_fix_password.Name = "tab_fix_password";
this.tab_fix_password.Padding = new System.Windows.Forms.Padding(3);
@@ -333,7 +333,7 @@
this.btn_FixPassword.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
this.btn_FixPassword.FlatAppearance.BorderSize = 0;
this.btn_FixPassword.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_FixPassword.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
+ this.btn_FixPassword.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
this.btn_FixPassword.ForeColor = System.Drawing.Color.White;
this.btn_FixPassword.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btn_FixPassword.Location = new System.Drawing.Point(285, 216);
@@ -347,108 +347,108 @@
// txt_password
//
this.txt_password.Font = new System.Drawing.Font("宋体", 10F);
- this.txt_password.Location = new System.Drawing.Point(94, 148);
+ this.txt_password.Location = new System.Drawing.Point(98, 148);
this.txt_password.Multiline = true;
this.txt_password.Name = "txt_password";
this.txt_password.Size = new System.Drawing.Size(292, 28);
this.txt_password.TabIndex = 508;
//
- // label3
+ // label_password_formUserManage
//
- this.label3.AutoSize = true;
- this.label3.Font = new System.Drawing.Font("宋体", 15F);
- this.label3.Location = new System.Drawing.Point(39, 156);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(49, 20);
- this.label3.TabIndex = 507;
- this.label3.Text = "密码";
+ this.label_password_formUserManage.AutoSize = true;
+ this.label_password_formUserManage.Font = new System.Drawing.Font("宋体", 13F);
+ this.label_password_formUserManage.Location = new System.Drawing.Point(19, 158);
+ this.label_password_formUserManage.Name = "label_password_formUserManage";
+ this.label_password_formUserManage.Size = new System.Drawing.Size(44, 18);
+ this.label_password_formUserManage.TabIndex = 507;
+ this.label_password_formUserManage.Text = "密码";
//
// txt_fix_p_UserName
//
this.txt_fix_p_UserName.Font = new System.Drawing.Font("宋体", 13F);
- this.txt_fix_p_UserName.Location = new System.Drawing.Point(94, 46);
+ this.txt_fix_p_UserName.Location = new System.Drawing.Point(98, 46);
this.txt_fix_p_UserName.Multiline = true;
this.txt_fix_p_UserName.Name = "txt_fix_p_UserName";
this.txt_fix_p_UserName.ReadOnly = true;
this.txt_fix_p_UserName.Size = new System.Drawing.Size(292, 28);
this.txt_fix_p_UserName.TabIndex = 506;
//
- // label2
+ // label_Username_form_userManage
//
- this.label2.AutoSize = true;
- this.label2.Font = new System.Drawing.Font("宋体", 15F);
- this.label2.Location = new System.Drawing.Point(19, 54);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(69, 20);
- this.label2.TabIndex = 505;
- this.label2.Text = "用户名";
+ this.label_Username_form_userManage.AutoSize = true;
+ this.label_Username_form_userManage.Font = new System.Drawing.Font("宋体", 13F);
+ this.label_Username_form_userManage.Location = new System.Drawing.Point(19, 54);
+ this.label_Username_form_userManage.Name = "label_Username_form_userManage";
+ this.label_Username_form_userManage.Size = new System.Drawing.Size(62, 18);
+ this.label_Username_form_userManage.TabIndex = 505;
+ this.label_Username_form_userManage.Text = "用户名";
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.panel1.Controls.Add(this.btn_delete);
- this.panel1.Controls.Add(this.btn_edit_password);
- this.panel1.Controls.Add(this.btn_editRole);
+ this.panel1.Controls.Add(this.btn_delete_role);
+ this.panel1.Controls.Add(this.btn_edit_password_role);
+ this.panel1.Controls.Add(this.btn_editRole_head);
this.panel1.Location = new System.Drawing.Point(3, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(429, 43);
this.panel1.TabIndex = 453;
//
- // btn_delete
+ // btn_delete_role
//
- this.btn_delete.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.btn_delete_role.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.btn_delete.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
- this.btn_delete.FlatAppearance.BorderSize = 0;
- this.btn_delete.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_delete.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
- this.btn_delete.ForeColor = System.Drawing.Color.White;
- this.btn_delete.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btn_delete.Location = new System.Drawing.Point(181, 2);
- this.btn_delete.Name = "btn_delete";
- this.btn_delete.Size = new System.Drawing.Size(78, 38);
- this.btn_delete.TabIndex = 498;
- this.btn_delete.Text = "删除";
- this.btn_delete.UseVisualStyleBackColor = false;
- this.btn_delete.Click += new System.EventHandler(this.btn_delete_Click);
+ this.btn_delete_role.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_delete_role.FlatAppearance.BorderSize = 0;
+ this.btn_delete_role.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_delete_role.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
+ this.btn_delete_role.ForeColor = System.Drawing.Color.White;
+ this.btn_delete_role.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_delete_role.Location = new System.Drawing.Point(181, 2);
+ this.btn_delete_role.Name = "btn_delete_role";
+ this.btn_delete_role.Size = new System.Drawing.Size(78, 38);
+ this.btn_delete_role.TabIndex = 498;
+ this.btn_delete_role.Text = "删除";
+ this.btn_delete_role.UseVisualStyleBackColor = false;
+ this.btn_delete_role.Click += new System.EventHandler(this.btn_delete_Click);
//
- // btn_edit_password
+ // btn_edit_password_role
//
- this.btn_edit_password.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.btn_edit_password_role.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right)));
- this.btn_edit_password.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
- this.btn_edit_password.FlatAppearance.BorderSize = 0;
- this.btn_edit_password.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_edit_password.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
- this.btn_edit_password.ForeColor = System.Drawing.Color.White;
- this.btn_edit_password.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btn_edit_password.Location = new System.Drawing.Point(321, 2);
- this.btn_edit_password.Name = "btn_edit_password";
- this.btn_edit_password.Size = new System.Drawing.Size(101, 38);
- this.btn_edit_password.TabIndex = 499;
- this.btn_edit_password.Text = "修改密码";
- this.btn_edit_password.UseVisualStyleBackColor = false;
- this.btn_edit_password.Click += new System.EventHandler(this.btn_edit_password_Click);
+ this.btn_edit_password_role.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_edit_password_role.FlatAppearance.BorderSize = 0;
+ this.btn_edit_password_role.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_edit_password_role.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
+ this.btn_edit_password_role.ForeColor = System.Drawing.Color.White;
+ this.btn_edit_password_role.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_edit_password_role.Location = new System.Drawing.Point(321, 2);
+ this.btn_edit_password_role.Name = "btn_edit_password_role";
+ this.btn_edit_password_role.Size = new System.Drawing.Size(101, 38);
+ this.btn_edit_password_role.TabIndex = 499;
+ this.btn_edit_password_role.Text = "修改密码";
+ this.btn_edit_password_role.UseVisualStyleBackColor = false;
+ this.btn_edit_password_role.Click += new System.EventHandler(this.btn_edit_password_Click);
//
- // btn_editRole
+ // btn_editRole_head
//
- this.btn_editRole.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.btn_editRole_head.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
- this.btn_editRole.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
- this.btn_editRole.FlatAppearance.BorderSize = 0;
- this.btn_editRole.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_editRole.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
- this.btn_editRole.ForeColor = System.Drawing.Color.White;
- this.btn_editRole.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btn_editRole.Location = new System.Drawing.Point(7, 3);
- this.btn_editRole.Name = "btn_editRole";
- this.btn_editRole.Size = new System.Drawing.Size(101, 38);
- this.btn_editRole.TabIndex = 497;
- this.btn_editRole.Text = "修改权限";
- this.btn_editRole.UseVisualStyleBackColor = false;
- this.btn_editRole.Click += new System.EventHandler(this.btn_editRole_Click);
+ this.btn_editRole_head.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_editRole_head.FlatAppearance.BorderSize = 0;
+ this.btn_editRole_head.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_editRole_head.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
+ this.btn_editRole_head.ForeColor = System.Drawing.Color.White;
+ this.btn_editRole_head.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_editRole_head.Location = new System.Drawing.Point(7, 3);
+ this.btn_editRole_head.Name = "btn_editRole_head";
+ this.btn_editRole_head.Size = new System.Drawing.Size(101, 38);
+ this.btn_editRole_head.TabIndex = 497;
+ this.btn_editRole_head.Text = "修改权限";
+ this.btn_editRole_head.UseVisualStyleBackColor = false;
+ this.btn_editRole_head.Click += new System.EventHandler(this.btn_editRole_Click);
//
// UserManageForm
//
@@ -480,31 +480,31 @@
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.DataGridView dataGridView1;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column5;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
private System.Windows.Forms.Panel panel1;
- private System.Windows.Forms.Button btn_delete;
- private System.Windows.Forms.Button btn_edit_password;
- private System.Windows.Forms.Button btn_editRole;
+ private System.Windows.Forms.Button btn_delete_role;
+ private System.Windows.Forms.Button btn_edit_password_role;
+ private System.Windows.Forms.Button btn_editRole_head;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tab_fix;
private System.Windows.Forms.TabPage tab_delete;
private System.Windows.Forms.TabPage tab_fix_password;
private System.Windows.Forms.Button btn_fix_role;
private System.Windows.Forms.TextBox txt_UserName;
- private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.Label label_role_userName;
private System.Windows.Forms.ComboBox cbx_role_role;
- private System.Windows.Forms.Label label12;
+ private System.Windows.Forms.Label label1_role;
private System.Windows.Forms.Button btn_delete_user;
- private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label_DeleteTips;
private System.Windows.Forms.Button btn_FixPassword;
private System.Windows.Forms.TextBox txt_password;
- private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label_password_formUserManage;
private System.Windows.Forms.TextBox txt_fix_p_UserName;
- private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label_Username_form_userManage;
private System.Windows.Forms.Button btn_role_manage;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column5;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
}
}
\ No newline at end of file
diff --git a/src/PBAnaly/LoginCommon/UserManageForm.cs b/src/PBAnaly/LoginCommon/UserManageForm.cs
index 25ed097..6f71626 100644
--- a/src/PBAnaly/LoginCommon/UserManageForm.cs
+++ b/src/PBAnaly/LoginCommon/UserManageForm.cs
@@ -1,10 +1,14 @@
-using System;
+using PBAnaly.Assist;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -19,8 +23,57 @@ namespace PBAnaly.LoginCommon
panel1.BringToFront();
SetMainMenuButtonCilkeColor("btn_editRole");
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
+
#region InitUser 加载全部的用户 root除外
///
/// 加载全部的用户 root除外
diff --git a/src/PBAnaly/MainForm.Designer.cs b/src/PBAnaly/MainForm.Designer.cs
index e0ce7bb..a11def0 100644
--- a/src/PBAnaly/MainForm.Designer.cs
+++ b/src/PBAnaly/MainForm.Designer.cs
@@ -57,8 +57,6 @@
this.materialButton_resetImage = new MaterialSkin.Controls.MaterialButton();
this.materialButton_inverse = new MaterialSkin.Controls.MaterialButton();
this.materialButton_save = new MaterialSkin.Controls.MaterialButton();
- this.materialButton_forward = new MaterialSkin.Controls.MaterialButton();
- this.materialButton_return = new MaterialSkin.Controls.MaterialButton();
this.pl_right = new ReaLTaiizor.Controls.Panel();
this.thunderLabel1 = new ReaLTaiizor.Controls.ThunderLabel();
this.metroPanel_RightTop.SuspendLayout();
@@ -81,17 +79,17 @@
this.metroPanel_RightTop.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroPanel_RightTop.HorizontalScrollbarBarColor = true;
this.metroPanel_RightTop.HorizontalScrollbarHighlightOnWheel = false;
- this.metroPanel_RightTop.HorizontalScrollbarSize = 7;
- this.metroPanel_RightTop.Location = new System.Drawing.Point(210, 0);
+ this.metroPanel_RightTop.HorizontalScrollbarSize = 9;
+ this.metroPanel_RightTop.Location = new System.Drawing.Point(280, 0);
this.metroPanel_RightTop.Margin = new System.Windows.Forms.Padding(0);
this.metroPanel_RightTop.Name = "metroPanel_RightTop";
- this.metroPanel_RightTop.Size = new System.Drawing.Size(569, 55);
+ this.metroPanel_RightTop.Size = new System.Drawing.Size(652, 55);
this.metroPanel_RightTop.TabIndex = 12;
this.metroPanel_RightTop.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroPanel_RightTop.UseCustomBackColor = true;
this.metroPanel_RightTop.VerticalScrollbarBarColor = true;
this.metroPanel_RightTop.VerticalScrollbarHighlightOnWheel = false;
- this.metroPanel_RightTop.VerticalScrollbarSize = 7;
+ this.metroPanel_RightTop.VerticalScrollbarSize = 9;
//
// materialButton_log
//
@@ -102,11 +100,11 @@
this.materialButton_log.HighEmphasis = true;
this.materialButton_log.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_log.Icon")));
this.materialButton_log.Location = new System.Drawing.Point(581, 0);
- this.materialButton_log.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.materialButton_log.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_log.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_log.Name = "materialButton_log";
this.materialButton_log.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_log.Size = new System.Drawing.Size(113, 55);
+ this.materialButton_log.Size = new System.Drawing.Size(113, 69);
this.materialButton_log.TabIndex = 19;
this.materialButton_log.Text = "操作日志";
this.materialButton_log.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -123,11 +121,11 @@
this.materialButton_setting.HighEmphasis = true;
this.materialButton_setting.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_setting.Icon")));
this.materialButton_setting.Location = new System.Drawing.Point(468, 0);
- this.materialButton_setting.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.materialButton_setting.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_setting.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_setting.Name = "materialButton_setting";
this.materialButton_setting.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_setting.Size = new System.Drawing.Size(113, 55);
+ this.materialButton_setting.Size = new System.Drawing.Size(113, 69);
this.materialButton_setting.TabIndex = 18;
this.materialButton_setting.Text = "系统设置";
this.materialButton_setting.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -145,11 +143,11 @@
this.materialButton_curveimage.HighEmphasis = true;
this.materialButton_curveimage.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_curveimage.Icon")));
this.materialButton_curveimage.Location = new System.Drawing.Point(339, 0);
- this.materialButton_curveimage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.materialButton_curveimage.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_curveimage.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_curveimage.Name = "materialButton_curveimage";
this.materialButton_curveimage.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_curveimage.Size = new System.Drawing.Size(129, 55);
+ this.materialButton_curveimage.Size = new System.Drawing.Size(129, 69);
this.materialButton_curveimage.TabIndex = 17;
this.materialButton_curveimage.Text = "泳道波形图";
this.materialButton_curveimage.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -167,11 +165,11 @@
this.materialButton_analyzedata.HighEmphasis = true;
this.materialButton_analyzedata.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_analyzedata.Icon")));
this.materialButton_analyzedata.Location = new System.Drawing.Point(226, 0);
- this.materialButton_analyzedata.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.materialButton_analyzedata.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_analyzedata.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_analyzedata.Name = "materialButton_analyzedata";
this.materialButton_analyzedata.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_analyzedata.Size = new System.Drawing.Size(113, 55);
+ this.materialButton_analyzedata.Size = new System.Drawing.Size(113, 69);
this.materialButton_analyzedata.TabIndex = 16;
this.materialButton_analyzedata.Text = "分析数据";
this.materialButton_analyzedata.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -189,11 +187,11 @@
this.materialButton_outimage.HighEmphasis = true;
this.materialButton_outimage.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_outimage.Icon")));
this.materialButton_outimage.Location = new System.Drawing.Point(113, 0);
- this.materialButton_outimage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.materialButton_outimage.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_outimage.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_outimage.Name = "materialButton_outimage";
this.materialButton_outimage.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_outimage.Size = new System.Drawing.Size(113, 55);
+ this.materialButton_outimage.Size = new System.Drawing.Size(113, 69);
this.materialButton_outimage.TabIndex = 15;
this.materialButton_outimage.Text = "导出图像";
this.materialButton_outimage.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -211,11 +209,11 @@
this.materialButton_LoadData.HighEmphasis = true;
this.materialButton_LoadData.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_LoadData.Icon")));
this.materialButton_LoadData.Location = new System.Drawing.Point(0, 0);
- this.materialButton_LoadData.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.materialButton_LoadData.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_LoadData.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_LoadData.Name = "materialButton_LoadData";
this.materialButton_LoadData.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_LoadData.Size = new System.Drawing.Size(113, 55);
+ this.materialButton_LoadData.Size = new System.Drawing.Size(113, 69);
this.materialButton_LoadData.TabIndex = 14;
this.materialButton_LoadData.Text = "加载数据";
this.materialButton_LoadData.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -226,9 +224,9 @@
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 3;
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 210F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 280F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 318F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 235F));
this.tableLayoutPanel1.Controls.Add(this.tl_right_main_view, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.metroPanel_RightTop, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.CompanyIcon_pictureBox, 0, 0);
@@ -236,30 +234,30 @@
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel2, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.pl_right, 2, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 24);
- this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(4, 30);
+ this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 55F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 69F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 39F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(1097, 581);
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(1463, 726);
this.tableLayoutPanel1.TabIndex = 18;
//
// tl_right_main_view
//
this.tl_right_main_view.ColumnCount = 2;
this.tl_right_main_view.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tl_right_main_view.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 324F));
+ this.tl_right_main_view.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 432F));
this.tl_right_main_view.Controls.Add(this.DataProcess_panel, 0, 0);
this.tl_right_main_view.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tl_right_main_view.Location = new System.Drawing.Point(210, 86);
+ this.tl_right_main_view.Location = new System.Drawing.Point(280, 108);
this.tl_right_main_view.Margin = new System.Windows.Forms.Padding(0);
this.tl_right_main_view.Name = "tl_right_main_view";
this.tl_right_main_view.RowCount = 2;
this.tl_right_main_view.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tl_right_main_view.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tl_right_main_view.Size = new System.Drawing.Size(569, 495);
+ this.tl_right_main_view.Size = new System.Drawing.Size(652, 495);
this.tl_right_main_view.TabIndex = 0;
//
// DataProcess_panel
@@ -268,11 +266,12 @@
this.tl_right_main_view.SetColumnSpan(this.DataProcess_panel, 2);
this.DataProcess_panel.Dock = System.Windows.Forms.DockStyle.Fill;
this.DataProcess_panel.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
- this.DataProcess_panel.Location = new System.Drawing.Point(3, 3);
+ this.DataProcess_panel.Location = new System.Drawing.Point(4, 4);
+ this.DataProcess_panel.Margin = new System.Windows.Forms.Padding(4);
this.DataProcess_panel.Name = "DataProcess_panel";
- this.DataProcess_panel.Padding = new System.Windows.Forms.Padding(5);
+ this.DataProcess_panel.Padding = new System.Windows.Forms.Padding(7, 6, 7, 6);
this.tl_right_main_view.SetRowSpan(this.DataProcess_panel, 2);
- this.DataProcess_panel.Size = new System.Drawing.Size(563, 489);
+ this.DataProcess_panel.Size = new System.Drawing.Size(646, 489);
this.DataProcess_panel.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.DataProcess_panel.TabIndex = 19;
this.DataProcess_panel.Text = "panel1";
@@ -283,10 +282,11 @@
this.CompanyIcon_pictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.CompanyIcon_pictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.CompanyIcon_pictureBox.Image = global::PBAnaly.Properties.Resources.京仪科技定稿_画板_1_副本2;
- this.CompanyIcon_pictureBox.Location = new System.Drawing.Point(3, 3);
+ this.CompanyIcon_pictureBox.Location = new System.Drawing.Point(4, 4);
+ this.CompanyIcon_pictureBox.Margin = new System.Windows.Forms.Padding(4);
this.CompanyIcon_pictureBox.Name = "CompanyIcon_pictureBox";
this.tableLayoutPanel1.SetRowSpan(this.CompanyIcon_pictureBox, 2);
- this.CompanyIcon_pictureBox.Size = new System.Drawing.Size(204, 80);
+ this.CompanyIcon_pictureBox.Size = new System.Drawing.Size(272, 100);
this.CompanyIcon_pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.CompanyIcon_pictureBox.TabIndex = 16;
this.CompanyIcon_pictureBox.TabStop = false;
@@ -297,14 +297,14 @@
this.flowLayoutPanel1.Controls.Add(this.materialButton_acidAnalyze);
this.flowLayoutPanel1.Controls.Add(this.materialButton_roiAnalyze);
this.flowLayoutPanel1.Controls.Add(this.materialButton_miniAnalyze);
- this.flowLayoutPanel1.Controls.Add(this.materialButton_dotcounts);
+ this.flowLayoutPanel1.Controls.Add(this.mb_colonyCount);
this.flowLayoutPanel1.Controls.Add(this.materialButton_correction);
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
- this.flowLayoutPanel1.Location = new System.Drawing.Point(2, 88);
- this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
+ this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 110);
+ this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
- this.flowLayoutPanel1.Size = new System.Drawing.Size(206, 491);
+ this.flowLayoutPanel1.Size = new System.Drawing.Size(274, 614);
this.flowLayoutPanel1.TabIndex = 18;
//
// materialButton_imageProcess
@@ -317,12 +317,12 @@
this.materialButton_imageProcess.Font = new System.Drawing.Font("宋体", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.materialButton_imageProcess.HighEmphasis = true;
this.materialButton_imageProcess.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_imageProcess.Icon")));
- this.materialButton_imageProcess.Location = new System.Drawing.Point(4, 6);
- this.materialButton_imageProcess.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.materialButton_imageProcess.Location = new System.Drawing.Point(5, 8);
+ this.materialButton_imageProcess.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_imageProcess.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_imageProcess.Name = "materialButton_imageProcess";
this.materialButton_imageProcess.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_imageProcess.Size = new System.Drawing.Size(200, 48);
+ this.materialButton_imageProcess.Size = new System.Drawing.Size(267, 60);
this.materialButton_imageProcess.TabIndex = 4;
this.materialButton_imageProcess.Text = "图像处理";
this.materialButton_imageProcess.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -339,12 +339,12 @@
this.materialButton_acidAnalyze.Depth = 0;
this.materialButton_acidAnalyze.HighEmphasis = true;
this.materialButton_acidAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_acidAnalyze.Icon")));
- this.materialButton_acidAnalyze.Location = new System.Drawing.Point(4, 66);
- this.materialButton_acidAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.materialButton_acidAnalyze.Location = new System.Drawing.Point(5, 84);
+ this.materialButton_acidAnalyze.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_acidAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_acidAnalyze.Name = "materialButton_acidAnalyze";
this.materialButton_acidAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_acidAnalyze.Size = new System.Drawing.Size(200, 48);
+ this.materialButton_acidAnalyze.Size = new System.Drawing.Size(267, 60);
this.materialButton_acidAnalyze.TabIndex = 5;
this.materialButton_acidAnalyze.Text = "泳道分析";
this.materialButton_acidAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -360,12 +360,12 @@
this.materialButton_roiAnalyze.Depth = 0;
this.materialButton_roiAnalyze.HighEmphasis = true;
this.materialButton_roiAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_roiAnalyze.Icon")));
- this.materialButton_roiAnalyze.Location = new System.Drawing.Point(4, 126);
- this.materialButton_roiAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.materialButton_roiAnalyze.Location = new System.Drawing.Point(5, 160);
+ this.materialButton_roiAnalyze.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_roiAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_roiAnalyze.Name = "materialButton_roiAnalyze";
this.materialButton_roiAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_roiAnalyze.Size = new System.Drawing.Size(200, 48);
+ this.materialButton_roiAnalyze.Size = new System.Drawing.Size(267, 60);
this.materialButton_roiAnalyze.TabIndex = 6;
this.materialButton_roiAnalyze.Text = "ROIs分析";
this.materialButton_roiAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -380,37 +380,38 @@
this.materialButton_miniAnalyze.Depth = 0;
this.materialButton_miniAnalyze.HighEmphasis = true;
this.materialButton_miniAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_miniAnalyze.Icon")));
- this.materialButton_miniAnalyze.Location = new System.Drawing.Point(4, 186);
- this.materialButton_miniAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.materialButton_miniAnalyze.Location = new System.Drawing.Point(5, 236);
+ this.materialButton_miniAnalyze.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_miniAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_miniAnalyze.Name = "materialButton_miniAnalyze";
this.materialButton_miniAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_miniAnalyze.Size = new System.Drawing.Size(200, 48);
+ this.materialButton_miniAnalyze.Size = new System.Drawing.Size(267, 60);
this.materialButton_miniAnalyze.TabIndex = 7;
this.materialButton_miniAnalyze.Text = "微孔版分析";
this.materialButton_miniAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_miniAnalyze.UseAccentColor = false;
this.materialButton_miniAnalyze.UseVisualStyleBackColor = true;
//
- // materialButton_dotcounts
+ // mb_colonyCount
//
- this.materialButton_dotcounts.AutoSize = false;
- this.materialButton_dotcounts.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.materialButton_dotcounts.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
- this.materialButton_dotcounts.Depth = 0;
- this.materialButton_dotcounts.HighEmphasis = true;
- this.materialButton_dotcounts.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_dotcounts.Icon")));
- this.materialButton_dotcounts.Location = new System.Drawing.Point(4, 246);
- this.materialButton_dotcounts.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
- this.materialButton_dotcounts.MouseState = MaterialSkin.MouseState.HOVER;
- this.materialButton_dotcounts.Name = "materialButton_dotcounts";
- this.materialButton_dotcounts.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_dotcounts.Size = new System.Drawing.Size(200, 48);
- this.materialButton_dotcounts.TabIndex = 8;
- this.materialButton_dotcounts.Text = "菌落计数";
- this.materialButton_dotcounts.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
- this.materialButton_dotcounts.UseAccentColor = false;
- this.materialButton_dotcounts.UseVisualStyleBackColor = true;
+ this.mb_colonyCount.AutoSize = false;
+ this.mb_colonyCount.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.mb_colonyCount.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
+ this.mb_colonyCount.Depth = 0;
+ this.mb_colonyCount.HighEmphasis = true;
+ this.mb_colonyCount.Icon = ((System.Drawing.Image)(resources.GetObject("mb_colonyCount.Icon")));
+ this.mb_colonyCount.Location = new System.Drawing.Point(5, 312);
+ this.mb_colonyCount.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
+ this.mb_colonyCount.MouseState = MaterialSkin.MouseState.HOVER;
+ this.mb_colonyCount.Name = "mb_colonyCount";
+ this.mb_colonyCount.NoAccentTextColor = System.Drawing.Color.Empty;
+ this.mb_colonyCount.Size = new System.Drawing.Size(267, 60);
+ this.mb_colonyCount.TabIndex = 8;
+ this.mb_colonyCount.Text = "菌落计数";
+ this.mb_colonyCount.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
+ this.mb_colonyCount.UseAccentColor = false;
+ this.mb_colonyCount.UseVisualStyleBackColor = true;
+ this.mb_colonyCount.Click += new System.EventHandler(this.mb_colonyCount_Click);
//
// materialButton_correction
//
@@ -420,12 +421,12 @@
this.materialButton_correction.Depth = 0;
this.materialButton_correction.HighEmphasis = true;
this.materialButton_correction.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_correction.Icon")));
- this.materialButton_correction.Location = new System.Drawing.Point(4, 306);
- this.materialButton_correction.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.materialButton_correction.Location = new System.Drawing.Point(5, 388);
+ this.materialButton_correction.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_correction.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_correction.Name = "materialButton_correction";
this.materialButton_correction.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton_correction.Size = new System.Drawing.Size(200, 48);
+ this.materialButton_correction.Size = new System.Drawing.Size(267, 60);
this.materialButton_correction.TabIndex = 9;
this.materialButton_correction.Text = "蛋白归一化";
this.materialButton_correction.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -442,13 +443,11 @@
this.flowLayoutPanel2.Controls.Add(this.materialButton_resetImage);
this.flowLayoutPanel2.Controls.Add(this.materialButton_inverse);
this.flowLayoutPanel2.Controls.Add(this.materialButton_save);
- this.flowLayoutPanel2.Controls.Add(this.materialButton_forward);
- this.flowLayoutPanel2.Controls.Add(this.materialButton_return);
this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.flowLayoutPanel2.Location = new System.Drawing.Point(210, 55);
+ this.flowLayoutPanel2.Location = new System.Drawing.Point(280, 69);
this.flowLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
- this.flowLayoutPanel2.Size = new System.Drawing.Size(569, 31);
+ this.flowLayoutPanel2.Size = new System.Drawing.Size(652, 31);
this.flowLayoutPanel2.TabIndex = 19;
//
// materialButton_changeFormSize
@@ -641,12 +640,12 @@
this.pl_right.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(51)))), ((int)(((byte)(63)))));
this.pl_right.Dock = System.Windows.Forms.DockStyle.Fill;
this.pl_right.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
- this.pl_right.Location = new System.Drawing.Point(781, 57);
+ this.pl_right.Location = new System.Drawing.Point(864, 57);
this.pl_right.Margin = new System.Windows.Forms.Padding(2);
this.pl_right.Name = "pl_right";
- this.pl_right.Padding = new System.Windows.Forms.Padding(4);
+ this.pl_right.Padding = new System.Windows.Forms.Padding(5);
this.tableLayoutPanel1.SetRowSpan(this.pl_right, 2);
- this.pl_right.Size = new System.Drawing.Size(314, 522);
+ this.pl_right.Size = new System.Drawing.Size(231, 522);
this.pl_right.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.pl_right.TabIndex = 20;
this.pl_right.Text = "panel1";
@@ -655,26 +654,28 @@
//
this.thunderLabel1.BackColor = System.Drawing.Color.Transparent;
this.thunderLabel1.ForeColor = System.Drawing.Color.WhiteSmoke;
- this.thunderLabel1.Location = new System.Drawing.Point(9, 5);
+ this.thunderLabel1.Location = new System.Drawing.Point(12, 6);
+ this.thunderLabel1.Margin = new System.Windows.Forms.Padding(4);
this.thunderLabel1.Name = "thunderLabel1";
- this.thunderLabel1.Size = new System.Drawing.Size(200, 16);
+ this.thunderLabel1.Size = new System.Drawing.Size(267, 20);
this.thunderLabel1.TabIndex = 19;
this.thunderLabel1.Text = "PBAnaly v0.1.8";
//
// MainForm
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange;
- this.ClientSize = new System.Drawing.Size(1103, 608);
+ this.ClientSize = new System.Drawing.Size(1471, 760);
this.Controls.Add(this.thunderLabel1);
this.Controls.Add(this.tableLayoutPanel1);
this.DrawerAutoShow = true;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "MainForm";
- this.Padding = new System.Windows.Forms.Padding(3, 24, 3, 3);
+ this.Padding = new System.Windows.Forms.Padding(4, 30, 4, 4);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "MainForm";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
@@ -702,8 +703,6 @@
private MaterialSkin.Controls.MaterialButton materialButton_analyzedata;
private MaterialSkin.Controls.MaterialButton materialButton_outimage;
private MaterialSkin.Controls.MaterialButton materialButton_changeFormSize;
- private MaterialSkin.Controls.MaterialButton materialButton_forward;
- private MaterialSkin.Controls.MaterialButton materialButton_return;
private MaterialSkin.Controls.MaterialButton materialButton_save;
private MaterialSkin.Controls.MaterialButton materialButton_inverse;
private MaterialSkin.Controls.MaterialButton materialButton_resetImage;
@@ -712,7 +711,7 @@
private MaterialSkin.Controls.MaterialButton materialButton_imageChange;
private MaterialSkin.Controls.MaterialButton materialButton_miniAnalyze;
private MaterialSkin.Controls.MaterialButton materialButton_roiAnalyze;
- private MaterialSkin.Controls.MaterialButton materialButton_dotcounts;
+ private MaterialSkin.Controls.MaterialButton mb_colonyCount;
private MaterialSkin.Controls.MaterialButton materialButton_acidAnalyze;
private MaterialSkin.Controls.MaterialButton materialButton_correction;
private MaterialSkin.Controls.MaterialButton materialButton_imageProcess;
diff --git a/src/PBAnaly/MainForm.cs b/src/PBAnaly/MainForm.cs
index 1bb68be..d463b2b 100644
--- a/src/PBAnaly/MainForm.cs
+++ b/src/PBAnaly/MainForm.cs
@@ -12,8 +12,10 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.IO;
using System.Linq;
+using System.Resources;
using System.Threading;
using System.Windows.Forms;
using System.Xml.Linq;
@@ -43,6 +45,7 @@ namespace PBAnaly
private Dictionary bioanalysisMannages = new Dictionary();
private Dictionary lanesMannages = new Dictionary();
+ private Dictionary colonysMannages = new Dictionary();
private List bioanalyName = new List();
private List lanesName = new List();
bool isRun = false;
@@ -79,6 +82,7 @@ namespace PBAnaly
loginForm.Hide();
+ GlobalData.PropertyChanged += OnGlobalDataPropertyChanged;
UserManage.LogionUserChanged += OnLogionUserChanged;
InitAccessControls();
@@ -89,10 +93,87 @@ namespace PBAnaly
FormGenerate_X = 0;
FormGenerate_Y = 0;
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
// initPanel();
}
+ #region OnGlobalDataPropertyChanged 处理全局属性更改事件
+ ///
+ /// 处理全局属性更改事件
+ ///
+ /// 发生变化的属性名
+ /// 更改的属性值
+ private void OnGlobalDataPropertyChanged(string name, string value)
+ {
+ switch (name)
+ {
+ case "Language":
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ #endregion
+
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
+
#region 重新梳理权限控制,控件的权限可通过管理员进行配置
///
/// 用于权限控制,将所有要管控的控件保存到mControls中
@@ -351,8 +432,6 @@ namespace PBAnaly
#endregion
-
-
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, int wMsg, bool wParam, int lParm);
private const int WM_SETREDRAW = 11;
@@ -379,10 +458,20 @@ namespace PBAnaly
private void materialButton_changeFormSize_MouseMove(object sender, MouseEventArgs e)
{
- if (sender is Button)
+ if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "适配窗口");
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "适配窗口");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Adaptation window");
+ }
+
+
}
}
@@ -391,7 +480,16 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "图像变换");
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "图像变换");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Image transformation");
+ }
+
}
}
@@ -400,7 +498,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "伪彩");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "伪彩");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Image transformation");
+ }
+
}
}
@@ -409,7 +515,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "图像信息");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "图像信息");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Image information");
+ }
+
}
}
@@ -418,7 +532,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "重置原图");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "重置原图");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Reset artwork");
+ }
+
}
}
@@ -427,7 +549,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "反值");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "反值");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Inverse value");
+ }
+
}
}
@@ -436,7 +566,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + S 保存");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + S 保存");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + S save");
+ }
+
}
}
@@ -445,7 +583,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Z 撤銷");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Z 撤銷");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Z revocation");
+ }
+
}
}
@@ -454,7 +600,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Y 重做");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Y 重做");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Y renewal");
+ }
+
}
}
@@ -488,7 +642,7 @@ namespace PBAnaly
#endregion
if (selectedFilePath != "")
{
-
+
if (lanesMannages.TryGetValue(selectedFilePath, out var value))
{
@@ -528,7 +682,7 @@ namespace PBAnaly
//}
//#endregion
- //if (selectedFilePath != "")
+ //if (selectedFilePath != "")
//{
// // Save Log Information
// Read_Write_Log read_Write_Log = new Read_Write_Log();
@@ -684,6 +838,50 @@ namespace PBAnaly
}
}
+
+ private void mb_colonyCount_Click(object sender, EventArgs e)
+ {
+ string selectedFilePath = "";
+ // 弹出选择图像的框
+ #region 打开图片
+ OpenFileDialog openFileDialog = new OpenFileDialog();
+ openFileDialog.Filter = "TIF Files (*.tif)|*.tif|All files (*.*)|*.*"; // 设置文件筛选器
+ openFileDialog.Title = "Select a TIF File"; // 设置对话框标题
+
+ if (openFileDialog.ShowDialog() == DialogResult.OK)
+ {
+
+ selectedFilePath = openFileDialog.FileName;
+
+
+ }
+ #endregion
+ if (selectedFilePath != "")
+ {
+ if (colonysMannages.TryGetValue(selectedFilePath, out var value))
+ {
+ return;
+ }
+ if (colonysMannages.Count == 0)
+ {
+ colonysMannages.Clear();
+ }
+
+ ColonyMannage colonyMannage = new ColonyMannage(selectedFilePath, pl_right, colonysMannages);
+ if (colonyMannage.GetImagePanel == null)
+ {
+ colonyMannage = null;
+ return;
+ }
+ DataProcess_panel.Controls.Add(colonyMannage.GetImagePanel);
+ colonyMannage.GetImagePanel.BringToFront();
+
+
+ colonysMannages.Add(selectedFilePath, colonyMannage);
+ }
+
+ }
+
private void materialButton_log_Click(object sender, EventArgs e)
{
UI.LogForm logForm = new UI.LogForm(materialSkinManager);
diff --git a/src/PBAnaly/MainForm.resx b/src/PBAnaly/MainForm.resx
index 09b4447..8d28044 100644
--- a/src/PBAnaly/MainForm.resx
+++ b/src/PBAnaly/MainForm.resx
@@ -563,6 +563,455 @@
17, 17
+
+
+ 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
+ Y8xOY6+9fghokNfA1CcF5wAAAABJRU5ErkJggg==
+
+
+
+
+ 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
@@ -1177,121 +1626,6 @@
XY/9dsGTH03LCGmMR/W4b59Tp069GQWXkkJCWuGSnHE97r7g67OPGsWETB4523rMy7JYLB5B4fV0AUIm
ynU503q8+8lqtTqO4gvJQoRMjQtylvVY9x+8Ld2LRb4EAx/Dr78+sDAhY+RF8CQ4hzN7vx7jzBw79l+m
uneO5+g3AwAAAABJRU5ErkJggg==
-
-
-
-
- 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
- /g9U/tB3US9YHgAAAABJRU5ErkJggg==
-
-
-
-
- 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
@@ -1560,7 +1894,7 @@
Y8xOY6+9fghokNfA1CcF5wAAAABJRU5ErkJggg==
-
+
iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAADnVJREFUeF7t
nX+oJWUZx6UszczE1IoIo8R+EKiolEZSYqYhYaGSZT81kaUl1133zpy7fwy4npm5d13jiu49M3PvXUXT
diff --git a/src/PBAnaly/Module/BioanalysisMannage.cs b/src/PBAnaly/Module/BioanalysisMannage.cs
index e7bed37..8a66501 100644
--- a/src/PBAnaly/Module/BioanalysisMannage.cs
+++ b/src/PBAnaly/Module/BioanalysisMannage.cs
@@ -45,6 +45,8 @@ namespace PBAnaly.Module
public int colorIndex;
public bool sharpen; //锐化
+
+ public float pixel_size;
}
public struct RectAttribute
@@ -593,7 +595,19 @@ namespace PBAnaly.Module
tif_marker_path = tifFile;
image_mark_L16 = util.LoadTiffAsL16(tif_marker_path);
image_mark_byte = util.ConvertL16ImageToByteArray(image_mark_L16);
-
+ byte[] bytes = new byte[image_mark_byte.Length];
+ unsafe
+ {
+ fixed (byte* p = image_mark_byte)
+ {
+ fixed (byte* p1 = bytes)
+ {
+ algAttribute.pixel_size = pbpvc.distortion_correction_vc(p, 16, (ushort)image_mark_L16.Width, (ushort)image_mark_L16.Height, p1);
+ }
+ }
+ image_mark_byte = bytes;
+ image_mark_L16 = util.ConvertByteArrayToL16Image(image_mark_byte, image_mark_L16.Width, image_mark_L16.Height, 1);
+ }
}
else
{
@@ -1565,6 +1579,7 @@ namespace PBAnaly.Module
double deltaX = endPoint.X - startPoint.X;
double deltaY = endPoint.Y - startPoint.Y;
var value = Math.Sqrt(deltaX * deltaX + deltaY * deltaY);
+ value = value * algAttribute.pixel_size;
imagePaletteForm.flb_act_mm.Text = value.ToString() + " mm";
imagePaletteForm.flb_act_mm.Refresh();
}
diff --git a/src/PBAnaly/Module/ColonyMannage.cs b/src/PBAnaly/Module/ColonyMannage.cs
new file mode 100644
index 0000000..2fc8fe0
--- /dev/null
+++ b/src/PBAnaly/Module/ColonyMannage.cs
@@ -0,0 +1,154 @@
+using PBAnaly.UI;
+using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp;
+using Sunny.UI;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Threading;
+using System.Web.UI.WebControls;
+
+
+namespace PBAnaly.Module
+{
+ public class ColonyMannage
+ {
+ #region 结构体
+ #endregion
+
+ #region 变量
+ public string path { get; set; }
+ private Image image_L16;
+ private byte[] image_byte;
+ private byte[] image_8bit_rgb_byte;
+ private Image image_rgb_24 = null;
+ private LanesImagePanel imagePanel = null;
+ private BioanayImagePaletteForm imagePaletteForm = null;
+ private PBBiologyVC.PBColonyVC pbvc = new PBBiologyVC.PBColonyVC();
+
+ private Thread algThread;
+ private bool isalgRun = false;
+ private bool isUpdateAlg = false;
+
+ #endregion
+
+ public ColonyMannage(string _path, ReaLTaiizor.Controls.Panel _pl_right, Dictionary colonyMannages)
+ {
+ imagePanel = new LanesImagePanel();
+ imagePanel.TopLevel = false;
+ imagePanel.Show();
+ imagePanel.BringToFront();
+
+ this.path = _path;
+ var ret = ReadTif();// 读tif档
+ if (ret == false)
+ {
+ imagePanel.Dispose();
+ imagePanel = null;
+ return;
+ }
+
+ ImageAlg();
+ RefreshImage();
+ }
+
+
+ #region 方法
+
+ private void ImageAlg()
+ {
+ unsafe
+ {
+ fixed (byte* p = image_byte)
+ {
+ fixed (byte* bit8rgb = image_8bit_rgb_byte)
+ {
+ pbvc.run(p, 16, (ushort)image_L16.Width, (ushort)image_L16.Height, -1, -1, bit8rgb);
+ }
+
+ }
+ }
+ image_rgb_24 = util.ConvertByteArrayToRgb24Image(image_8bit_rgb_byte, image_L16.Width, image_L16.Height, 3);
+ RefreshImage();
+ }
+ private bool ReadTif()
+ {
+ // 读tif 或 tiff
+ // 如果是tiff 需要弹出选择的一帧
+
+ var extension = Path.GetExtension(path).Trim();
+ if (extension == ".tif")
+ {
+
+ image_L16 = util.LoadTiffAsL16(path);
+ image_byte = util.ConvertL16ImageToByteArray(image_L16);
+
+ }
+
+ if (image_L16 == null)
+ {
+ MessageBox.Show("图片加载失败");
+ return false;
+ }
+
+
+
+ image_8bit_rgb_byte = new byte[image_L16.Width * image_L16.Height * 3];
+
+ for (int i = 0; i < image_L16.Width * image_L16.Height; i++)
+ {
+ // 获取16位图像数据中的当前像素值
+ ushort pixel16bit = (ushort)(image_byte[i * 2] | (image_byte[i * 2 + 1] << 8));
+ byte gray = (byte)((pixel16bit / 65535.0) * 255);
+ // 将R、G、B分量存储到RGB格式的数组中
+ image_8bit_rgb_byte[i * 3] = gray;
+ image_8bit_rgb_byte[i * 3 + 1] = gray;
+ image_8bit_rgb_byte[i * 3 + 2] = gray;
+ }
+
+ image_rgb_24 = util.ConvertByteArrayToRgb24Image(image_8bit_rgb_byte, image_L16.Width, image_L16.Height, 3);
+ imagePanel.SetButtomLabel($"{image_L16.Width} x {image_L16.Height}");
+ if (path.Length > 0)
+ {
+ var t = path.Split("\\");
+ if (t.Length > 2)
+ {
+ imagePanel.SetButtomName($"{t[t.Length - 2]} {image_L16.Width} x {image_L16.Height}");
+ }
+
+ }
+ return true;
+ }
+
+ private void RefreshImage()
+ {
+ if (imagePanel.image_pl.InvokeRequired)
+ {
+ imagePanel.image_pl.Invoke(new MethodInvoker(() =>
+ {
+ RefreshImage();
+ }));
+
+ }
+ else
+ {
+ imagePanel.SetImage(image_rgb_24);
+ }
+ }
+ #endregion
+
+ #region 对外接口
+ #region imagepanel
+ public LanesImagePanel GetImagePanel
+ {
+ get { return imagePanel; }
+ }
+
+ #endregion
+ #endregion
+ }
+}
diff --git a/src/PBAnaly/Module/LanesMannage.cs b/src/PBAnaly/Module/LanesMannage.cs
index 3c601aa..998c5b8 100644
--- a/src/PBAnaly/Module/LanesMannage.cs
+++ b/src/PBAnaly/Module/LanesMannage.cs
@@ -1,24 +1,30 @@
-using OpenCvSharp;
+using Aspose.Pdf.AI;
+using OpenCvSharp;
using PBAnaly.UI;
using PBBiologyVC;
+using SharpDX.D3DCompiler;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using Sunny.UI;
using System;
using System.Collections.Generic;
+using System.Drawing;
using System.IO;
using System.Linq;
+using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using static PBAnaly.Module.BioanalysisMannage;
+using static PBAnaly.Module.LanesMannage;
namespace PBAnaly.Module
{
public class LanesMannage
{
#region 构造函数
+ private enum Corner { None, TopLeft, TopRight, BottomLeft, BottomRight, drawMouse }
public struct band_infos
{
public float startX; // X作为筛选的必要条件 当鼠标进入x的范围就是进入某一个泳道,在根据y的范围判断是否在这个泳道里
@@ -31,14 +37,32 @@ namespace PBAnaly.Module
public int thick;
public _band_info _Info;
}
+
+ public struct Lanes_info
+ {
+ public bool isSelect;//是否被选中
+ public int colorIndex;
+ public int x;
+ public int y;
+ public int width;
+ public int height;
+ public _band_info band_Info;
+ }
+
+ public struct LanesAttribute
+ {
+ public bool showLanes;
+ public bool showbands;
+ }
#endregion
#region 参数
private string path { get; set; }
private string curImagePath;
+ PBBiology pbb = new PBBiology();
private Image image_L16;
private byte[] image_byte;
- private byte[] image_8bit_byte;
+ private byte[] image_8bit_rgb_byte;
private Image image_rgb_24 = null;
public bool IsActive { get; set; } // 当前窗口是否在活跃状态 用来判断是否需要操作
public int ImageIndex { get; set; }// 图片加载进来的序号
@@ -51,6 +75,10 @@ namespace PBAnaly.Module
private bool isalgRun = false;
private bool isUpdateAlg = false;
private Queue queueAlgAttribute = new Queue();
+ private List lanes_Infos = new List();
+
+ private List laneColorList = new List();// 泳道的颜色表
+ private LanesAttribute lanesAttribute = new LanesAttribute();
#endregion
public LanesMannage(string _path, ReaLTaiizor.Controls.Panel _pl_right, Dictionary lanesMannages)
@@ -80,6 +108,7 @@ namespace PBAnaly.Module
imagePaletteForm.BringToFront();
imagePaletteForm.Show();
+ InitColorList();
Init();
RefreshImage();// 初始化图像
@@ -133,14 +162,66 @@ namespace PBAnaly.Module
private void ImageAlg(band_infos aatb)
{
-
+
+ //Mat image = new Mat(image_L16.Height,image_L16.Width,MatType.CV_8UC1);
+ //Marshal.Copy(image_8bit_byte,0,image.Data,image_8bit_byte.Length);
+
+ //Mat whiteBackgroundImg = new Mat();
+ //Scalar meanValue = Cv2.Mean(image);
+ //if (meanValue[0] < 10000)
+ //{
+ // Cv2.BitwiseNot(image, whiteBackgroundImg);
+ //}
+ //else
+ //{
+ // whiteBackgroundImg = image.Clone();
+ //}
+
+ //List proteinRect = new List();
+ //// 算法使用的是8bit的图进行计算
+ //unsafe
+ //{
+ // fixed (byte* p = image_8bit_byte)
+ // {
+ // proteinRect = pbb.getProteinRectVC(p, (ushort)image_L16.Width, (ushort)image_L16.Height);
+ // }
+
+
+ //}
}
+ private void InitColorList()
+ {
+ laneColorList.Clear();
+
+ laneColorList.Add(System.Drawing.Color.Red); // 红色
+ laneColorList.Add(System.Drawing.Color.Green); // 绿色
+ laneColorList.Add(System.Drawing.Color.Blue); // 蓝色
+ laneColorList.Add(System.Drawing.Color.Yellow); // 黄色
+ laneColorList.Add(System.Drawing.Color.Purple); // 紫色
+ laneColorList.Add(System.Drawing.Color.Orange); // 橙色
+ laneColorList.Add(System.Drawing.Color.Pink); // 粉色
+ laneColorList.Add(System.Drawing.Color.Brown); // 棕色
+ laneColorList.Add(System.Drawing.Color.Gray); // 灰色
+ laneColorList.Add(System.Drawing.Color.Cyan); // 青色
+ laneColorList.Add(System.Drawing.Color.Magenta); // 品红
+ laneColorList.Add(System.Drawing.Color.Lime); // 酸橙绿
+ laneColorList.Add(System.Drawing.Color.Teal); // 水鸭色
+ laneColorList.Add(System.Drawing.Color.Olive); // 橄榄色
+ laneColorList.Add(System.Drawing.Color.Navy); // 海军蓝
+ laneColorList.Add(System.Drawing.Color.Silver); // 银色
+ laneColorList.Add(System.Drawing.Color.Gold); // 金色
+ laneColorList.Add(System.Drawing.Color.Violet); // 紫罗兰色
+ }
///
/// 初始化控件 初始化配置
///
private void Init()
{
+ lanesAttribute.showLanes = true;
+ lanesAttribute.showbands = true;
+
+
imagePanel.image_pl.MouseDown += Image_pl_MouseDown;
imagePanel.image_pl.DoubleClick += Image_pl_DoubleClick;
imagePanel.image_pl.MouseMove += Image_pl_MouseMove;
@@ -152,10 +233,14 @@ namespace PBAnaly.Module
imagePanel.FormClosing += ImagePanel_FormClosing;
imagePanel.FormClosed += ImagePanel_FormClosed;
+
+
+ imagePaletteForm.mb_findLanes.Click += Mb_findLanes_Click;
+
KeyboardListener.Register(OnKeyPressed); // 创建键盘钩子
}
-
+
private bool ReadTiff()
{
@@ -197,7 +282,7 @@ namespace PBAnaly.Module
return false;
}
- image_8bit_byte = new byte[image_L16.Width * image_L16.Height * 3];
+ image_8bit_rgb_byte = new byte[image_L16.Width * image_L16.Height * 3];
for (int i = 0; i < image_L16.Width * image_L16.Height; i++)
{
@@ -205,12 +290,12 @@ namespace PBAnaly.Module
ushort pixel16bit = (ushort)(image_byte[i * 2] | (image_byte[i * 2 + 1] << 8));
byte gray = (byte)((pixel16bit / 65535.0) * 255) ;
// 将R、G、B分量存储到RGB格式的数组中
- image_8bit_byte[i * 3] = gray;
- image_8bit_byte[i * 3 + 1] = gray;
- image_8bit_byte[i * 3 + 2] = gray;
+ image_8bit_rgb_byte[i * 3] = gray;
+ image_8bit_rgb_byte[i * 3 + 1] = gray;
+ image_8bit_rgb_byte[i * 3 + 2] = gray;
}
- image_rgb_24 = util.ConvertByteArrayToRgb24Image(image_8bit_byte, image_L16.Width, image_L16.Height,3);
+ image_rgb_24 = util.ConvertByteArrayToRgb24Image(image_8bit_rgb_byte, image_L16.Width, image_L16.Height,3);
imagePanel.SetButtomLabel($"{image_L16.Width} x {image_L16.Height}");
if (path.Length > 0)
{
@@ -239,6 +324,33 @@ namespace PBAnaly.Module
imagePanel.SetImage(image_rgb_24);
}
}
+
+
+ private bool IsPointInRectangles(System.Drawing.Point point, List _lanes, out Corner cner, out Lanes_info curRect, out int index)
+ {
+ curRect = new Lanes_info();
+ cner = Corner.None;
+ index = 0;
+ foreach (var lanes in _lanes)
+ {
+ System.Drawing.Rectangle rect = new System.Drawing.Rectangle(lanes.x,lanes.y,lanes.width,lanes.height);
+ System.Drawing.Point topLeft = new System.Drawing.Point(rect.Left, rect.Top);
+ System.Drawing.Point topRight = new System.Drawing.Point(rect.Right, rect.Top);
+ System.Drawing.Point bottomLeft = new System.Drawing.Point(rect.Left, rect.Bottom);
+ System.Drawing.Point bottomRight = new System.Drawing.Point(rect.Right, rect.Bottom);
+
+ if (rect.Contains(point))
+ {
+ imagePanel.image_pl.Cursor = Cursors.Hand;
+ cner = Corner.drawMouse;
+ curRect = lanes;
+ return true;
+ }
+ index++;
+
+ }
+ return false;
+ }
#endregion
@@ -247,7 +359,75 @@ namespace PBAnaly.Module
private void Image_pl_Paint(object sender, PaintEventArgs e)
{
-
+ Graphics g = e.Graphics;
+
+ int index = 0;
+ List colorUpdateIndex = new List();
+ foreach (var rect in lanes_Infos)
+ {
+ if (index >= laneColorList.Count)
+ {
+ index = 0;
+ }
+ colorUpdateIndex.Add(index);
+ var color = laneColorList[index];
+ System.Drawing.Rectangle p = new System.Drawing.Rectangle(rect.x, rect.y, rect.width, rect.height);
+
+ var r = ImageProcess.ConvertRealRectangleToPictureBox(p, imagePanel.image_pl);
+ if (lanesAttribute.showLanes)
+ {
+ if (rect.isSelect)
+ {
+ e.Graphics.DrawRectangle(color, r, false, 6);
+ }
+ else
+ {
+ e.Graphics.DrawRectangle(color, r, false, 2);
+ }
+ }
+
+ int centerX = (int)(p.X + (p.Right - p.X) / 2.0);
+ int centerY = 0;
+ foreach (var item in rect.band_Info.band_point)
+ {
+ if (item[0] == -1) continue;
+ // 绘制十字
+ centerY = p.Y + item[0];
+ var p1 = new System.Drawing.Point(centerX - 5, centerY);
+ var p2 = new System.Drawing.Point(centerX + 5, centerY);
+ p1 = ImageProcess.ConvertRealToPictureBox(p1, imagePanel.image_pl);
+ p2 = ImageProcess.ConvertRealToPictureBox(p2, imagePanel.image_pl);
+
+ e.Graphics.DrawLine(Pens.Red, p1, p2);
+ p1 = new System.Drawing.Point(centerX, centerY - 5);
+ p2 = new System.Drawing.Point(centerX, centerY + 5);
+ p1 = ImageProcess.ConvertRealToPictureBox(p1, imagePanel.image_pl);
+ p2 = ImageProcess.ConvertRealToPictureBox(p2, imagePanel.image_pl);
+ e.Graphics.DrawLine(Pens.Red, p1, p2);
+
+ // 显示条带
+ if (lanesAttribute.showbands)
+ {
+ p1 = new System.Drawing.Point(p.X, p.Top + item[1]);
+ p2 = new System.Drawing.Point(p.Right, p.Top + item[2]);
+ p1 = ImageProcess.ConvertRealToPictureBox(p1, imagePanel.image_pl);
+ p2 = ImageProcess.ConvertRealToPictureBox(p2, imagePanel.image_pl);
+
+ e.Graphics.DrawRectangle(Pens.Blue,p1.X,p1.Y,p2.X - p1.X,p2.Y - p1.Y);
+ }
+
+ }
+
+
+
+ index++;
+ }
+ for (int i = 0; i < colorUpdateIndex.Count; i++)
+ {
+ Lanes_info _Info = lanes_Infos[i];
+ _Info.colorIndex = colorUpdateIndex[i];
+ lanes_Infos[i] = _Info;
+ }
}
private void Image_pl_MouseUp(object sender, MouseEventArgs e)
@@ -257,7 +437,13 @@ namespace PBAnaly.Module
private void Image_pl_MouseMove(object sender, MouseEventArgs e)
{
-
+ System.Drawing.Point readLoction = ImageProcess.ConvertPictureBoxToReal(e.Location, imagePanel.image_pl);
+ imagePanel.image_pl.Cursor = Cursors.Default;
+ if (IsPointInRectangles(readLoction, lanes_Infos, out var cner, out var curRect, out int index))
+ {
+
+ }
+
}
private void Image_pl_DoubleClick(object sender, EventArgs e)
@@ -267,7 +453,20 @@ namespace PBAnaly.Module
private void Image_pl_MouseDown(object sender, MouseEventArgs e)
{
+ System.Drawing.Point readLoction = ImageProcess.ConvertPictureBoxToReal(e.Location, imagePanel.image_pl);
Wdb_title_Click(null, null);
+ if (IsPointInRectangles(readLoction, lanes_Infos, out var cner, out var curRect, out int index))
+ {
+ for (int i = 0; i < lanes_Infos.Count; i++)
+ {
+ Lanes_info lanes = lanes_Infos[i];
+ lanes.isSelect = false;
+ lanes_Infos[i] = lanes;
+ }
+ curRect.isSelect = true;
+ lanes_Infos[index] = curRect;
+ imagePanel.image_pl.Invalidate();
+ }
}
private void ImagePanel_FormClosed(object sender, FormClosedEventArgs e)
{
@@ -304,6 +503,58 @@ namespace PBAnaly.Module
}
#endregion
+ #region imagePalette
+ private void Mb_findLanes_Click(object sender, EventArgs e)
+ {
+ byte[] gray = new byte[image_L16.Width * image_L16.Height];
+ for (int i = 0; i < image_L16.Width * image_L16.Height; i++)
+ {
+ // 获取16位图像数据中的当前像素值
+ ushort pixel16bit = (ushort)(image_byte[i * 2] | (image_byte[i * 2 + 1] << 8));
+ byte grayValue = (byte)((pixel16bit / 65535.0) * 255);
+ gray[i] = grayValue;
+ }
+ unsafe
+ {
+ fixed (byte* data = gray)
+ {
+ // 寻找泳道
+ var proteinRect = pbb.getProteinRectVC(data, (ushort)image_L16.Width, (ushort)image_L16.Height);
+ var band_info = new List<_band_info>();
+
+ // 根据泳道找条带
+ fixed (byte* p = image_byte)
+ {
+ pbb.getProteinBandsVC(p, 16, (ushort)image_L16.Width, (ushort)image_L16.Height, proteinRect, ref band_info);
+ }
+ pbb.adjustBands(band_info, 5);
+ pbb.molecularWeightResult(ref proteinRect, ref band_info);
+ lanes_Infos.Clear();
+ int index = 0;
+ foreach (var item in proteinRect)
+ {
+
+ Lanes_info lanes_Info = new Lanes_info();
+ if (index == 0)
+ {
+ lanes_Info.isSelect = true;// 认为查找后第一个就是被选中的状态
+ }
+ lanes_Info.x = item.X;
+ lanes_Info.y = item.Y;
+ lanes_Info.height = item.Height;
+ lanes_Info.width = item.Width;
+ lanes_Info.band_Info = band_info[index];
+ lanes_Infos.Add(lanes_Info);
+ index++;
+ }
+
+ }
+ }
+
+ imagePanel.image_pl.Invalidate();
+ }
+ #endregion
+
private void OnKeyPressed(Keys key, bool ctrl, bool shift, bool alt)
{
diff --git a/src/PBAnaly/Module/util.cs b/src/PBAnaly/Module/util.cs
index 434273f..7c8a669 100644
--- a/src/PBAnaly/Module/util.cs
+++ b/src/PBAnaly/Module/util.cs
@@ -92,6 +92,12 @@ namespace PBAnaly.Module
Image image = Image.Load(filePath);
return image;
}
+ public static Image LoadTiffAsL8(string filePath)
+ {
+ // 加载图像并确保其为16位灰度图像
+ Image image = Image.Load(filePath);
+ return image;
+ }
public static byte[] ConvertL16ImageToByteArray(Image image)
{
int width = image.Width;
@@ -112,6 +118,28 @@ namespace PBAnaly.Module
return pixels;
}
+
+ public static byte[] ConvertL8ImageToByteArray(Image image)
+ {
+ int width = image.Width;
+ int height = image.Height;
+ byte[] pixels = new byte[width * height * sizeof(byte)];
+
+ int index = 0;
+ for (int y = 0; y < height; y++)
+ {
+ for (int x = 0; x < width; x++)
+ {
+ // 直接访问每个像素的值并转换为 byte[]
+ byte pixelValue = image[x, y].PackedValue;
+ BitConverter.GetBytes(pixelValue).CopyTo(pixels, index);
+ index += sizeof(byte);
+ }
+ }
+
+ return pixels;
+ }
+
public static ushort[] ConvertL16ImageToUShortArray(Image image)
{
var byteArray = ConvertL16ImageToByteArray(image);
diff --git a/src/PBAnaly/PBAnaly.csproj b/src/PBAnaly/PBAnaly.csproj
index 2221243..9b94cc7 100644
--- a/src/PBAnaly/PBAnaly.csproj
+++ b/src/PBAnaly/PBAnaly.csproj
@@ -57,6 +57,7 @@
+
Form
@@ -124,6 +125,7 @@
MainForm.cs
+
@@ -131,6 +133,7 @@
+
Form
@@ -150,6 +153,12 @@
AnalyzeDataForm.cs
+
+ Form
+
+
+ LaneLineChartForm.cs
+
Form
@@ -247,16 +256,9 @@
MainForm.cs
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
- True
-
+
+
+
SettingForm.cs
@@ -269,6 +271,9 @@
AnalyzeDataForm.cs
+
+ LaneLineChartForm.cs
+
LanesImagePaletteForm.cs
diff --git a/src/PBAnaly/Program.cs b/src/PBAnaly/Program.cs
index 696d37f..7cb1500 100644
--- a/src/PBAnaly/Program.cs
+++ b/src/PBAnaly/Program.cs
@@ -5,6 +5,7 @@ using System.Windows.Forms;
using PBAnaly.Module;
using PBAnaly.UI;
using PBAnaly.LoginCommon;
+using PBAnaly.Assist;
namespace PBAnaly
{
public static class Global
@@ -63,7 +64,7 @@ namespace PBAnaly
}
- if (Util.ViKeySoft.Instance.CheckViKey() == false)
+ if (Util.ViKeySoft.Instance.CheckViKey() == true)
{
MessageBox.Show("你没有权限,请检查加密狗是否插入","警告");
return;
@@ -77,6 +78,7 @@ namespace PBAnaly
string dbPath = "UserManage.db";
string connectionString = $"Data Source={dbPath};Version=3;";
UserManage.ConnectDb();
+ GlobalData.LoadGlobalPropertyFromDb();
//AccessControl.LoadConfig();//加载权限
var login = new LoginForm();
login.StartPosition = FormStartPosition.CenterScreen;
diff --git a/src/PBAnaly/Properties/Resources.en-US.resx b/src/PBAnaly/Properties/Resources.en-US.resx
new file mode 100644
index 0000000..599f241
--- /dev/null
+++ b/src/PBAnaly/Properties/Resources.en-US.resx
@@ -0,0 +1,328 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+
+
+ Back
+
+
+ Name
+
+
+ Question
+
+
+ Answer
+
+
+ Password
+
+
+ FIND
+
+
+ Login
+
+
+ Remember Me
+
+
+ Forgot your password? Click back
+
+
+ Login
+
+
+ Register
+
+
+ Back
+
+
+ Name
+
+
+ Password
+
+
+ Password
+
+
+ Question
+
+
+ register
+
+
+ EditRole
+
+
+ Delete
+
+
+ FixPass
+
+
+ Name
+
+
+ Role
+
+
+ ChangeRole
+
+
+ Delete
+
+
+ Password
+
+
+ Name
+
+
+ FixPassword
+
+
+ LoadData
+
+
+ ExportMap
+
+
+ DataAnalyze
+
+
+ Waveform
+
+
+ System
+
+
+ Log
+
+
+ MapDeal
+
+
+ AcidAnalyze
+
+
+ RoiAnalyze
+
+
+ MiniAnalyze
+
+
+ Dotcounts
+
+
+ Correction
+
+
+ Show
+
+
+ Mode
+
+
+ RoleManage
+
+
+ Save
+
+
+ Answer
+
+
+ Select one line and delete it
+
+
+ Photon
+
+
+ Trans-fluorescence
+
+
+ FindLane
+
+
+ path
+
+
+ One
+
+
+ Last
+
+
+ Next
+
+
+ finally
+
+
+ SaveTIF
+
+
+ Close
+
+
+ Open
+
+
+ Enter
+
+
+ Cancel
+
+
+ Lane
+
+
+ LaneWidth
+
+
+ InitialWell
+
+
+ Stripe
+
+
+ conformity
+
+
+ Dark/Light Theme
+
+
+ Setting
+
+
+ SystemSetting
+
+
+ UserManage
+
+
+ Language:
+
+
\ No newline at end of file
diff --git a/src/PBAnaly/Properties/Resources.resx b/src/PBAnaly/Properties/Resources.resx
index bc4101a..4aa8e68 100644
--- a/src/PBAnaly/Properties/Resources.resx
+++ b/src/PBAnaly/Properties/Resources.resx
@@ -118,24 +118,15 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- ..\Resources\Black_Blue_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\计数器.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\返回前台.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\yto-icon-X-transit_time.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\关闭White.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\EtBr_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\壁纸.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -172,9 +163,6 @@
..\Resources\波形设置-未选中.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Gray.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\Black_Blue_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -193,9 +181,6 @@
..\Resources\圆形.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Black_Red_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\京仪科技定稿_画板 1 副本2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -211,21 +196,12 @@
..\Resources\风控.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Black_SDS_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\饼干.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\控制窗口.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Black_SDS_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\EtBr_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\Black_Yley_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -238,12 +214,6 @@
..\Resources\YellowHot_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Pseudo_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\C.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\图片管理.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -262,21 +232,12 @@
..\Resources\缩小.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Black_Yley_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\導出.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Pseudo_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\线段.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\10矩形.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\最大化white.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -310,4 +271,208 @@
..\Resources\登录-亮.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ 返回
+
+
+ 用户名
+
+
+ 密保问题
+
+
+ 答案
+
+
+ 你的密码
+
+
+ 找回
+
+
+ 登录
+
+
+ 记住登录
+
+
+ 忘记密码?点击找回
+
+
+ 登录
+
+
+ 注册
+
+
+ 返回
+
+
+ 用户名
+
+
+ 密码
+
+
+ 确认密码
+
+
+ 密保问题
+
+
+ 注册
+
+
+ 修改权限
+
+
+ 删除
+
+
+ 修改密码
+
+
+ 用户名
+
+
+ 权限
+
+
+ 修改权限
+
+
+ 删除
+
+
+ 密码
+
+
+ 用户名
+
+
+ 修改密码
+
+
+ 加载数据
+
+
+ 导出图像
+
+
+ 数据分析
+
+
+ 泳道波形图
+
+
+ 系统操作
+
+
+ 操作日志
+
+
+ 图像处理
+
+
+ 泳道分析
+
+
+ ROI分析
+
+
+ 微孔版分析
+
+
+ 菌落技术
+
+
+ 蛋白归一化
+
+
+ 显示
+
+
+ 模式
+
+
+ 权限管理
+
+
+ 保存
+
+
+ 答案
+
+
+ 提示
+
+
+ 光子量
+
+
+ 反式荧光
+
+
+ 查找泳道
+
+
+ 路径
+
+
+ 第一幅
+
+
+ 上一页
+
+
+ 下一页
+
+
+ 最后
+
+
+ 另存为
+
+
+ 关闭
+
+
+ 打开当前帧
+
+
+ 确定
+
+
+ 取消
+
+
+ 泳道
+
+
+ 统一泳道宽度
+
+
+ 初始井
+
+
+ 条带
+
+
+ 整合
+
+
+ 光/暗 主题
+
+
+ 设置
+
+
+ 系统设置
+
+
+ 用户管理
+
+
+ 语言
+
\ No newline at end of file
diff --git a/src/PBAnaly/Properties/Resources.zh-CN.resx b/src/PBAnaly/Properties/Resources.zh-CN.resx
new file mode 100644
index 0000000..5e8f7d4
--- /dev/null
+++ b/src/PBAnaly/Properties/Resources.zh-CN.resx
@@ -0,0 +1,328 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+
+
+ 返回
+
+
+ 用户名
+
+
+ 密保问题
+
+
+ 答案
+
+
+ 你的密码
+
+
+ 找回
+
+
+ 登录
+
+
+ 记住本次登录
+
+
+ 忘记密码?点击找回
+
+
+ 登录
+
+
+ 注册
+
+
+ 返回
+
+
+ 用户名
+
+
+ 密码
+
+
+ 确认密码
+
+
+ 密保问题
+
+
+ 注册
+
+
+ 修改权限
+
+
+ 删除
+
+
+ 修改密码
+
+
+ 用户名
+
+
+ 权限
+
+
+ 修改权限
+
+
+ 删除
+
+
+ 密码
+
+
+ 用户名
+
+
+ 修改密码
+
+
+ 加载数据
+
+
+ 导出图像
+
+
+ 数据分析
+
+
+ 泳道波形图
+
+
+ 系统操作
+
+
+ 操作日志
+
+
+ 图像处理
+
+
+ 泳道分析
+
+
+ ROI分析
+
+
+ 微孔版分析
+
+
+ 菌落技术
+
+
+ 蛋白归一化
+
+
+ 显示
+
+
+ 模式
+
+
+ 权限管理
+
+
+ 保存
+
+
+ 答案
+
+
+ 选中表格中一行删掉即可
+
+
+ 光子量
+
+
+ 反式荧光
+
+
+ 查找泳道
+
+
+ 路径
+
+
+ 第一幅
+
+
+ 上一页
+
+
+ 下一页
+
+
+ 最后
+
+
+ 另存为单帧TIF
+
+
+ 关闭
+
+
+ 打开当前帧
+
+
+ 确定
+
+
+ 取消
+
+
+ 泳道
+
+
+ 统一泳道宽度
+
+
+ 初始井
+
+
+ 条带
+
+
+ 整合
+
+
+ 光/暗 主题
+
+
+ 设置
+
+
+ 系统设置
+
+
+ 用户管理
+
+
+ 语言
+
+
\ No newline at end of file
diff --git a/src/PBAnaly/UI/AnalyzeDataForm.Designer.cs b/src/PBAnaly/UI/AnalyzeDataForm.Designer.cs
index 0b138ea..04af214 100644
--- a/src/PBAnaly/UI/AnalyzeDataForm.Designer.cs
+++ b/src/PBAnaly/UI/AnalyzeDataForm.Designer.cs
@@ -65,7 +65,7 @@
this.文件ToolStripMenuItem1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65)))));
this.文件ToolStripMenuItem1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
this.文件ToolStripMenuItem1.Name = "文件ToolStripMenuItem1";
- this.文件ToolStripMenuItem1.Size = new System.Drawing.Size(53, 21);
+ this.文件ToolStripMenuItem1.Size = new System.Drawing.Size(44, 21);
this.文件ToolStripMenuItem1.Text = "文件";
//
// 选项ToolStripMenuItem1
@@ -73,7 +73,7 @@
this.选项ToolStripMenuItem1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65)))));
this.选项ToolStripMenuItem1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
this.选项ToolStripMenuItem1.Name = "选项ToolStripMenuItem1";
- this.选项ToolStripMenuItem1.Size = new System.Drawing.Size(53, 21);
+ this.选项ToolStripMenuItem1.Size = new System.Drawing.Size(44, 21);
this.选项ToolStripMenuItem1.Text = "选项";
//
// crownMenuStrip1
@@ -101,10 +101,10 @@
this.metroPanel1.Controls.Add(this.crownLabel1);
this.metroPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroPanel1.IsDerivedStyle = true;
- this.metroPanel1.Location = new System.Drawing.Point(0, 31);
+ this.metroPanel1.Location = new System.Drawing.Point(0, 25);
this.metroPanel1.Margin = new System.Windows.Forms.Padding(0);
this.metroPanel1.Name = "metroPanel1";
- this.metroPanel1.Size = new System.Drawing.Size(1577, 36);
+ this.metroPanel1.Size = new System.Drawing.Size(1303, 29);
this.metroPanel1.Style = ReaLTaiizor.Enum.Metro.Style.Custom;
this.metroPanel1.StyleManager = null;
this.metroPanel1.TabIndex = 3;
@@ -115,10 +115,9 @@
//
this.crownLabel1.AutoSize = true;
this.crownLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
- this.crownLabel1.Location = new System.Drawing.Point(4, 11);
- this.crownLabel1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.crownLabel1.Location = new System.Drawing.Point(3, 9);
this.crownLabel1.Name = "crownLabel1";
- this.crownLabel1.Size = new System.Drawing.Size(37, 15);
+ this.crownLabel1.Size = new System.Drawing.Size(29, 12);
this.crownLabel1.TabIndex = 0;
this.crownLabel1.Text = "显示";
//
@@ -130,14 +129,13 @@
this.tableLayoutPanel1.Controls.Add(this.metroPanel1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 2);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel1.Location = new System.Drawing.Point(4, 30);
- this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 24);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(1577, 1169);
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(1303, 1073);
this.tableLayoutPanel1.TabIndex = 3;
//
// panel1
@@ -147,11 +145,10 @@
this.panel1.Controls.Add(this.dataGridView1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
- this.panel1.Location = new System.Drawing.Point(4, 71);
- this.panel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.panel1.Location = new System.Drawing.Point(3, 57);
this.panel1.Name = "panel1";
- this.panel1.Padding = new System.Windows.Forms.Padding(7, 6, 7, 6);
- this.panel1.Size = new System.Drawing.Size(1569, 1094);
+ this.panel1.Padding = new System.Windows.Forms.Padding(5);
+ this.panel1.Size = new System.Drawing.Size(1297, 1013);
this.panel1.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.panel1.TabIndex = 4;
this.panel1.Text = "panel1";
@@ -160,26 +157,24 @@
//
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.dataGridView1.Location = new System.Drawing.Point(7, 6);
- this.dataGridView1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.dataGridView1.Location = new System.Drawing.Point(5, 5);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowHeadersWidth = 51;
this.dataGridView1.RowTemplate.Height = 23;
- this.dataGridView1.Size = new System.Drawing.Size(1555, 1082);
+ this.dataGridView1.Size = new System.Drawing.Size(1287, 1003);
this.dataGridView1.TabIndex = 0;
//
// AnalyzeDataForm
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(1585, 1203);
+ this.ClientSize = new System.Drawing.Size(1309, 1100);
this.Controls.Add(this.tableLayoutPanel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.MainMenuStrip = this.miniToolStrip;
- this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.Name = "AnalyzeDataForm";
- this.Padding = new System.Windows.Forms.Padding(4, 30, 4, 4);
+ this.Padding = new System.Windows.Forms.Padding(3, 24, 3, 3);
this.Text = "AnalyzeDataForm";
this.crownMenuStrip1.ResumeLayout(false);
this.crownMenuStrip1.PerformLayout();
diff --git a/src/PBAnaly/UI/AnalyzeDataForm.cs b/src/PBAnaly/UI/AnalyzeDataForm.cs
index 5e71a2c..248b7c3 100644
--- a/src/PBAnaly/UI/AnalyzeDataForm.cs
+++ b/src/PBAnaly/UI/AnalyzeDataForm.cs
@@ -1,4 +1,5 @@
using MaterialSkin.Controls;
+using PBAnaly.Assist;
using PBBiologyVC;
//using ReaLTaiizor.Util;
//using Sunny.UI.Win32;
@@ -7,8 +8,11 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -51,8 +55,57 @@ namespace PBAnaly.UI
this.dataGridView1.CellPainting += DataGridView1_CellPainting;
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+
}
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
public void Draw()
{
diff --git a/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs b/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs
index 3a761ab..6ee6e46 100644
--- a/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs
+++ b/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs
@@ -33,7 +33,7 @@
this.panel1 = new AntdUI.Panel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.panel2 = new AntdUI.Panel();
- this.label2 = new AntdUI.Label();
+ this.label2_mode = new AntdUI.Label();
this.cbb_mode = new System.Windows.Forms.ComboBox();
this.lb_imageIndex = new AntdUI.Label();
this.cb_scientific = new AntdUI.Checkbox();
@@ -120,7 +120,7 @@
//
// panel2
//
- this.panel2.Controls.Add(this.label2);
+ this.panel2.Controls.Add(this.label2_mode);
this.panel2.Controls.Add(this.cbb_mode);
this.panel2.Controls.Add(this.lb_imageIndex);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -131,15 +131,15 @@
this.panel2.TabIndex = 0;
this.panel2.Text = "panel2";
//
- // label2
+ // label2_mode
//
- this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.label2_mode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
- this.label2.Location = new System.Drawing.Point(36, 0);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(36, 23);
- this.label2.TabIndex = 1;
- this.label2.Text = "模式:";
+ this.label2_mode.Location = new System.Drawing.Point(36, 0);
+ this.label2_mode.Name = "label2_mode";
+ this.label2_mode.Size = new System.Drawing.Size(36, 23);
+ this.label2_mode.TabIndex = 1;
+ this.label2_mode.Text = "模式:";
//
// cbb_mode
//
@@ -445,6 +445,7 @@
this.lb_top_info.Size = new System.Drawing.Size(60, 22);
this.lb_top_info.TabIndex = 4;
this.lb_top_info.Text = "Trans-fluorescence";
+ this.lb_top_info.TextAlign = System.Drawing.ContentAlignment.TopLeft;
//
// BioanalyImagePanel
//
@@ -498,7 +499,7 @@
public System.Windows.Forms.TableLayoutPanel tlp_right_panel;
public System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
public AntdUI.Checkbox cb_scientific;
- private AntdUI.Label label2;
+ private AntdUI.Label label2_mode;
public AntdUI.Label lb_imageIndex;
public System.Windows.Forms.ContextMenuStrip ctms_strop;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
diff --git a/src/PBAnaly/UI/BioanalyImagePanel.cs b/src/PBAnaly/UI/BioanalyImagePanel.cs
index ca345b3..889c0dc 100644
--- a/src/PBAnaly/UI/BioanalyImagePanel.cs
+++ b/src/PBAnaly/UI/BioanalyImagePanel.cs
@@ -1,4 +1,5 @@
-using PBAnaly.Module;
+using PBAnaly.Assist;
+using PBAnaly.Module;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using System;
@@ -7,8 +8,11 @@ using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -45,8 +49,57 @@ namespace PBAnaly.UI
CenterPictureBox();
image_pl.MouseWheel += Image_pl_MouseWheel;
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
#region 对外方法
diff --git a/src/PBAnaly/UI/BioanayImagePaletteForm.Designer.cs b/src/PBAnaly/UI/BioanayImagePaletteForm.Designer.cs
index 7e7d975..a665499 100644
--- a/src/PBAnaly/UI/BioanayImagePaletteForm.Designer.cs
+++ b/src/PBAnaly/UI/BioanayImagePaletteForm.Designer.cs
@@ -116,11 +116,10 @@
this.fb_fixSetting.EnabledCalc = true;
this.fb_fixSetting.Font = new System.Drawing.Font("Segoe UI", 10F);
this.fb_fixSetting.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(78)))), ((int)(((byte)(90)))));
- this.fb_fixSetting.Location = new System.Drawing.Point(183, 39);
- this.fb_fixSetting.Margin = new System.Windows.Forms.Padding(4);
+ this.fb_fixSetting.Location = new System.Drawing.Point(137, 31);
this.fb_fixSetting.Name = "fb_fixSetting";
this.fb_fixSetting.OverColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
- this.fb_fixSetting.Size = new System.Drawing.Size(79, 39);
+ this.fb_fixSetting.Size = new System.Drawing.Size(59, 31);
this.fb_fixSetting.TabIndex = 6;
this.fb_fixSetting.Text = "修改";
//
@@ -129,10 +128,9 @@
this.foxLabel7.BackColor = System.Drawing.Color.Transparent;
this.foxLabel7.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.foxLabel7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel7.Location = new System.Drawing.Point(160, 6);
- this.foxLabel7.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel7.Location = new System.Drawing.Point(120, 5);
this.foxLabel7.Name = "foxLabel7";
- this.foxLabel7.Size = new System.Drawing.Size(35, 24);
+ this.foxLabel7.Size = new System.Drawing.Size(26, 19);
this.foxLabel7.TabIndex = 4;
this.foxLabel7.Text = "r=";
//
@@ -141,10 +139,9 @@
this.foxLabel5.BackColor = System.Drawing.Color.Transparent;
this.foxLabel5.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.foxLabel5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel5.Location = new System.Drawing.Point(4, 39);
- this.foxLabel5.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel5.Location = new System.Drawing.Point(3, 31);
this.foxLabel5.Name = "foxLabel5";
- this.foxLabel5.Size = new System.Drawing.Size(35, 24);
+ this.foxLabel5.Size = new System.Drawing.Size(26, 19);
this.foxLabel5.TabIndex = 2;
this.foxLabel5.Text = "h=";
//
@@ -155,10 +152,9 @@
this.foxLabel8.Dock = System.Windows.Forms.DockStyle.Fill;
this.foxLabel8.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.foxLabel8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel8.Location = new System.Drawing.Point(4, 246);
- this.foxLabel8.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel8.Location = new System.Drawing.Point(3, 197);
this.foxLabel8.Name = "foxLabel8";
- this.foxLabel8.Size = new System.Drawing.Size(266, 22);
+ this.foxLabel8.Size = new System.Drawing.Size(198, 18);
this.foxLabel8.TabIndex = 34;
this.foxLabel8.Text = "Color Rable";
//
@@ -169,10 +165,9 @@
this.flb_act_mm.Dock = System.Windows.Forms.DockStyle.Fill;
this.flb_act_mm.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.flb_act_mm.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.flb_act_mm.Location = new System.Drawing.Point(125, 216);
- this.flb_act_mm.Margin = new System.Windows.Forms.Padding(4);
+ this.flb_act_mm.Location = new System.Drawing.Point(93, 173);
this.flb_act_mm.Name = "flb_act_mm";
- this.flb_act_mm.Size = new System.Drawing.Size(220, 22);
+ this.flb_act_mm.Size = new System.Drawing.Size(164, 18);
this.flb_act_mm.TabIndex = 30;
this.flb_act_mm.Text = "0 mm";
//
@@ -182,10 +177,9 @@
this.foxLabel9.Dock = System.Windows.Forms.DockStyle.Fill;
this.foxLabel9.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.foxLabel9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel9.Location = new System.Drawing.Point(4, 143);
- this.foxLabel9.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel9.Location = new System.Drawing.Point(3, 115);
this.foxLabel9.Name = "foxLabel9";
- this.foxLabel9.Size = new System.Drawing.Size(59, 37);
+ this.foxLabel9.Size = new System.Drawing.Size(44, 30);
this.foxLabel9.TabIndex = 18;
this.foxLabel9.Text = "Max";
//
@@ -195,10 +189,9 @@
this.foxLabel6.Dock = System.Windows.Forms.DockStyle.Fill;
this.foxLabel6.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.foxLabel6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel6.Location = new System.Drawing.Point(4, 98);
- this.foxLabel6.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel6.Location = new System.Drawing.Point(3, 79);
this.foxLabel6.Name = "foxLabel6";
- this.foxLabel6.Size = new System.Drawing.Size(59, 37);
+ this.foxLabel6.Size = new System.Drawing.Size(44, 30);
this.foxLabel6.TabIndex = 13;
this.foxLabel6.Text = "Min";
//
@@ -208,10 +201,9 @@
this.foxLabel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.foxLabel2.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.foxLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel2.Location = new System.Drawing.Point(4, 76);
- this.foxLabel2.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel2.Location = new System.Drawing.Point(3, 61);
this.foxLabel2.Name = "foxLabel2";
- this.foxLabel2.Size = new System.Drawing.Size(59, 14);
+ this.foxLabel2.Size = new System.Drawing.Size(44, 12);
this.foxLabel2.TabIndex = 10;
this.foxLabel2.Text = "色阶";
//
@@ -221,10 +213,9 @@
this.foxLabel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.foxLabel3.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.foxLabel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel3.Location = new System.Drawing.Point(4, 40);
- this.foxLabel3.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel3.Location = new System.Drawing.Point(3, 32);
this.foxLabel3.Name = "foxLabel3";
- this.foxLabel3.Size = new System.Drawing.Size(59, 28);
+ this.foxLabel3.Size = new System.Drawing.Size(44, 23);
this.foxLabel3.TabIndex = 6;
this.foxLabel3.Text = "透明度::";
//
@@ -234,10 +225,9 @@
this.foxLabel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.foxLabel1.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.foxLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel1.Location = new System.Drawing.Point(4, 4);
- this.foxLabel1.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel1.Location = new System.Drawing.Point(3, 3);
this.foxLabel1.Name = "foxLabel1";
- this.foxLabel1.Size = new System.Drawing.Size(59, 28);
+ this.foxLabel1.Size = new System.Drawing.Size(44, 23);
this.foxLabel1.TabIndex = 1;
this.foxLabel1.Text = "亮度:";
//
@@ -246,20 +236,19 @@
this.foxLabel4.BackColor = System.Drawing.Color.Transparent;
this.foxLabel4.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.foxLabel4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel4.Location = new System.Drawing.Point(4, 4);
- this.foxLabel4.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel4.Location = new System.Drawing.Point(3, 3);
this.foxLabel4.Name = "foxLabel4";
- this.foxLabel4.Size = new System.Drawing.Size(35, 24);
+ this.foxLabel4.Size = new System.Drawing.Size(26, 19);
this.foxLabel4.TabIndex = 0;
this.foxLabel4.Text = "w=";
//
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 5;
- this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel3.Controls.Add(this.hpb_wand, 3, 0);
this.tableLayoutPanel3.Controls.Add(this.hpb_xianduan, 2, 0);
@@ -272,11 +261,11 @@
this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 3;
- this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 42F));
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F));
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
- this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
- this.tableLayoutPanel3.Size = new System.Drawing.Size(357, 228);
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel3.Size = new System.Drawing.Size(266, 182);
this.tableLayoutPanel3.TabIndex = 0;
//
// hpb_wand
@@ -284,10 +273,9 @@
this.hpb_wand.Dock = System.Windows.Forms.DockStyle.Fill;
this.hpb_wand.Image = global::PBAnaly.Properties.Resources.魔术棒_魔法_魔术_一键;
this.hpb_wand.ImageFit = AntdUI.TFit.Contain;
- this.hpb_wand.Location = new System.Drawing.Point(139, 4);
- this.hpb_wand.Margin = new System.Windows.Forms.Padding(4);
+ this.hpb_wand.Location = new System.Drawing.Point(105, 3);
this.hpb_wand.Name = "hpb_wand";
- this.hpb_wand.Size = new System.Drawing.Size(37, 34);
+ this.hpb_wand.Size = new System.Drawing.Size(28, 28);
this.hpb_wand.TabIndex = 14;
this.hpb_wand.Text = "a";
//
@@ -297,10 +285,9 @@
this.hpb_xianduan.Dock = System.Windows.Forms.DockStyle.Fill;
this.hpb_xianduan.Image = global::PBAnaly.Properties.Resources.线段__1_;
this.hpb_xianduan.ImageFit = AntdUI.TFit.Contain;
- this.hpb_xianduan.Location = new System.Drawing.Point(94, 4);
- this.hpb_xianduan.Margin = new System.Windows.Forms.Padding(4);
+ this.hpb_xianduan.Location = new System.Drawing.Point(71, 3);
this.hpb_xianduan.Name = "hpb_xianduan";
- this.hpb_xianduan.Size = new System.Drawing.Size(37, 34);
+ this.hpb_xianduan.Size = new System.Drawing.Size(28, 28);
this.hpb_xianduan.TabIndex = 13;
this.hpb_xianduan.Text = "a";
//
@@ -310,10 +297,9 @@
this.hpb_circe.Dock = System.Windows.Forms.DockStyle.Fill;
this.hpb_circe.Image = global::PBAnaly.Properties.Resources.圆形;
this.hpb_circe.ImageFit = AntdUI.TFit.Contain;
- this.hpb_circe.Location = new System.Drawing.Point(49, 4);
- this.hpb_circe.Margin = new System.Windows.Forms.Padding(4);
+ this.hpb_circe.Location = new System.Drawing.Point(37, 3);
this.hpb_circe.Name = "hpb_circe";
- this.hpb_circe.Size = new System.Drawing.Size(37, 34);
+ this.hpb_circe.Size = new System.Drawing.Size(28, 28);
this.hpb_circe.TabIndex = 0;
this.hpb_circe.Text = "a";
//
@@ -323,10 +309,9 @@
this.hpb_rect.Dock = System.Windows.Forms.DockStyle.Fill;
this.hpb_rect.Image = global::PBAnaly.Properties.Resources._10矩形;
this.hpb_rect.ImageFit = AntdUI.TFit.Contain;
- this.hpb_rect.Location = new System.Drawing.Point(4, 4);
- this.hpb_rect.Margin = new System.Windows.Forms.Padding(4);
+ this.hpb_rect.Location = new System.Drawing.Point(3, 3);
this.hpb_rect.Name = "hpb_rect";
- this.hpb_rect.Size = new System.Drawing.Size(37, 34);
+ this.hpb_rect.Size = new System.Drawing.Size(28, 28);
this.hpb_rect.TabIndex = 0;
this.hpb_rect.Text = "a";
//
@@ -344,10 +329,9 @@
this.panel2.Controls.Add(this.foxLabel5);
this.panel2.Controls.Add(this.foxLabel4);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel2.Location = new System.Drawing.Point(4, 46);
- this.panel2.Margin = new System.Windows.Forms.Padding(4);
+ this.panel2.Location = new System.Drawing.Point(3, 37);
this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(349, 153);
+ this.panel2.Size = new System.Drawing.Size(260, 122);
this.panel2.TabIndex = 14;
this.panel2.Text = "panel2";
//
@@ -362,10 +346,9 @@
this.dtb_th.ColorE = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.dtb_th.ColorF = System.Drawing.Color.Black;
this.dtb_th.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
- this.dtb_th.Location = new System.Drawing.Point(47, 92);
- this.dtb_th.Margin = new System.Windows.Forms.Padding(4);
+ this.dtb_th.Location = new System.Drawing.Point(35, 74);
this.dtb_th.Name = "dtb_th";
- this.dtb_th.Size = new System.Drawing.Size(106, 25);
+ this.dtb_th.Size = new System.Drawing.Size(80, 21);
this.dtb_th.TabIndex = 12;
this.dtb_th.Text = "100";
//
@@ -374,10 +357,9 @@
this.foxLabel10.BackColor = System.Drawing.Color.Transparent;
this.foxLabel10.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.foxLabel10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel10.Location = new System.Drawing.Point(4, 89);
- this.foxLabel10.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel10.Location = new System.Drawing.Point(3, 71);
this.foxLabel10.Name = "foxLabel10";
- this.foxLabel10.Size = new System.Drawing.Size(35, 24);
+ this.foxLabel10.Size = new System.Drawing.Size(26, 19);
this.foxLabel10.TabIndex = 11;
this.foxLabel10.Text = "th=";
//
@@ -392,10 +374,9 @@
this.dtb_r.ColorE = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.dtb_r.ColorF = System.Drawing.Color.Black;
this.dtb_r.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
- this.dtb_r.Location = new System.Drawing.Point(192, 6);
- this.dtb_r.Margin = new System.Windows.Forms.Padding(4);
+ this.dtb_r.Location = new System.Drawing.Point(144, 5);
this.dtb_r.Name = "dtb_r";
- this.dtb_r.Size = new System.Drawing.Size(106, 25);
+ this.dtb_r.Size = new System.Drawing.Size(80, 21);
this.dtb_r.TabIndex = 10;
this.dtb_r.Text = "10";
//
@@ -410,10 +391,9 @@
this.dtb_h.ColorE = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.dtb_h.ColorF = System.Drawing.Color.Black;
this.dtb_h.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
- this.dtb_h.Location = new System.Drawing.Point(47, 42);
- this.dtb_h.Margin = new System.Windows.Forms.Padding(4);
+ this.dtb_h.Location = new System.Drawing.Point(35, 34);
this.dtb_h.Name = "dtb_h";
- this.dtb_h.Size = new System.Drawing.Size(106, 25);
+ this.dtb_h.Size = new System.Drawing.Size(80, 21);
this.dtb_h.TabIndex = 9;
this.dtb_h.Text = "10";
//
@@ -428,10 +408,9 @@
this.dtb_w.ColorE = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.dtb_w.ColorF = System.Drawing.Color.Black;
this.dtb_w.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
- this.dtb_w.Location = new System.Drawing.Point(45, 6);
- this.dtb_w.Margin = new System.Windows.Forms.Padding(4);
+ this.dtb_w.Location = new System.Drawing.Point(34, 5);
this.dtb_w.Name = "dtb_w";
- this.dtb_w.Size = new System.Drawing.Size(106, 25);
+ this.dtb_w.Size = new System.Drawing.Size(80, 21);
this.dtb_w.TabIndex = 8;
this.dtb_w.Text = "10";
//
@@ -440,20 +419,18 @@
this.flb_info.BackColor = System.Drawing.Color.Transparent;
this.flb_info.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.flb_info.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.flb_info.Location = new System.Drawing.Point(1, 126);
- this.flb_info.Margin = new System.Windows.Forms.Padding(4);
+ this.flb_info.Location = new System.Drawing.Point(1, 101);
this.flb_info.Name = "flb_info";
- this.flb_info.Size = new System.Drawing.Size(297, 24);
+ this.flb_info.Size = new System.Drawing.Size(223, 19);
this.flb_info.TabIndex = 7;
//
// panel3
//
this.panel3.Controls.Add(this.cb_continuous);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel3.Location = new System.Drawing.Point(184, 4);
- this.panel3.Margin = new System.Windows.Forms.Padding(4);
+ this.panel3.Location = new System.Drawing.Point(139, 3);
this.panel3.Name = "panel3";
- this.panel3.Size = new System.Drawing.Size(169, 34);
+ this.panel3.Size = new System.Drawing.Size(124, 28);
this.panel3.TabIndex = 56;
this.panel3.Text = "panel3";
//
@@ -463,19 +440,18 @@
this.cb_continuous.Dock = System.Windows.Forms.DockStyle.Fill;
this.cb_continuous.Font = new System.Drawing.Font("宋体", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cb_continuous.Location = new System.Drawing.Point(0, 0);
- this.cb_continuous.Margin = new System.Windows.Forms.Padding(4);
this.cb_continuous.Name = "cb_continuous";
- this.cb_continuous.Size = new System.Drawing.Size(169, 34);
+ this.cb_continuous.Size = new System.Drawing.Size(124, 28);
this.cb_continuous.TabIndex = 55;
this.cb_continuous.Text = "连续绘制";
//
// collapseItem2
//
this.collapseItem2.Controls.Add(this.tableLayoutPanel3);
- this.collapseItem2.Location = new System.Drawing.Point(-357, -228);
- this.collapseItem2.Margin = new System.Windows.Forms.Padding(4);
+ this.collapseItem2.Expand = true;
+ this.collapseItem2.Location = new System.Drawing.Point(19, 433);
this.collapseItem2.Name = "collapseItem2";
- this.collapseItem2.Size = new System.Drawing.Size(357, 228);
+ this.collapseItem2.Size = new System.Drawing.Size(266, 182);
this.collapseItem2.TabIndex = 1;
this.collapseItem2.Text = "ROI工具";
//
@@ -494,20 +470,19 @@
"RGB",
"Pseudo",
"Gray"});
- this.cb_colortable.Location = new System.Drawing.Point(4, 276);
- this.cb_colortable.Margin = new System.Windows.Forms.Padding(4);
+ this.cb_colortable.Location = new System.Drawing.Point(3, 221);
this.cb_colortable.Name = "cb_colortable";
- this.cb_colortable.Size = new System.Drawing.Size(113, 23);
+ this.cb_colortable.Size = new System.Drawing.Size(84, 20);
this.cb_colortable.TabIndex = 35;
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 5;
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 67F));
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 27F));
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 27F));
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F));
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 75F));
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 56F));
this.tableLayoutPanel2.Controls.Add(this.cb_sharpen, 2, 5);
this.tableLayoutPanel2.Controls.Add(this.nud_opacity, 4, 1);
this.tableLayoutPanel2.Controls.Add(this.nud_brightness, 4, 0);
@@ -533,17 +508,17 @@
this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 10;
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel2.Size = new System.Drawing.Size(349, 340);
+ this.tableLayoutPanel2.Size = new System.Drawing.Size(260, 272);
this.tableLayoutPanel2.TabIndex = 0;
//
// cb_sharpen
@@ -551,29 +526,26 @@
this.cb_sharpen.AutoCheck = true;
this.tableLayoutPanel2.SetColumnSpan(this.cb_sharpen, 2);
this.cb_sharpen.Dock = System.Windows.Forms.DockStyle.Fill;
- this.cb_sharpen.Location = new System.Drawing.Point(98, 188);
- this.cb_sharpen.Margin = new System.Windows.Forms.Padding(4);
+ this.cb_sharpen.Location = new System.Drawing.Point(73, 151);
this.cb_sharpen.Name = "cb_sharpen";
- this.cb_sharpen.Size = new System.Drawing.Size(172, 20);
+ this.cb_sharpen.Size = new System.Drawing.Size(128, 16);
this.cb_sharpen.TabIndex = 57;
this.cb_sharpen.Text = "锐化";
//
// nud_opacity
//
this.nud_opacity.Dock = System.Windows.Forms.DockStyle.Fill;
- this.nud_opacity.Location = new System.Drawing.Point(278, 40);
- this.nud_opacity.Margin = new System.Windows.Forms.Padding(4);
+ this.nud_opacity.Location = new System.Drawing.Point(207, 32);
this.nud_opacity.Name = "nud_opacity";
- this.nud_opacity.Size = new System.Drawing.Size(67, 25);
+ this.nud_opacity.Size = new System.Drawing.Size(50, 21);
this.nud_opacity.TabIndex = 45;
//
// nud_brightness
//
this.nud_brightness.Dock = System.Windows.Forms.DockStyle.Fill;
- this.nud_brightness.Location = new System.Drawing.Point(278, 4);
- this.nud_brightness.Margin = new System.Windows.Forms.Padding(4);
+ this.nud_brightness.Location = new System.Drawing.Point(207, 3);
this.nud_brightness.Name = "nud_brightness";
- this.nud_brightness.Size = new System.Drawing.Size(67, 25);
+ this.nud_brightness.Size = new System.Drawing.Size(50, 21);
this.nud_brightness.TabIndex = 44;
//
// dtb_colorMax
@@ -586,13 +558,13 @@
this.dtb_colorMax.EmptyBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221)))));
this.dtb_colorMax.FillBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(99)))), ((int)(((byte)(50)))));
this.dtb_colorMax.JumpToMouse = false;
- this.dtb_colorMax.Location = new System.Drawing.Point(70, 141);
- this.dtb_colorMax.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.dtb_colorMax.Location = new System.Drawing.Point(52, 114);
+ this.dtb_colorMax.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.dtb_colorMax.Maximum = 100;
this.dtb_colorMax.Minimum = 0;
- this.dtb_colorMax.MinimumSize = new System.Drawing.Size(47, 22);
+ this.dtb_colorMax.MinimumSize = new System.Drawing.Size(35, 18);
this.dtb_colorMax.Name = "dtb_colorMax";
- this.dtb_colorMax.Size = new System.Drawing.Size(201, 22);
+ this.dtb_colorMax.Size = new System.Drawing.Size(150, 22);
this.dtb_colorMax.TabIndex = 40;
this.dtb_colorMax.Text = "dungeonTrackBar5";
this.dtb_colorMax.ThumbBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244)))));
@@ -611,13 +583,13 @@
this.dtb_colorMin.EmptyBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221)))));
this.dtb_colorMin.FillBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(99)))), ((int)(((byte)(50)))));
this.dtb_colorMin.JumpToMouse = false;
- this.dtb_colorMin.Location = new System.Drawing.Point(70, 96);
- this.dtb_colorMin.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.dtb_colorMin.Location = new System.Drawing.Point(52, 78);
+ this.dtb_colorMin.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.dtb_colorMin.Maximum = 100;
this.dtb_colorMin.Minimum = 0;
- this.dtb_colorMin.MinimumSize = new System.Drawing.Size(47, 22);
+ this.dtb_colorMin.MinimumSize = new System.Drawing.Size(35, 18);
this.dtb_colorMin.Name = "dtb_colorMin";
- this.dtb_colorMin.Size = new System.Drawing.Size(201, 22);
+ this.dtb_colorMin.Size = new System.Drawing.Size(150, 22);
this.dtb_colorMin.TabIndex = 39;
this.dtb_colorMin.Text = "dungeonTrackBar4";
this.dtb_colorMin.ThumbBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244)))));
@@ -636,13 +608,13 @@
this.dtb_opacity.EmptyBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221)))));
this.dtb_opacity.FillBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(99)))), ((int)(((byte)(50)))));
this.dtb_opacity.JumpToMouse = false;
- this.dtb_opacity.Location = new System.Drawing.Point(70, 38);
- this.dtb_opacity.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.dtb_opacity.Location = new System.Drawing.Point(52, 31);
+ this.dtb_opacity.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.dtb_opacity.Maximum = 100;
this.dtb_opacity.Minimum = 0;
- this.dtb_opacity.MinimumSize = new System.Drawing.Size(47, 22);
+ this.dtb_opacity.MinimumSize = new System.Drawing.Size(35, 18);
this.dtb_opacity.Name = "dtb_opacity";
- this.dtb_opacity.Size = new System.Drawing.Size(201, 22);
+ this.dtb_opacity.Size = new System.Drawing.Size(150, 22);
this.dtb_opacity.TabIndex = 37;
this.dtb_opacity.Text = "dungeonTrackBar2";
this.dtb_opacity.ThumbBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244)))));
@@ -656,11 +628,10 @@
this.hpb_line.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(196)))), ((int)(((byte)(204)))));
this.hpb_line.Dock = System.Windows.Forms.DockStyle.Fill;
this.hpb_line.Image = global::PBAnaly.Properties.Resources.线段;
- this.hpb_line.Location = new System.Drawing.Point(4, 216);
- this.hpb_line.Margin = new System.Windows.Forms.Padding(4);
+ this.hpb_line.Location = new System.Drawing.Point(3, 173);
this.hpb_line.Name = "hpb_line";
this.hpb_line.PixelOffsetType = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
- this.hpb_line.Size = new System.Drawing.Size(59, 22);
+ this.hpb_line.Size = new System.Drawing.Size(44, 18);
this.hpb_line.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.hpb_line.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.hpb_line.TabIndex = 9;
@@ -670,10 +641,10 @@
// pb_bgimage
//
this.pb_bgimage.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pb_bgimage.Location = new System.Drawing.Point(121, 272);
+ this.pb_bgimage.Location = new System.Drawing.Point(90, 218);
this.pb_bgimage.Margin = new System.Windows.Forms.Padding(0);
this.pb_bgimage.Name = "pb_bgimage";
- this.pb_bgimage.Size = new System.Drawing.Size(153, 36);
+ this.pb_bgimage.Size = new System.Drawing.Size(114, 29);
this.pb_bgimage.TabIndex = 36;
this.pb_bgimage.TabStop = false;
//
@@ -687,13 +658,13 @@
this.dtb_brightness.EmptyBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221)))));
this.dtb_brightness.FillBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(99)))), ((int)(((byte)(50)))));
this.dtb_brightness.JumpToMouse = false;
- this.dtb_brightness.Location = new System.Drawing.Point(70, 2);
- this.dtb_brightness.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.dtb_brightness.Location = new System.Drawing.Point(52, 2);
+ this.dtb_brightness.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.dtb_brightness.Maximum = 100;
this.dtb_brightness.Minimum = 0;
- this.dtb_brightness.MinimumSize = new System.Drawing.Size(47, 22);
+ this.dtb_brightness.MinimumSize = new System.Drawing.Size(35, 18);
this.dtb_brightness.Name = "dtb_brightness";
- this.dtb_brightness.Size = new System.Drawing.Size(201, 22);
+ this.dtb_brightness.Size = new System.Drawing.Size(150, 22);
this.dtb_brightness.TabIndex = 2;
this.dtb_brightness.Text = "dungeonTrackBar1";
this.dtb_brightness.ThumbBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244)))));
@@ -708,19 +679,18 @@
this.pl_max.BackColor = System.Drawing.Color.Transparent;
this.pl_max.Controls.Add(this.nud_colorMax);
this.pl_max.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pl_max.Location = new System.Drawing.Point(274, 139);
+ this.pl_max.Location = new System.Drawing.Point(204, 112);
this.pl_max.Margin = new System.Windows.Forms.Padding(0);
this.pl_max.Name = "pl_max";
- this.pl_max.Size = new System.Drawing.Size(75, 45);
+ this.pl_max.Size = new System.Drawing.Size(56, 36);
this.pl_max.TabIndex = 52;
this.pl_max.Text = "panel3";
//
// nud_colorMax
//
- this.nud_colorMax.Location = new System.Drawing.Point(4, 4);
- this.nud_colorMax.Margin = new System.Windows.Forms.Padding(4);
+ this.nud_colorMax.Location = new System.Drawing.Point(3, 3);
this.nud_colorMax.Name = "nud_colorMax";
- this.nud_colorMax.Size = new System.Drawing.Size(59, 25);
+ this.nud_colorMax.Size = new System.Drawing.Size(44, 21);
this.nud_colorMax.TabIndex = 51;
//
// pl_min
@@ -729,19 +699,18 @@
this.pl_min.BackColor = System.Drawing.Color.Transparent;
this.pl_min.Controls.Add(this.nud_colorMin);
this.pl_min.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pl_min.Location = new System.Drawing.Point(274, 94);
+ this.pl_min.Location = new System.Drawing.Point(204, 76);
this.pl_min.Margin = new System.Windows.Forms.Padding(0);
this.pl_min.Name = "pl_min";
- this.pl_min.Size = new System.Drawing.Size(75, 45);
+ this.pl_min.Size = new System.Drawing.Size(56, 36);
this.pl_min.TabIndex = 53;
this.pl_min.Text = "panel3";
//
// nud_colorMin
//
- this.nud_colorMin.Location = new System.Drawing.Point(4, 4);
- this.nud_colorMin.Margin = new System.Windows.Forms.Padding(4);
+ this.nud_colorMin.Location = new System.Drawing.Point(3, 3);
this.nud_colorMin.Name = "nud_colorMin";
- this.nud_colorMin.Size = new System.Drawing.Size(59, 25);
+ this.nud_colorMin.Size = new System.Drawing.Size(44, 21);
this.nud_colorMin.TabIndex = 50;
//
// cb_scientific
@@ -749,10 +718,9 @@
this.cb_scientific.AutoCheck = true;
this.tableLayoutPanel2.SetColumnSpan(this.cb_scientific, 2);
this.cb_scientific.Dock = System.Windows.Forms.DockStyle.Fill;
- this.cb_scientific.Location = new System.Drawing.Point(4, 188);
- this.cb_scientific.Margin = new System.Windows.Forms.Padding(4);
+ this.cb_scientific.Location = new System.Drawing.Point(3, 151);
this.cb_scientific.Name = "cb_scientific";
- this.cb_scientific.Size = new System.Drawing.Size(86, 20);
+ this.cb_scientific.Size = new System.Drawing.Size(64, 16);
this.cb_scientific.TabIndex = 54;
this.cb_scientific.Text = "光子量";
//
@@ -760,10 +728,9 @@
//
this.panel1.Controls.Add(this.tableLayoutPanel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel1.Location = new System.Drawing.Point(4, 4);
- this.panel1.Margin = new System.Windows.Forms.Padding(4);
+ this.panel1.Location = new System.Drawing.Point(3, 3);
this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(349, 340);
+ this.panel1.Size = new System.Drawing.Size(260, 272);
this.panel1.TabIndex = 0;
this.panel1.Text = "panel1";
//
@@ -771,26 +738,26 @@
//
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 27F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 348F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 278F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 8F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(357, 378);
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 6F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(266, 302);
this.tableLayoutPanel1.TabIndex = 0;
//
// collapseItem1
//
this.collapseItem1.Controls.Add(this.tableLayoutPanel1);
- this.collapseItem1.Location = new System.Drawing.Point(-357, -378);
- this.collapseItem1.Margin = new System.Windows.Forms.Padding(4);
+ this.collapseItem1.Expand = true;
+ this.collapseItem1.Location = new System.Drawing.Point(19, 59);
this.collapseItem1.Name = "collapseItem1";
- this.collapseItem1.Size = new System.Drawing.Size(357, 378);
+ this.collapseItem1.Size = new System.Drawing.Size(266, 302);
this.collapseItem1.TabIndex = 0;
this.collapseItem1.Text = "图像调整";
//
@@ -803,29 +770,27 @@
this.cll_panel.Items.Add(this.collapseItem2);
this.cll_panel.Items.Add(this.collapseItem3);
this.cll_panel.Location = new System.Drawing.Point(0, 0);
- this.cll_panel.Margin = new System.Windows.Forms.Padding(4);
this.cll_panel.Name = "cll_panel";
- this.cll_panel.Size = new System.Drawing.Size(405, 619);
+ this.cll_panel.Size = new System.Drawing.Size(304, 495);
this.cll_panel.TabIndex = 1;
this.cll_panel.Text = "fed";
//
// collapseItem3
//
this.collapseItem3.Controls.Add(this.tableLayoutPanel4);
- this.collapseItem3.Location = new System.Drawing.Point(-357, -206);
- this.collapseItem3.Margin = new System.Windows.Forms.Padding(4);
+ this.collapseItem3.Location = new System.Drawing.Point(-268, -165);
this.collapseItem3.Name = "collapseItem3";
- this.collapseItem3.Size = new System.Drawing.Size(357, 206);
+ this.collapseItem3.Size = new System.Drawing.Size(268, 165);
this.collapseItem3.TabIndex = 2;
this.collapseItem3.Text = "标签工具";
//
// tableLayoutPanel4
//
this.tableLayoutPanel4.ColumnCount = 5;
- this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel4.Controls.Add(this.panel4, 0, 1);
this.tableLayoutPanel4.Controls.Add(this.ava_textbox, 0, 0);
@@ -834,11 +799,11 @@
this.tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
this.tableLayoutPanel4.RowCount = 3;
- this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 42F));
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F));
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
- this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
- this.tableLayoutPanel4.Size = new System.Drawing.Size(357, 206);
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel4.Size = new System.Drawing.Size(268, 165);
this.tableLayoutPanel4.TabIndex = 1;
//
// panel4
@@ -848,10 +813,9 @@
this.panel4.Controls.Add(this.foxLabel12);
this.panel4.Controls.Add(this.foxLabel15);
this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel4.Location = new System.Drawing.Point(4, 46);
- this.panel4.Margin = new System.Windows.Forms.Padding(4);
+ this.panel4.Location = new System.Drawing.Point(3, 37);
this.panel4.Name = "panel4";
- this.panel4.Size = new System.Drawing.Size(349, 131);
+ this.panel4.Size = new System.Drawing.Size(262, 105);
this.panel4.TabIndex = 15;
this.panel4.Text = "panel4";
//
@@ -866,10 +830,9 @@
this.dtb_textbox.ColorE = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.dtb_textbox.ColorF = System.Drawing.Color.Black;
this.dtb_textbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
- this.dtb_textbox.Location = new System.Drawing.Point(68, 4);
- this.dtb_textbox.Margin = new System.Windows.Forms.Padding(4);
+ this.dtb_textbox.Location = new System.Drawing.Point(51, 3);
this.dtb_textbox.Name = "dtb_textbox";
- this.dtb_textbox.Size = new System.Drawing.Size(106, 25);
+ this.dtb_textbox.Size = new System.Drawing.Size(80, 21);
this.dtb_textbox.TabIndex = 8;
this.dtb_textbox.Text = "10";
//
@@ -878,10 +841,9 @@
this.foxLabel12.BackColor = System.Drawing.Color.Transparent;
this.foxLabel12.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.foxLabel12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel12.Location = new System.Drawing.Point(1, 126);
- this.foxLabel12.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel12.Location = new System.Drawing.Point(1, 101);
this.foxLabel12.Name = "foxLabel12";
- this.foxLabel12.Size = new System.Drawing.Size(297, 24);
+ this.foxLabel12.Size = new System.Drawing.Size(223, 19);
this.foxLabel12.TabIndex = 7;
//
// foxLabel15
@@ -889,10 +851,9 @@
this.foxLabel15.BackColor = System.Drawing.Color.Transparent;
this.foxLabel15.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.foxLabel15.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(88)))), ((int)(((byte)(100)))));
- this.foxLabel15.Location = new System.Drawing.Point(4, 4);
- this.foxLabel15.Margin = new System.Windows.Forms.Padding(4);
+ this.foxLabel15.Location = new System.Drawing.Point(3, 3);
this.foxLabel15.Name = "foxLabel15";
- this.foxLabel15.Size = new System.Drawing.Size(79, 24);
+ this.foxLabel15.Size = new System.Drawing.Size(59, 19);
this.foxLabel15.TabIndex = 0;
this.foxLabel15.Text = "value=";
//
@@ -902,21 +863,20 @@
this.ava_textbox.Dock = System.Windows.Forms.DockStyle.Fill;
this.ava_textbox.Image = global::PBAnaly.Properties.Resources.文本;
this.ava_textbox.ImageFit = AntdUI.TFit.Contain;
- this.ava_textbox.Location = new System.Drawing.Point(4, 4);
- this.ava_textbox.Margin = new System.Windows.Forms.Padding(4);
+ this.ava_textbox.Location = new System.Drawing.Point(3, 3);
this.ava_textbox.Name = "ava_textbox";
- this.ava_textbox.Size = new System.Drawing.Size(37, 34);
+ this.ava_textbox.Size = new System.Drawing.Size(28, 28);
this.ava_textbox.TabIndex = 0;
this.ava_textbox.Text = "a";
//
// BioanayImagePaletteForm
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(405, 619);
+ this.ClientSize = new System.Drawing.Size(304, 495);
this.Controls.Add(this.cll_panel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.Name = "BioanayImagePaletteForm";
this.Text = "BioanayImagePaletteForm";
this.tableLayoutPanel3.ResumeLayout(false);
diff --git a/src/PBAnaly/UI/LaneLineChartForm.Designer.cs b/src/PBAnaly/UI/LaneLineChartForm.Designer.cs
new file mode 100644
index 0000000..87e9722
--- /dev/null
+++ b/src/PBAnaly/UI/LaneLineChartForm.Designer.cs
@@ -0,0 +1,110 @@
+namespace PBAnaly.UI
+{
+ partial class LaneLineChartForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.选项ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.单一泳道ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.显示多个泳道ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.显示所有泳道ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // menuStrip1
+ //
+ this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.文件ToolStripMenuItem,
+ this.选项ToolStripMenuItem});
+ this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Size = new System.Drawing.Size(728, 25);
+ this.menuStrip1.TabIndex = 0;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // 文件ToolStripMenuItem
+ //
+ this.文件ToolStripMenuItem.Name = "文件ToolStripMenuItem";
+ this.文件ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
+ this.文件ToolStripMenuItem.Text = "文件";
+ //
+ // 选项ToolStripMenuItem
+ //
+ this.选项ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.单一泳道ToolStripMenuItem,
+ this.显示多个泳道ToolStripMenuItem,
+ this.显示所有泳道ToolStripMenuItem});
+ this.选项ToolStripMenuItem.Name = "选项ToolStripMenuItem";
+ this.选项ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
+ this.选项ToolStripMenuItem.Text = "选项";
+ //
+ // 单一泳道ToolStripMenuItem
+ //
+ this.单一泳道ToolStripMenuItem.Name = "单一泳道ToolStripMenuItem";
+ this.单一泳道ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+ this.单一泳道ToolStripMenuItem.Text = "显示单一泳道";
+ //
+ // 显示多个泳道ToolStripMenuItem
+ //
+ this.显示多个泳道ToolStripMenuItem.Name = "显示多个泳道ToolStripMenuItem";
+ this.显示多个泳道ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+ this.显示多个泳道ToolStripMenuItem.Text = "显示多个泳道";
+ //
+ // 显示所有泳道ToolStripMenuItem
+ //
+ this.显示所有泳道ToolStripMenuItem.Name = "显示所有泳道ToolStripMenuItem";
+ this.显示所有泳道ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+ this.显示所有泳道ToolStripMenuItem.Text = "显示所有泳道";
+ //
+ // LaneLineChartForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(728, 394);
+ this.Controls.Add(this.menuStrip1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Name = "LaneLineChartForm";
+ this.Text = "泳道轮廓";
+ this.menuStrip1.ResumeLayout(false);
+ this.menuStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem 文件ToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem 选项ToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem 单一泳道ToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem 显示多个泳道ToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem 显示所有泳道ToolStripMenuItem;
+ }
+}
\ No newline at end of file
diff --git a/src/PBAnaly/UI/LaneLineChartForm.cs b/src/PBAnaly/UI/LaneLineChartForm.cs
new file mode 100644
index 0000000..abe9595
--- /dev/null
+++ b/src/PBAnaly/UI/LaneLineChartForm.cs
@@ -0,0 +1,24 @@
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace PBAnaly.UI
+{
+ public partial class LaneLineChartForm : Form
+ {
+
+ public LaneLineChartForm()
+ {
+ InitializeComponent();
+
+
+ }
+ }
+}
diff --git a/src/PBAnaly/UI/LaneLineChartForm.resx b/src/PBAnaly/UI/LaneLineChartForm.resx
new file mode 100644
index 0000000..d5494e3
--- /dev/null
+++ b/src/PBAnaly/UI/LaneLineChartForm.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/src/PBAnaly/UI/LanesImagePaletteForm.Designer.cs b/src/PBAnaly/UI/LanesImagePaletteForm.Designer.cs
index d63db06..914f13a 100644
--- a/src/PBAnaly/UI/LanesImagePaletteForm.Designer.cs
+++ b/src/PBAnaly/UI/LanesImagePaletteForm.Designer.cs
@@ -31,24 +31,25 @@
this.collapse1 = new AntdUI.Collapse();
this.clasi_lanes = new AntdUI.CollapseItem();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.clasi_init = new AntdUI.CollapseItem();
- this.materialButton1 = new MaterialSkin.Controls.MaterialButton();
- this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
- this.materialCheckbox1 = new MaterialSkin.Controls.MaterialCheckbox();
+ this.mb_findLanes = new MaterialSkin.Controls.MaterialButton();
this.materialButton2 = new MaterialSkin.Controls.MaterialButton();
this.materialButton3 = new MaterialSkin.Controls.MaterialButton();
this.materialButton4 = new MaterialSkin.Controls.MaterialButton();
+ this.panel1 = new AntdUI.Panel();
+ this.label1 = new AntdUI.Label();
+ this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
+ this.checkbox1 = new AntdUI.Checkbox();
+ this.clasi_init = new AntdUI.CollapseItem();
+ this.materialCheckbox1 = new MaterialSkin.Controls.MaterialCheckbox();
this.clasi_strips = new AntdUI.CollapseItem();
this.clasi_conformity = new AntdUI.CollapseItem();
- this.panel1 = new AntdUI.Panel();
- this.checkbox1 = new AntdUI.Checkbox();
- this.label1 = new AntdUI.Label();
+ this.checkbox2 = new AntdUI.Checkbox();
this.collapse1.SuspendLayout();
this.clasi_lanes.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
- this.clasi_init.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
+ this.clasi_init.SuspendLayout();
this.SuspendLayout();
//
// collapse1
@@ -65,8 +66,9 @@
this.collapse1.Items.Add(this.clasi_strips);
this.collapse1.Items.Add(this.clasi_conformity);
this.collapse1.Location = new System.Drawing.Point(0, 0);
+ this.collapse1.Margin = new System.Windows.Forms.Padding(2);
this.collapse1.Name = "collapse1";
- this.collapse1.Size = new System.Drawing.Size(405, 619);
+ this.collapse1.Size = new System.Drawing.Size(304, 495);
this.collapse1.TabIndex = 0;
this.collapse1.Text = "collapse1";
//
@@ -74,90 +76,59 @@
//
this.clasi_lanes.Controls.Add(this.tableLayoutPanel1);
this.clasi_lanes.Expand = true;
- this.clasi_lanes.Location = new System.Drawing.Point(23, 72);
+ this.clasi_lanes.Location = new System.Drawing.Point(18, 58);
+ this.clasi_lanes.Margin = new System.Windows.Forms.Padding(2);
this.clasi_lanes.Name = "clasi_lanes";
- this.clasi_lanes.Size = new System.Drawing.Size(359, 219);
+ this.clasi_lanes.Size = new System.Drawing.Size(268, 175);
this.clasi_lanes.TabIndex = 0;
this.clasi_lanes.Text = "泳道";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 6;
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 110F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 82F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 72F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 15F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 10F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 30F));
- this.tableLayoutPanel1.Controls.Add(this.materialButton1, 0, 0);
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 54F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 11F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 8F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 22F));
+ this.tableLayoutPanel1.Controls.Add(this.mb_findLanes, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.materialButton2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.materialButton3, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.materialButton4, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.panel1, 1, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 5;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(359, 219);
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(268, 175);
this.tableLayoutPanel1.TabIndex = 0;
//
- // clasi_init
+ // mb_findLanes
//
- this.clasi_init.Controls.Add(this.materialCheckbox1);
- this.clasi_init.Expand = true;
- this.clasi_init.Location = new System.Drawing.Point(23, 380);
- this.clasi_init.Name = "clasi_init";
- this.clasi_init.Size = new System.Drawing.Size(359, 202);
- this.clasi_init.TabIndex = 1;
- this.clasi_init.Text = "初始井";
- //
- // materialButton1
- //
- this.materialButton1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.materialButton1.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
- this.materialButton1.Depth = 0;
- this.materialButton1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.materialButton1.HighEmphasis = true;
- this.materialButton1.Icon = null;
- this.materialButton1.Location = new System.Drawing.Point(4, 6);
- this.materialButton1.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
- this.materialButton1.MouseState = MaterialSkin.MouseState.HOVER;
- this.materialButton1.Name = "materialButton1";
- this.materialButton1.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton1.Size = new System.Drawing.Size(102, 33);
- this.materialButton1.TabIndex = 0;
- this.materialButton1.Text = "查找泳道";
- this.materialButton1.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
- this.materialButton1.UseAccentColor = false;
- this.materialButton1.UseVisualStyleBackColor = true;
- //
- // numericUpDown1
- //
- this.numericUpDown1.Location = new System.Drawing.Point(108, 85);
- this.numericUpDown1.Name = "numericUpDown1";
- this.numericUpDown1.Size = new System.Drawing.Size(76, 25);
- this.numericUpDown1.TabIndex = 6;
- //
- // materialCheckbox1
- //
- this.materialCheckbox1.AutoSize = true;
- this.materialCheckbox1.Depth = 0;
- this.materialCheckbox1.Location = new System.Drawing.Point(160, 39);
- this.materialCheckbox1.Margin = new System.Windows.Forms.Padding(0);
- this.materialCheckbox1.MouseLocation = new System.Drawing.Point(-1, -1);
- this.materialCheckbox1.MouseState = MaterialSkin.MouseState.HOVER;
- this.materialCheckbox1.Name = "materialCheckbox1";
- this.materialCheckbox1.ReadOnly = false;
- this.materialCheckbox1.Ripple = true;
- this.materialCheckbox1.Size = new System.Drawing.Size(131, 37);
- this.materialCheckbox1.TabIndex = 4;
- this.materialCheckbox1.Text = "统一泳道宽度";
- this.materialCheckbox1.UseVisualStyleBackColor = true;
+ this.mb_findLanes.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.mb_findLanes.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
+ this.mb_findLanes.Depth = 0;
+ this.mb_findLanes.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.mb_findLanes.HighEmphasis = true;
+ this.mb_findLanes.Icon = null;
+ this.mb_findLanes.Location = new System.Drawing.Point(3, 5);
+ this.mb_findLanes.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.mb_findLanes.MouseState = MaterialSkin.MouseState.HOVER;
+ this.mb_findLanes.Name = "mb_findLanes";
+ this.mb_findLanes.NoAccentTextColor = System.Drawing.Color.Empty;
+ this.mb_findLanes.Size = new System.Drawing.Size(76, 26);
+ this.mb_findLanes.TabIndex = 0;
+ this.mb_findLanes.Text = "查找泳道";
+ this.mb_findLanes.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
+ this.mb_findLanes.UseAccentColor = false;
+ this.mb_findLanes.UseVisualStyleBackColor = true;
//
// materialButton2
//
@@ -167,12 +138,12 @@
this.materialButton2.Dock = System.Windows.Forms.DockStyle.Fill;
this.materialButton2.HighEmphasis = true;
this.materialButton2.Icon = null;
- this.materialButton2.Location = new System.Drawing.Point(4, 51);
- this.materialButton2.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.materialButton2.Location = new System.Drawing.Point(3, 41);
+ this.materialButton2.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
this.materialButton2.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton2.Name = "materialButton2";
this.materialButton2.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton2.Size = new System.Drawing.Size(102, 33);
+ this.materialButton2.Size = new System.Drawing.Size(76, 26);
this.materialButton2.TabIndex = 1;
this.materialButton2.Text = "添加泳道";
this.materialButton2.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -187,12 +158,12 @@
this.materialButton3.Dock = System.Windows.Forms.DockStyle.Fill;
this.materialButton3.HighEmphasis = true;
this.materialButton3.Icon = null;
- this.materialButton3.Location = new System.Drawing.Point(4, 96);
- this.materialButton3.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.materialButton3.Location = new System.Drawing.Point(3, 77);
+ this.materialButton3.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
this.materialButton3.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton3.Name = "materialButton3";
this.materialButton3.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton3.Size = new System.Drawing.Size(102, 33);
+ this.materialButton3.Size = new System.Drawing.Size(76, 26);
this.materialButton3.TabIndex = 2;
this.materialButton3.Text = "删除泳道";
this.materialButton3.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@@ -207,84 +178,135 @@
this.materialButton4.Dock = System.Windows.Forms.DockStyle.Fill;
this.materialButton4.HighEmphasis = true;
this.materialButton4.Icon = null;
- this.materialButton4.Location = new System.Drawing.Point(4, 141);
- this.materialButton4.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.materialButton4.Location = new System.Drawing.Point(3, 113);
+ this.materialButton4.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
this.materialButton4.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton4.Name = "materialButton4";
this.materialButton4.NoAccentTextColor = System.Drawing.Color.Empty;
- this.materialButton4.Size = new System.Drawing.Size(102, 33);
+ this.materialButton4.Size = new System.Drawing.Size(76, 26);
this.materialButton4.TabIndex = 3;
this.materialButton4.Text = "弯曲泳道";
this.materialButton4.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton4.UseAccentColor = false;
this.materialButton4.UseVisualStyleBackColor = true;
//
+ // panel1
+ //
+ this.tableLayoutPanel1.SetColumnSpan(this.panel1, 4);
+ this.panel1.Controls.Add(this.checkbox2);
+ this.panel1.Controls.Add(this.label1);
+ this.panel1.Controls.Add(this.numericUpDown1);
+ this.panel1.Controls.Add(this.checkbox1);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel1.Location = new System.Drawing.Point(84, 2);
+ this.panel1.Margin = new System.Windows.Forms.Padding(2);
+ this.panel1.Name = "panel1";
+ this.tableLayoutPanel1.SetRowSpan(this.panel1, 4);
+ this.panel1.Size = new System.Drawing.Size(160, 140);
+ this.panel1.TabIndex = 4;
+ this.panel1.Text = "panel1";
+ //
+ // label1
+ //
+ this.label1.Font = new System.Drawing.Font("宋体", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label1.Location = new System.Drawing.Point(2, 40);
+ this.label1.Margin = new System.Windows.Forms.Padding(2);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(114, 25);
+ this.label1.TabIndex = 7;
+ this.label1.Text = "泳道宽度(像素)";
+ //
+ // numericUpDown1
+ //
+ this.numericUpDown1.Location = new System.Drawing.Point(2, 69);
+ this.numericUpDown1.Margin = new System.Windows.Forms.Padding(2);
+ this.numericUpDown1.Name = "numericUpDown1";
+ this.numericUpDown1.Size = new System.Drawing.Size(57, 21);
+ this.numericUpDown1.TabIndex = 6;
+ //
+ // checkbox1
+ //
+ this.checkbox1.AutoCheck = true;
+ this.checkbox1.Location = new System.Drawing.Point(2, 11);
+ this.checkbox1.Margin = new System.Windows.Forms.Padding(2);
+ this.checkbox1.Name = "checkbox1";
+ this.checkbox1.Size = new System.Drawing.Size(106, 18);
+ this.checkbox1.TabIndex = 0;
+ this.checkbox1.Text = "统一泳道宽度";
+ //
+ // clasi_init
+ //
+ this.clasi_init.Controls.Add(this.materialCheckbox1);
+ this.clasi_init.Expand = true;
+ this.clasi_init.Location = new System.Drawing.Point(18, 305);
+ this.clasi_init.Margin = new System.Windows.Forms.Padding(2);
+ this.clasi_init.Name = "clasi_init";
+ this.clasi_init.Size = new System.Drawing.Size(268, 162);
+ this.clasi_init.TabIndex = 1;
+ this.clasi_init.Text = "初始井";
+ //
+ // materialCheckbox1
+ //
+ this.materialCheckbox1.AutoSize = true;
+ this.materialCheckbox1.Depth = 0;
+ this.materialCheckbox1.Location = new System.Drawing.Point(120, 31);
+ this.materialCheckbox1.Margin = new System.Windows.Forms.Padding(0);
+ this.materialCheckbox1.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.materialCheckbox1.MouseState = MaterialSkin.MouseState.HOVER;
+ this.materialCheckbox1.Name = "materialCheckbox1";
+ this.materialCheckbox1.ReadOnly = false;
+ this.materialCheckbox1.Ripple = true;
+ this.materialCheckbox1.Size = new System.Drawing.Size(131, 37);
+ this.materialCheckbox1.TabIndex = 4;
+ this.materialCheckbox1.Text = "统一泳道宽度";
+ this.materialCheckbox1.UseVisualStyleBackColor = true;
+ //
// clasi_strips
//
- this.clasi_strips.Location = new System.Drawing.Point(-100, -60);
+ this.clasi_strips.Location = new System.Drawing.Point(-75, -48);
+ this.clasi_strips.Margin = new System.Windows.Forms.Padding(2);
this.clasi_strips.Name = "clasi_strips";
- this.clasi_strips.Size = new System.Drawing.Size(100, 60);
+ this.clasi_strips.Size = new System.Drawing.Size(75, 48);
this.clasi_strips.TabIndex = 2;
this.clasi_strips.Text = "条带";
//
// clasi_conformity
//
- this.clasi_conformity.Location = new System.Drawing.Point(-100, -60);
+ this.clasi_conformity.Location = new System.Drawing.Point(-75, -48);
+ this.clasi_conformity.Margin = new System.Windows.Forms.Padding(2);
this.clasi_conformity.Name = "clasi_conformity";
- this.clasi_conformity.Size = new System.Drawing.Size(100, 60);
+ this.clasi_conformity.Size = new System.Drawing.Size(75, 48);
this.clasi_conformity.TabIndex = 3;
this.clasi_conformity.Text = "整合";
//
- // panel1
+ // checkbox2
//
- this.tableLayoutPanel1.SetColumnSpan(this.panel1, 4);
- this.panel1.Controls.Add(this.label1);
- this.panel1.Controls.Add(this.numericUpDown1);
- this.panel1.Controls.Add(this.checkbox1);
- this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel1.Location = new System.Drawing.Point(113, 3);
- this.panel1.Name = "panel1";
- this.tableLayoutPanel1.SetRowSpan(this.panel1, 4);
- this.panel1.Size = new System.Drawing.Size(213, 174);
- this.panel1.TabIndex = 4;
- this.panel1.Text = "panel1";
- //
- // checkbox1
- //
- this.checkbox1.AutoCheck = true;
- this.checkbox1.Location = new System.Drawing.Point(3, 48);
- this.checkbox1.Name = "checkbox1";
- this.checkbox1.Size = new System.Drawing.Size(141, 23);
- this.checkbox1.TabIndex = 0;
- this.checkbox1.Text = "统一泳道宽度";
- //
- // label1
- //
- this.label1.Font = new System.Drawing.Font("宋体", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.label1.Location = new System.Drawing.Point(3, 79);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(99, 31);
- this.label1.TabIndex = 7;
- this.label1.Text = "泳道宽度(像素)";
+ this.checkbox2.AutoCheck = true;
+ this.checkbox2.Location = new System.Drawing.Point(0, 111);
+ this.checkbox2.Margin = new System.Windows.Forms.Padding(2);
+ this.checkbox2.Name = "checkbox2";
+ this.checkbox2.Size = new System.Drawing.Size(106, 18);
+ this.checkbox2.TabIndex = 8;
+ this.checkbox2.Text = "总是显示泳道";
//
// LanesImagePaletteForm
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(405, 619);
+ this.ClientSize = new System.Drawing.Size(304, 495);
this.Controls.Add(this.collapse1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "LanesImagePaletteForm";
this.Text = "BioanayImagePaletteForm";
this.collapse1.ResumeLayout(false);
this.clasi_lanes.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
+ this.panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
this.clasi_init.ResumeLayout(false);
this.clasi_init.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
- this.panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -299,12 +321,13 @@
private MaterialSkin.Controls.MaterialButton materialButton4;
private MaterialSkin.Controls.MaterialButton materialButton3;
private MaterialSkin.Controls.MaterialButton materialButton2;
- private MaterialSkin.Controls.MaterialButton materialButton1;
private System.Windows.Forms.NumericUpDown numericUpDown1;
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private AntdUI.Panel panel1;
private AntdUI.Checkbox checkbox1;
private AntdUI.Label label1;
+ public MaterialSkin.Controls.MaterialButton mb_findLanes;
+ private AntdUI.Checkbox checkbox2;
}
}
\ No newline at end of file
diff --git a/src/PBAnaly/UI/LanesImagePaletteForm.cs b/src/PBAnaly/UI/LanesImagePaletteForm.cs
index 6f17814..10c12ab 100644
--- a/src/PBAnaly/UI/LanesImagePaletteForm.cs
+++ b/src/PBAnaly/UI/LanesImagePaletteForm.cs
@@ -9,6 +9,10 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using System.Globalization;
+using System.Resources;
+using System.Threading;
+using PBAnaly.Assist;
namespace PBAnaly.UI
{
@@ -18,8 +22,56 @@ namespace PBAnaly.UI
public LanesImagePaletteForm()
{
InitializeComponent();
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
-
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
}
}
diff --git a/src/PBAnaly/UI/LanesImagePanel.Designer.cs b/src/PBAnaly/UI/LanesImagePanel.Designer.cs
index 3c7f242..20b708f 100644
--- a/src/PBAnaly/UI/LanesImagePanel.Designer.cs
+++ b/src/PBAnaly/UI/LanesImagePanel.Designer.cs
@@ -32,6 +32,8 @@
this.wdb_title = new AntdUI.WindowBar();
this.panel1 = new AntdUI.Panel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.panel2 = new AntdUI.Panel();
+ this.lb_imageIndex = new AntdUI.Label();
this.flowPanel1 = new AntdUI.FlowPanel();
this.ava_saveReport = new AntdUI.Avatar();
this.ava_save = new AntdUI.Avatar();
@@ -51,10 +53,9 @@
this.ctms_strop_copy = new System.Windows.Forms.ToolStripMenuItem();
this.ctms_strop_stickup = new System.Windows.Forms.ToolStripMenuItem();
this.ctms_strop_delete = new System.Windows.Forms.ToolStripMenuItem();
- this.lb_imageIndex = new AntdUI.Label();
- this.panel2 = new AntdUI.Panel();
this.panel1.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
+ this.panel2.SuspendLayout();
this.flowPanel1.SuspendLayout();
this.pl_bottom.SuspendLayout();
this.tlp_bottom_panel.SuspendLayout();
@@ -63,7 +64,6 @@
this.pl_bg_panel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.image_pl)).BeginInit();
this.ctms_strop.SuspendLayout();
- this.panel2.SuspendLayout();
this.SuspendLayout();
//
// wdb_title
@@ -72,12 +72,11 @@
this.wdb_title.Dock = System.Windows.Forms.DockStyle.Top;
this.wdb_title.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.wdb_title.IsMax = false;
- this.wdb_title.Location = new System.Drawing.Point(4, 4);
- this.wdb_title.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.wdb_title.Location = new System.Drawing.Point(3, 3);
this.wdb_title.MinimizeBox = false;
this.wdb_title.Name = "wdb_title";
this.wdb_title.ShowIcon = false;
- this.wdb_title.Size = new System.Drawing.Size(469, 29);
+ this.wdb_title.Size = new System.Drawing.Size(352, 23);
this.wdb_title.TabIndex = 0;
this.wdb_title.Text = " ";
this.wdb_title.UseSystemStyleColor = true;
@@ -86,43 +85,67 @@
//
this.panel1.Controls.Add(this.tableLayoutPanel1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
- this.panel1.Location = new System.Drawing.Point(4, 33);
- this.panel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.panel1.Location = new System.Drawing.Point(3, 26);
this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(469, 29);
+ this.panel1.Size = new System.Drawing.Size(352, 23);
this.panel1.TabIndex = 1;
this.panel1.Text = "panel1";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 4;
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 175F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 92F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 131F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 167F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 149F));
this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.flowPanel1, 3, 0);
- this.tableLayoutPanel1.Controls.Add(this.ava_auto, 2, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
- this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(469, 29);
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(352, 23);
this.tableLayoutPanel1.TabIndex = 0;
//
+ // panel2
+ //
+ this.panel2.Back = System.Drawing.SystemColors.Control;
+ this.panel2.Controls.Add(this.lb_imageIndex);
+ this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel2.Location = new System.Drawing.Point(0, 0);
+ this.panel2.Margin = new System.Windows.Forms.Padding(0);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(131, 23);
+ this.panel2.TabIndex = 0;
+ this.panel2.Text = "panel2";
+ //
+ // lb_imageIndex
+ //
+ this.lb_imageIndex.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.lb_imageIndex.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.lb_imageIndex.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(83)))), ((int)(((byte)(36)))));
+ this.lb_imageIndex.Location = new System.Drawing.Point(3, 0);
+ this.lb_imageIndex.Name = "lb_imageIndex";
+ this.lb_imageIndex.Size = new System.Drawing.Size(27, 23);
+ this.lb_imageIndex.TabIndex = 0;
+ this.lb_imageIndex.Text = "0";
+ this.lb_imageIndex.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
// flowPanel1
//
- this.flowPanel1.Controls.Add(this.ava_saveReport);
+ this.flowPanel1.BadgeAlign = AntdUI.TAlignFrom.TL;
this.flowPanel1.Controls.Add(this.ava_save);
+ this.flowPanel1.Controls.Add(this.ava_saveReport);
+ this.flowPanel1.Controls.Add(this.ava_auto);
this.flowPanel1.Controls.Add(this.ava_zoom_out);
this.flowPanel1.Controls.Add(this.ava__zoom_in);
this.flowPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.flowPanel1.Location = new System.Drawing.Point(302, 0);
+ this.flowPanel1.Location = new System.Drawing.Point(203, 0);
this.flowPanel1.Margin = new System.Windows.Forms.Padding(0);
this.flowPanel1.Name = "flowPanel1";
- this.flowPanel1.Size = new System.Drawing.Size(167, 29);
+ this.flowPanel1.Size = new System.Drawing.Size(149, 23);
this.flowPanel1.TabIndex = 2;
this.flowPanel1.Text = "flowPanel1";
//
@@ -131,10 +154,9 @@
this.ava_saveReport.Cursor = System.Windows.Forms.Cursors.Hand;
this.ava_saveReport.Image = global::PBAnaly.Properties.Resources.数据报告__1_;
this.ava_saveReport.ImageFit = AntdUI.TFit.Contain;
- this.ava_saveReport.Location = new System.Drawing.Point(127, 4);
- this.ava_saveReport.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.ava_saveReport.Location = new System.Drawing.Point(91, 3);
this.ava_saveReport.Name = "ava_saveReport";
- this.ava_saveReport.Size = new System.Drawing.Size(28, 21);
+ this.ava_saveReport.Size = new System.Drawing.Size(21, 17);
this.ava_saveReport.TabIndex = 7;
this.ava_saveReport.Text = "a";
//
@@ -143,10 +165,9 @@
this.ava_save.Cursor = System.Windows.Forms.Cursors.Hand;
this.ava_save.Image = global::PBAnaly.Properties.Resources.保存图片;
this.ava_save.ImageFit = AntdUI.TFit.Contain;
- this.ava_save.Location = new System.Drawing.Point(86, 4);
- this.ava_save.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.ava_save.Location = new System.Drawing.Point(118, 3);
this.ava_save.Name = "ava_save";
- this.ava_save.Size = new System.Drawing.Size(33, 21);
+ this.ava_save.Size = new System.Drawing.Size(23, 17);
this.ava_save.TabIndex = 6;
this.ava_save.Text = "a";
this.ava_save.Click += new System.EventHandler(this.ava_save_Click);
@@ -156,10 +177,9 @@
this.ava_zoom_out.Cursor = System.Windows.Forms.Cursors.Hand;
this.ava_zoom_out.Image = global::PBAnaly.Properties.Resources.缩小;
this.ava_zoom_out.ImageFit = AntdUI.TFit.Contain;
- this.ava_zoom_out.Location = new System.Drawing.Point(45, 4);
- this.ava_zoom_out.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.ava_zoom_out.Location = new System.Drawing.Point(34, 3);
this.ava_zoom_out.Name = "ava_zoom_out";
- this.ava_zoom_out.Size = new System.Drawing.Size(33, 21);
+ this.ava_zoom_out.Size = new System.Drawing.Size(25, 17);
this.ava_zoom_out.TabIndex = 5;
this.ava_zoom_out.Text = "a";
this.ava_zoom_out.Click += new System.EventHandler(this.ava_zoom_out_Click);
@@ -169,10 +189,9 @@
this.ava__zoom_in.Cursor = System.Windows.Forms.Cursors.Hand;
this.ava__zoom_in.Image = global::PBAnaly.Properties.Resources.放大;
this.ava__zoom_in.ImageFit = AntdUI.TFit.Contain;
- this.ava__zoom_in.Location = new System.Drawing.Point(4, 4);
- this.ava__zoom_in.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.ava__zoom_in.Location = new System.Drawing.Point(3, 3);
this.ava__zoom_in.Name = "ava__zoom_in";
- this.ava__zoom_in.Size = new System.Drawing.Size(33, 21);
+ this.ava__zoom_in.Size = new System.Drawing.Size(25, 17);
this.ava__zoom_in.TabIndex = 4;
this.ava__zoom_in.Text = "";
this.ava__zoom_in.Click += new System.EventHandler(this.ava__zoom_in_Click);
@@ -183,10 +202,9 @@
this.ava_auto.HandCursor = System.Windows.Forms.Cursors.IBeam;
this.ava_auto.Image = global::PBAnaly.Properties.Resources.全屏;
this.ava_auto.ImageFit = AntdUI.TFit.Contain;
- this.ava_auto.Location = new System.Drawing.Point(271, 4);
- this.ava_auto.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.ava_auto.Location = new System.Drawing.Point(65, 3);
this.ava_auto.Name = "ava_auto";
- this.ava_auto.Size = new System.Drawing.Size(27, 21);
+ this.ava_auto.Size = new System.Drawing.Size(20, 17);
this.ava_auto.TabIndex = 3;
this.ava_auto.Text = "a";
this.ava_auto.Click += new System.EventHandler(this.ava_auto_Click);
@@ -196,10 +214,9 @@
this.pl_bottom.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.pl_bottom.Controls.Add(this.tlp_bottom_panel);
this.pl_bottom.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.pl_bottom.Location = new System.Drawing.Point(4, 365);
- this.pl_bottom.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.pl_bottom.Location = new System.Drawing.Point(3, 292);
this.pl_bottom.Name = "pl_bottom";
- this.pl_bottom.Size = new System.Drawing.Size(469, 16);
+ this.pl_bottom.Size = new System.Drawing.Size(352, 13);
this.pl_bottom.TabIndex = 2;
this.pl_bottom.Text = "panel3";
//
@@ -215,11 +232,10 @@
this.tlp_bottom_panel.Controls.Add(this.lb_size, 4, 0);
this.tlp_bottom_panel.Dock = System.Windows.Forms.DockStyle.Fill;
this.tlp_bottom_panel.Location = new System.Drawing.Point(0, 0);
- this.tlp_bottom_panel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.tlp_bottom_panel.Name = "tlp_bottom_panel";
this.tlp_bottom_panel.RowCount = 1;
this.tlp_bottom_panel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tlp_bottom_panel.Size = new System.Drawing.Size(469, 16);
+ this.tlp_bottom_panel.Size = new System.Drawing.Size(352, 13);
this.tlp_bottom_panel.TabIndex = 1;
//
// lb_name
@@ -230,7 +246,7 @@
this.lb_name.Location = new System.Drawing.Point(0, 0);
this.lb_name.Margin = new System.Windows.Forms.Padding(0);
this.lb_name.Name = "lb_name";
- this.lb_name.Size = new System.Drawing.Size(465, 16);
+ this.lb_name.Size = new System.Drawing.Size(348, 13);
this.lb_name.TabIndex = 1;
this.lb_name.Text = "800x600";
//
@@ -239,10 +255,10 @@
this.lb_size.BackColor = System.Drawing.Color.Transparent;
this.lb_size.Dock = System.Windows.Forms.DockStyle.Fill;
this.lb_size.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(237)))), ((int)(((byte)(237)))), ((int)(((byte)(237)))));
- this.lb_size.Location = new System.Drawing.Point(468, 0);
+ this.lb_size.Location = new System.Drawing.Point(351, 0);
this.lb_size.Margin = new System.Windows.Forms.Padding(0);
this.lb_size.Name = "lb_size";
- this.lb_size.Size = new System.Drawing.Size(1, 16);
+ this.lb_size.Size = new System.Drawing.Size(1, 13);
this.lb_size.TabIndex = 0;
this.lb_size.Text = "800x600";
this.lb_size.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -255,12 +271,11 @@
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 2F));
this.tableLayoutPanel2.Controls.Add(this.pl_panel_image, 0, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel2.Location = new System.Drawing.Point(4, 62);
- this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 49);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 1;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel2.Size = new System.Drawing.Size(469, 303);
+ this.tableLayoutPanel2.Size = new System.Drawing.Size(352, 243);
this.tableLayoutPanel2.TabIndex = 3;
//
// pl_panel_image
@@ -275,11 +290,10 @@
this.pl_panel_image.BorderWidth = 5F;
this.pl_panel_image.Controls.Add(this.pl_bg_panel);
this.pl_panel_image.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pl_panel_image.Location = new System.Drawing.Point(4, 4);
- this.pl_panel_image.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.pl_panel_image.Location = new System.Drawing.Point(3, 3);
this.pl_panel_image.Name = "pl_panel_image";
- this.pl_panel_image.Padding = new System.Windows.Forms.Padding(7, 6, 7, 6);
- this.pl_panel_image.Size = new System.Drawing.Size(459, 295);
+ this.pl_panel_image.Padding = new System.Windows.Forms.Padding(5, 5, 5, 5);
+ this.pl_panel_image.Size = new System.Drawing.Size(344, 237);
this.pl_panel_image.TabIndex = 0;
this.pl_panel_image.Text = "panel4";
//
@@ -287,9 +301,8 @@
//
this.pl_bg_panel.Controls.Add(this.image_pl);
this.pl_bg_panel.Location = new System.Drawing.Point(0, 0);
- this.pl_bg_panel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.pl_bg_panel.Name = "pl_bg_panel";
- this.pl_bg_panel.Size = new System.Drawing.Size(297, 231);
+ this.pl_bg_panel.Size = new System.Drawing.Size(223, 185);
this.pl_bg_panel.TabIndex = 0;
this.pl_bg_panel.Text = "panel4";
//
@@ -298,9 +311,8 @@
this.image_pl.ContextMenuStrip = this.ctms_strop;
this.image_pl.Dock = System.Windows.Forms.DockStyle.Fill;
this.image_pl.Location = new System.Drawing.Point(0, 0);
- this.image_pl.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.image_pl.Name = "image_pl";
- this.image_pl.Size = new System.Drawing.Size(297, 231);
+ this.image_pl.Size = new System.Drawing.Size(223, 185);
this.image_pl.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.image_pl.TabIndex = 0;
this.image_pl.TabStop = false;
@@ -314,75 +326,49 @@
this.ctms_strop_stickup,
this.ctms_strop_delete});
this.ctms_strop.Name = "ctms_strop";
- this.ctms_strop.Size = new System.Drawing.Size(109, 82);
+ this.ctms_strop.Size = new System.Drawing.Size(101, 76);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(105, 6);
+ this.toolStripSeparator1.Size = new System.Drawing.Size(97, 6);
//
// ctms_strop_copy
//
this.ctms_strop_copy.Name = "ctms_strop_copy";
- this.ctms_strop_copy.Size = new System.Drawing.Size(108, 24);
+ this.ctms_strop_copy.Size = new System.Drawing.Size(100, 22);
this.ctms_strop_copy.Text = "复制";
//
// ctms_strop_stickup
//
this.ctms_strop_stickup.Name = "ctms_strop_stickup";
- this.ctms_strop_stickup.Size = new System.Drawing.Size(108, 24);
+ this.ctms_strop_stickup.Size = new System.Drawing.Size(100, 22);
this.ctms_strop_stickup.Text = "粘贴";
//
// ctms_strop_delete
//
this.ctms_strop_delete.Name = "ctms_strop_delete";
- this.ctms_strop_delete.Size = new System.Drawing.Size(108, 24);
+ this.ctms_strop_delete.Size = new System.Drawing.Size(100, 22);
this.ctms_strop_delete.Text = "删除";
//
- // lb_imageIndex
- //
- this.lb_imageIndex.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)));
- this.lb_imageIndex.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.lb_imageIndex.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(83)))), ((int)(((byte)(36)))));
- this.lb_imageIndex.Location = new System.Drawing.Point(4, 0);
- this.lb_imageIndex.Margin = new System.Windows.Forms.Padding(4);
- this.lb_imageIndex.Name = "lb_imageIndex";
- this.lb_imageIndex.Size = new System.Drawing.Size(36, 29);
- this.lb_imageIndex.TabIndex = 0;
- this.lb_imageIndex.Text = "0";
- this.lb_imageIndex.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // panel2
- //
- this.panel2.Back = System.Drawing.SystemColors.Control;
- this.panel2.Controls.Add(this.lb_imageIndex);
- this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel2.Location = new System.Drawing.Point(0, 0);
- this.panel2.Margin = new System.Windows.Forms.Padding(0);
- this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(175, 29);
- this.panel2.TabIndex = 0;
- this.panel2.Text = "panel2";
- //
// LanesImagePanel
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(477, 385);
+ this.ClientSize = new System.Drawing.Size(358, 308);
this.Controls.Add(this.tableLayoutPanel2);
this.Controls.Add(this.pl_bottom);
this.Controls.Add(this.panel1);
this.Controls.Add(this.wdb_title);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.Name = "LanesImagePanel";
- this.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.Padding = new System.Windows.Forms.Padding(3, 3, 3, 3);
this.Text = "BioanalyImagePanel";
this.SizeChanged += new System.EventHandler(this.BioanalyImagePanel_SizeChanged);
this.MouseEnter += new System.EventHandler(this.BioanalyImagePanel_MouseEnter);
this.panel1.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
+ this.panel2.ResumeLayout(false);
this.flowPanel1.ResumeLayout(false);
this.pl_bottom.ResumeLayout(false);
this.tlp_bottom_panel.ResumeLayout(false);
@@ -391,7 +377,6 @@
this.pl_bg_panel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.image_pl)).EndInit();
this.ctms_strop.ResumeLayout(false);
- this.panel2.ResumeLayout(false);
this.ResumeLayout(false);
}
diff --git a/src/PBAnaly/UI/MultiImageForm.Designer.cs b/src/PBAnaly/UI/MultiImageForm.Designer.cs
index 979d963..da195df 100644
--- a/src/PBAnaly/UI/MultiImageForm.Designer.cs
+++ b/src/PBAnaly/UI/MultiImageForm.Designer.cs
@@ -28,7 +28,7 @@
///
private void InitializeComponent()
{
- this.label1 = new AntdUI.Label();
+ this.label_path = new AntdUI.Label();
this.pb_image = new System.Windows.Forms.PictureBox();
this.ab_one = new ReaLTaiizor.Controls.AirButton();
this.ab_last = new ReaLTaiizor.Controls.AirButton();
@@ -42,19 +42,21 @@
((System.ComponentModel.ISupportInitialize)(this.pb_image)).BeginInit();
this.SuspendLayout();
//
- // label1
+ // label_path
//
- this.label1.Location = new System.Drawing.Point(12, 12);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(75, 23);
- this.label1.TabIndex = 0;
- this.label1.Text = "路径:";
+ this.label_path.Location = new System.Drawing.Point(9, 10);
+ this.label_path.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.label_path.Name = "label_path";
+ this.label_path.Size = new System.Drawing.Size(56, 18);
+ this.label_path.TabIndex = 0;
+ this.label_path.Text = "路径:";
//
// pb_image
//
- this.pb_image.Location = new System.Drawing.Point(24, 67);
+ this.pb_image.Location = new System.Drawing.Point(18, 54);
+ this.pb_image.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.pb_image.Name = "pb_image";
- this.pb_image.Size = new System.Drawing.Size(752, 447);
+ this.pb_image.Size = new System.Drawing.Size(564, 358);
this.pb_image.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pb_image.TabIndex = 2;
this.pb_image.TabStop = false;
@@ -65,10 +67,11 @@
this.ab_one.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_one.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_one.Image = null;
- this.ab_one.Location = new System.Drawing.Point(24, 530);
+ this.ab_one.Location = new System.Drawing.Point(18, 424);
+ this.ab_one.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_one.Name = "ab_one";
this.ab_one.NoRounding = false;
- this.ab_one.Size = new System.Drawing.Size(81, 40);
+ this.ab_one.Size = new System.Drawing.Size(61, 32);
this.ab_one.TabIndex = 3;
this.ab_one.Text = "第一幅";
this.ab_one.Transparent = false;
@@ -80,10 +83,11 @@
this.ab_last.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_last.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_last.Image = null;
- this.ab_last.Location = new System.Drawing.Point(142, 530);
+ this.ab_last.Location = new System.Drawing.Point(106, 424);
+ this.ab_last.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_last.Name = "ab_last";
this.ab_last.NoRounding = false;
- this.ab_last.Size = new System.Drawing.Size(81, 40);
+ this.ab_last.Size = new System.Drawing.Size(61, 32);
this.ab_last.TabIndex = 4;
this.ab_last.Text = "上一幅";
this.ab_last.Transparent = false;
@@ -95,10 +99,11 @@
this.ab_next.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_next.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_next.Image = null;
- this.ab_next.Location = new System.Drawing.Point(337, 530);
+ this.ab_next.Location = new System.Drawing.Point(253, 424);
+ this.ab_next.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_next.Name = "ab_next";
this.ab_next.NoRounding = false;
- this.ab_next.Size = new System.Drawing.Size(81, 40);
+ this.ab_next.Size = new System.Drawing.Size(61, 32);
this.ab_next.TabIndex = 5;
this.ab_next.Text = "下一幅";
this.ab_next.Transparent = false;
@@ -110,10 +115,11 @@
this.ab_atLast.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_atLast.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_atLast.Image = null;
- this.ab_atLast.Location = new System.Drawing.Point(445, 530);
+ this.ab_atLast.Location = new System.Drawing.Point(334, 424);
+ this.ab_atLast.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_atLast.Name = "ab_atLast";
this.ab_atLast.NoRounding = false;
- this.ab_atLast.Size = new System.Drawing.Size(81, 40);
+ this.ab_atLast.Size = new System.Drawing.Size(61, 32);
this.ab_atLast.TabIndex = 6;
this.ab_atLast.Text = "最后";
this.ab_atLast.Transparent = false;
@@ -121,9 +127,10 @@
//
// lb_lable
//
- this.lb_lable.Location = new System.Drawing.Point(257, 530);
+ this.lb_lable.Location = new System.Drawing.Point(193, 424);
+ this.lb_lable.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.lb_lable.Name = "lb_lable";
- this.lb_lable.Size = new System.Drawing.Size(64, 42);
+ this.lb_lable.Size = new System.Drawing.Size(48, 34);
this.lb_lable.TabIndex = 7;
this.lb_lable.Text = "0/0";
//
@@ -133,10 +140,11 @@
this.ab_saveTif.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_saveTif.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_saveTif.Image = null;
- this.ab_saveTif.Location = new System.Drawing.Point(355, 590);
+ this.ab_saveTif.Location = new System.Drawing.Point(266, 472);
+ this.ab_saveTif.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_saveTif.Name = "ab_saveTif";
this.ab_saveTif.NoRounding = false;
- this.ab_saveTif.Size = new System.Drawing.Size(123, 40);
+ this.ab_saveTif.Size = new System.Drawing.Size(92, 32);
this.ab_saveTif.TabIndex = 8;
this.ab_saveTif.Text = "另存为单帧TIF";
this.ab_saveTif.Transparent = false;
@@ -148,10 +156,11 @@
this.ab_close.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_close.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_close.Image = null;
- this.ab_close.Location = new System.Drawing.Point(511, 590);
+ this.ab_close.Location = new System.Drawing.Point(383, 472);
+ this.ab_close.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_close.Name = "ab_close";
this.ab_close.NoRounding = false;
- this.ab_close.Size = new System.Drawing.Size(123, 40);
+ this.ab_close.Size = new System.Drawing.Size(92, 32);
this.ab_close.TabIndex = 9;
this.ab_close.Text = "关闭";
this.ab_close.Transparent = false;
@@ -163,10 +172,11 @@
this.ab_open_cur_tif.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_open_cur_tif.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_open_cur_tif.Image = null;
- this.ab_open_cur_tif.Location = new System.Drawing.Point(665, 590);
+ this.ab_open_cur_tif.Location = new System.Drawing.Point(499, 472);
+ this.ab_open_cur_tif.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_open_cur_tif.Name = "ab_open_cur_tif";
this.ab_open_cur_tif.NoRounding = false;
- this.ab_open_cur_tif.Size = new System.Drawing.Size(123, 40);
+ this.ab_open_cur_tif.Size = new System.Drawing.Size(92, 32);
this.ab_open_cur_tif.TabIndex = 10;
this.ab_open_cur_tif.Text = "打开当前帧";
this.ab_open_cur_tif.Transparent = false;
@@ -176,17 +186,18 @@
//
this.cb_path.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_path.FormattingEnabled = true;
- this.cb_path.Location = new System.Drawing.Point(93, 12);
+ this.cb_path.Location = new System.Drawing.Point(70, 10);
+ this.cb_path.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.cb_path.Name = "cb_path";
- this.cb_path.Size = new System.Drawing.Size(632, 23);
+ this.cb_path.Size = new System.Drawing.Size(475, 20);
this.cb_path.TabIndex = 11;
//
// MultiImageForm
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.LightGray;
- this.ClientSize = new System.Drawing.Size(818, 642);
+ this.ClientSize = new System.Drawing.Size(614, 514);
this.Controls.Add(this.cb_path);
this.Controls.Add(this.ab_open_cur_tif);
this.Controls.Add(this.ab_close);
@@ -197,8 +208,9 @@
this.Controls.Add(this.ab_last);
this.Controls.Add(this.ab_one);
this.Controls.Add(this.pb_image);
- this.Controls.Add(this.label1);
+ this.Controls.Add(this.label_path);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+ this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.Name = "MultiImageForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "序列图像管理";
@@ -210,7 +222,7 @@
#endregion
- private AntdUI.Label label1;
+ private AntdUI.Label label_path;
private System.Windows.Forms.PictureBox pb_image;
private ReaLTaiizor.Controls.AirButton ab_one;
private ReaLTaiizor.Controls.AirButton ab_last;
diff --git a/src/PBAnaly/UI/MultiImageForm.cs b/src/PBAnaly/UI/MultiImageForm.cs
index f8df66b..64678e3 100644
--- a/src/PBAnaly/UI/MultiImageForm.cs
+++ b/src/PBAnaly/UI/MultiImageForm.cs
@@ -1,12 +1,16 @@
using AntdUI;
using ImageMagick;
using OpenCvSharp.Flann;
+using PBAnaly.Assist;
using PBAnaly.Module;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
+using System.Resources;
+using System.Threading;
using System.Windows.Forms;
namespace PBAnaly.UI
@@ -24,7 +28,60 @@ namespace PBAnaly.UI
cb_path.Items.Add(path);
cb_path.SelectedIndex = 0;
ReadTiff();
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
+
+
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
+
+
private void ReadTiff()
{
imageList.Clear();
diff --git a/src/PBAnaly/UI/SizeForm.cs b/src/PBAnaly/UI/SizeForm.cs
index cde08d0..dffae20 100644
--- a/src/PBAnaly/UI/SizeForm.cs
+++ b/src/PBAnaly/UI/SizeForm.cs
@@ -1,10 +1,14 @@
-using System;
+using PBAnaly.Assist;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -21,6 +25,16 @@ namespace PBAnaly.UI
private void btn_ok_Click(object sender, EventArgs e)
{
+ string msg = "";
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ msg = "行值不小于列数";
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
row = int.Parse(btb_row.Text);
col = int.Parse(btb_col.Text);
@@ -37,5 +51,46 @@ namespace PBAnaly.UI
{
this.DialogResult = DialogResult.Cancel;
}
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
+
}
}
diff --git a/src/PBAnaly/UI/SystemSettingForm.Designer.cs b/src/PBAnaly/UI/SystemSettingForm.Designer.cs
index 95fe6db..085d09d 100644
--- a/src/PBAnaly/UI/SystemSettingForm.Designer.cs
+++ b/src/PBAnaly/UI/SystemSettingForm.Designer.cs
@@ -29,19 +29,28 @@
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
- this.panel_mode = new System.Windows.Forms.Panel();
- this.tabMain = new System.Windows.Forms.TabControl();
- this.tab_UserManage = new System.Windows.Forms.TabPage();
- this.pnlMainMenu = new System.Windows.Forms.Panel();
+ this.tab_Main = new System.Windows.Forms.TabControl();
+ this.tab_UserManage1 = new System.Windows.Forms.TabPage();
this.label4 = new System.Windows.Forms.Label();
this.btn_Min = new System.Windows.Forms.Button();
this.btn_Max = new System.Windows.Forms.Button();
this.btn_Close = new System.Windows.Forms.Button();
- this.btn_ReadManage = new System.Windows.Forms.Button();
+ this.pnl_MainMenu = new System.Windows.Forms.Panel();
+ this.btn_SystemSetting = new System.Windows.Forms.Button();
+ this.btn_UserManager = new System.Windows.Forms.Button();
+ this.panel4 = new System.Windows.Forms.Panel();
+ this.tab_SystemSetting = new System.Windows.Forms.TabPage();
+ this.panel_System = new System.Windows.Forms.Panel();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.cbx_System_Language = new System.Windows.Forms.ComboBox();
+ this.label_Language = new System.Windows.Forms.Label();
+ this.btn_save_ZH_US = new System.Windows.Forms.Button();
this.panel1.SuspendLayout();
- this.panel_mode.SuspendLayout();
- this.tabMain.SuspendLayout();
- this.pnlMainMenu.SuspendLayout();
+ this.tab_Main.SuspendLayout();
+ this.pnl_MainMenu.SuspendLayout();
+ this.tab_SystemSetting.SuspendLayout();
+ this.panel_System.SuspendLayout();
+ this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel1
@@ -50,58 +59,35 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
- this.panel1.Controls.Add(this.panel_mode);
- this.panel1.Controls.Add(this.pnlMainMenu);
+ this.panel1.Controls.Add(this.tab_Main);
+ this.panel1.Controls.Add(this.pnl_MainMenu);
this.panel1.Location = new System.Drawing.Point(-1, 31);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1159, 642);
this.panel1.TabIndex = 455;
//
- // panel_mode
+ // tab_Main
//
- this.panel_mode.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.panel_mode.BackColor = System.Drawing.SystemColors.Control;
- this.panel_mode.Controls.Add(this.tabMain);
- this.panel_mode.Location = new System.Drawing.Point(59, 0);
- this.panel_mode.Name = "panel_mode";
- this.panel_mode.Size = new System.Drawing.Size(1098, 639);
- this.panel_mode.TabIndex = 444;
+ this.tab_Main.Alignment = System.Windows.Forms.TabAlignment.Left;
+ this.tab_Main.Controls.Add(this.tab_SystemSetting);
+ this.tab_Main.Controls.Add(this.tab_UserManage1);
+ this.tab_Main.Location = new System.Drawing.Point(174, 3);
+ this.tab_Main.Multiline = true;
+ this.tab_Main.Name = "tab_Main";
+ this.tab_Main.SelectedIndex = 0;
+ this.tab_Main.Size = new System.Drawing.Size(982, 636);
+ this.tab_Main.TabIndex = 0;
//
- // tabMain
+ // tab_UserManage1
//
- this.tabMain.Alignment = System.Windows.Forms.TabAlignment.Left;
- this.tabMain.Controls.Add(this.tab_UserManage);
- this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tabMain.Location = new System.Drawing.Point(0, 0);
- this.tabMain.Multiline = true;
- this.tabMain.Name = "tabMain";
- this.tabMain.SelectedIndex = 0;
- this.tabMain.Size = new System.Drawing.Size(1098, 639);
- this.tabMain.TabIndex = 0;
- //
- // tab_UserManage
- //
- this.tab_UserManage.BackColor = System.Drawing.Color.White;
- this.tab_UserManage.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.tab_UserManage.Location = new System.Drawing.Point(22, 4);
- this.tab_UserManage.Name = "tab_UserManage";
- this.tab_UserManage.Padding = new System.Windows.Forms.Padding(3);
- this.tab_UserManage.Size = new System.Drawing.Size(1072, 631);
- this.tab_UserManage.TabIndex = 0;
- this.tab_UserManage.Text = "用户管理";
- //
- // pnlMainMenu
- //
- this.pnlMainMenu.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)));
- this.pnlMainMenu.BackColor = System.Drawing.Color.White;
- this.pnlMainMenu.Controls.Add(this.btn_ReadManage);
- this.pnlMainMenu.Location = new System.Drawing.Point(3, -3);
- this.pnlMainMenu.Name = "pnlMainMenu";
- this.pnlMainMenu.Size = new System.Drawing.Size(77, 642);
- this.pnlMainMenu.TabIndex = 443;
+ this.tab_UserManage1.BackColor = System.Drawing.Color.White;
+ this.tab_UserManage1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.tab_UserManage1.Location = new System.Drawing.Point(22, 4);
+ this.tab_UserManage1.Name = "tab_UserManage1";
+ this.tab_UserManage1.Padding = new System.Windows.Forms.Padding(3);
+ this.tab_UserManage1.Size = new System.Drawing.Size(956, 628);
+ this.tab_UserManage1.TabIndex = 0;
+ this.tab_UserManage1.Text = "用户管理";
//
// label4
//
@@ -110,9 +96,9 @@
this.label4.ForeColor = System.Drawing.Color.White;
this.label4.Location = new System.Drawing.Point(12, 3);
this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(81, 25);
+ this.label4.Size = new System.Drawing.Size(77, 25);
this.label4.TabIndex = 456;
- this.label4.Text = "register";
+ this.label4.Text = "System";
//
// btn_Min
//
@@ -159,18 +145,128 @@
this.btn_Close.UseVisualStyleBackColor = false;
this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
//
- // btn_ReadManage
+ // pnl_MainMenu
//
- this.btn_ReadManage.BackColor = System.Drawing.Color.White;
- this.btn_ReadManage.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_ReadManage.Font = new System.Drawing.Font("宋体", 9F);
- this.btn_ReadManage.Image = global::PBAnaly.Properties.Resources.登录_亮;
- this.btn_ReadManage.Location = new System.Drawing.Point(2, 3);
- this.btn_ReadManage.Name = "btn_ReadManage";
- this.btn_ReadManage.Size = new System.Drawing.Size(75, 86);
- this.btn_ReadManage.TabIndex = 3;
- this.btn_ReadManage.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
- this.btn_ReadManage.UseVisualStyleBackColor = false;
+ this.pnl_MainMenu.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.pnl_MainMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+ this.pnl_MainMenu.Controls.Add(this.btn_SystemSetting);
+ this.pnl_MainMenu.Controls.Add(this.btn_UserManager);
+ this.pnl_MainMenu.Controls.Add(this.panel4);
+ this.pnl_MainMenu.Location = new System.Drawing.Point(5, 3);
+ this.pnl_MainMenu.Name = "pnl_MainMenu";
+ this.pnl_MainMenu.Size = new System.Drawing.Size(191, 636);
+ this.pnl_MainMenu.TabIndex = 445;
+ //
+ // btn_SystemSetting
+ //
+ this.btn_SystemSetting.BackColor = System.Drawing.SystemColors.Control;
+ this.btn_SystemSetting.FlatAppearance.BorderColor = System.Drawing.Color.Gold;
+ this.btn_SystemSetting.FlatAppearance.MouseDownBackColor = System.Drawing.Color.MediumAquamarine;
+ this.btn_SystemSetting.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_SystemSetting.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Bold);
+ this.btn_SystemSetting.Location = new System.Drawing.Point(1, 0);
+ this.btn_SystemSetting.Name = "btn_SystemSetting";
+ this.btn_SystemSetting.Size = new System.Drawing.Size(184, 50);
+ this.btn_SystemSetting.TabIndex = 1;
+ this.btn_SystemSetting.Text = "系统设置";
+ this.btn_SystemSetting.UseVisualStyleBackColor = false;
+ this.btn_SystemSetting.Click += new System.EventHandler(this.btn_SystemSetting_Click);
+ //
+ // btn_UserManager
+ //
+ this.btn_UserManager.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(56)))), ((int)(((byte)(83)))));
+ this.btn_UserManager.FlatAppearance.BorderColor = System.Drawing.Color.Gold;
+ this.btn_UserManager.FlatAppearance.MouseDownBackColor = System.Drawing.Color.MediumAquamarine;
+ this.btn_UserManager.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_UserManager.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Bold);
+ this.btn_UserManager.ForeColor = System.Drawing.Color.White;
+ this.btn_UserManager.Location = new System.Drawing.Point(1, 49);
+ this.btn_UserManager.Name = "btn_UserManager";
+ this.btn_UserManager.Size = new System.Drawing.Size(184, 50);
+ this.btn_UserManager.TabIndex = 0;
+ this.btn_UserManager.Text = "用户管理";
+ this.btn_UserManager.UseVisualStyleBackColor = false;
+ this.btn_UserManager.Click += new System.EventHandler(this.btn_UserManager_Click);
+ //
+ // panel4
+ //
+ this.panel4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.panel4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(56)))), ((int)(((byte)(83)))));
+ this.panel4.Location = new System.Drawing.Point(185, 0);
+ this.panel4.Name = "panel4";
+ this.panel4.Size = new System.Drawing.Size(3, 636);
+ this.panel4.TabIndex = 7;
+ //
+ // tab_SystemSetting
+ //
+ this.tab_SystemSetting.BackColor = System.Drawing.Color.White;
+ this.tab_SystemSetting.Controls.Add(this.panel_System);
+ this.tab_SystemSetting.Location = new System.Drawing.Point(22, 4);
+ this.tab_SystemSetting.Name = "tab_SystemSetting";
+ this.tab_SystemSetting.Padding = new System.Windows.Forms.Padding(3);
+ this.tab_SystemSetting.Size = new System.Drawing.Size(956, 628);
+ this.tab_SystemSetting.TabIndex = 1;
+ this.tab_SystemSetting.Text = "系统设置";
+ //
+ // panel_System
+ //
+ this.panel_System.Controls.Add(this.panel2);
+ this.panel_System.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel_System.Location = new System.Drawing.Point(3, 3);
+ this.panel_System.Name = "panel_System";
+ this.panel_System.Size = new System.Drawing.Size(950, 622);
+ this.panel_System.TabIndex = 1;
+ //
+ // panel2
+ //
+ this.panel2.Controls.Add(this.cbx_System_Language);
+ this.panel2.Controls.Add(this.label_Language);
+ this.panel2.Controls.Add(this.btn_save_ZH_US);
+ this.panel2.Location = new System.Drawing.Point(2, 3);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(394, 618);
+ this.panel2.TabIndex = 512;
+ //
+ // cbx_System_Language
+ //
+ this.cbx_System_Language.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cbx_System_Language.Font = new System.Drawing.Font("宋体", 15F);
+ this.cbx_System_Language.FormattingEnabled = true;
+ this.cbx_System_Language.Items.AddRange(new object[] {
+ "English",
+ "简体中文"});
+ this.cbx_System_Language.Location = new System.Drawing.Point(106, 17);
+ this.cbx_System_Language.Name = "cbx_System_Language";
+ this.cbx_System_Language.Size = new System.Drawing.Size(249, 28);
+ this.cbx_System_Language.TabIndex = 513;
+ //
+ // label_Language
+ //
+ this.label_Language.AutoSize = true;
+ this.label_Language.Font = new System.Drawing.Font("宋体", 13F);
+ this.label_Language.Location = new System.Drawing.Point(15, 22);
+ this.label_Language.Name = "label_Language";
+ this.label_Language.Size = new System.Drawing.Size(53, 18);
+ this.label_Language.TabIndex = 512;
+ this.label_Language.Text = "语言:";
+ //
+ // btn_save_ZH_US
+ //
+ this.btn_save_ZH_US.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_save_ZH_US.FlatAppearance.BorderSize = 0;
+ this.btn_save_ZH_US.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_save_ZH_US.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
+ this.btn_save_ZH_US.ForeColor = System.Drawing.Color.White;
+ this.btn_save_ZH_US.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_save_ZH_US.Location = new System.Drawing.Point(276, 562);
+ this.btn_save_ZH_US.Name = "btn_save_ZH_US";
+ this.btn_save_ZH_US.Size = new System.Drawing.Size(101, 38);
+ this.btn_save_ZH_US.TabIndex = 511;
+ this.btn_save_ZH_US.Text = "保存";
+ this.btn_save_ZH_US.UseVisualStyleBackColor = false;
+ this.btn_save_ZH_US.Click += new System.EventHandler(this.btn_save_ZH_US_Click);
//
// SystemSettingForm
//
@@ -188,9 +284,12 @@
this.Text = "SystemSettingForm";
this.Load += new System.EventHandler(this.SystemSettingForm_Load);
this.panel1.ResumeLayout(false);
- this.panel_mode.ResumeLayout(false);
- this.tabMain.ResumeLayout(false);
- this.pnlMainMenu.ResumeLayout(false);
+ this.tab_Main.ResumeLayout(false);
+ this.pnl_MainMenu.ResumeLayout(false);
+ this.tab_SystemSetting.ResumeLayout(false);
+ this.panel_System.ResumeLayout(false);
+ this.panel2.ResumeLayout(false);
+ this.panel2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@@ -203,10 +302,17 @@
private System.Windows.Forms.Button btn_Close;
private System.Windows.Forms.Button btn_Max;
private System.Windows.Forms.Button btn_Min;
- private System.Windows.Forms.Panel pnlMainMenu;
- private System.Windows.Forms.Button btn_ReadManage;
- private System.Windows.Forms.Panel panel_mode;
- private System.Windows.Forms.TabControl tabMain;
- private System.Windows.Forms.TabPage tab_UserManage;
+ private System.Windows.Forms.TabControl tab_Main;
+ private System.Windows.Forms.TabPage tab_UserManage1;
+ private System.Windows.Forms.Panel pnl_MainMenu;
+ private System.Windows.Forms.Button btn_SystemSetting;
+ private System.Windows.Forms.Button btn_UserManager;
+ private System.Windows.Forms.Panel panel4;
+ private System.Windows.Forms.TabPage tab_SystemSetting;
+ private System.Windows.Forms.Panel panel_System;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.ComboBox cbx_System_Language;
+ private System.Windows.Forms.Label label_Language;
+ private System.Windows.Forms.Button btn_save_ZH_US;
}
}
\ No newline at end of file
diff --git a/src/PBAnaly/UI/SystemSettingForm.cs b/src/PBAnaly/UI/SystemSettingForm.cs
index b0d1633..59f1a3e 100644
--- a/src/PBAnaly/UI/SystemSettingForm.cs
+++ b/src/PBAnaly/UI/SystemSettingForm.cs
@@ -1,13 +1,18 @@
-using PBAnaly.LoginCommon;
+using PBAnaly.Assist;
+using PBAnaly.LoginCommon;
+using ScottPlot.Colormaps;
using Sunny.UI.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Security.Cryptography;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -19,12 +24,23 @@ namespace PBAnaly.UI
{
InitializeComponent();
- pnlMainMenu.BringToFront();
+ pnl_MainMenu.BringToFront();
// 设置窗体的启动位置为屏幕的中心
this.StartPosition = FormStartPosition.CenterScreen;
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
+
+ GlobalData.PropertyChanged += OnGlobalDataPropertyChanged;
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
UserManageForm UserForm;
@@ -108,18 +124,18 @@ namespace PBAnaly.UI
}
#endregion
- private void btn_Close_Click(object sender, EventArgs e)
- {
- this.Close();
- }
+
private void SystemSettingForm_Load(object sender, EventArgs e)
{
+ //加载系统参数
+ LoadSystemParam();
+
UserForm = new UserManageForm();
UserForm.Dock = DockStyle.Fill;
UserForm.Location = new Point(0, 0);
UserForm.TopLevel = false;
- tab_UserManage.Controls.Add(UserForm);
+ tab_UserManage1.Controls.Add(UserForm);
UserForm.InitUser();
UserForm.Show();
@@ -127,13 +143,186 @@ namespace PBAnaly.UI
{
if (UserManage.LogionUser.Role == UserRole.SuperAdministrator)
{
- tab_UserManage.Parent = tabMain;
+ tab_UserManage1.Parent = tab_Main;
}
else
{
- tab_UserManage.Parent = null;
+ tab_UserManage1.Parent = null;
}
}
}
+
+ #region OnGlobalDataPropertyChanged 处理全局属性更改事件
+ ///
+ /// 处理全局属性更改事件
+ ///
+ /// 发生变化的属性名
+ /// 更改的属性值
+ private void OnGlobalDataPropertyChanged(string name, string value)
+ {
+ switch (name)
+ {
+ case "Language":
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ #endregion
+
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
+
+ #region btn_Close_Click 窗口关闭按钮
+ private void btn_Close_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+ #endregion
+
+ #region LoadSystemParam 加载系统参数
+ ///
+ /// 加载系统参数
+ ///
+ private void LoadSystemParam()
+ {
+ try
+ {
+ cbx_System_Language.Text = GlobalData.GetProperty("Language") == "English" ? "English" : "简体中文";
+ }
+ catch (Exception)
+ {
+
+ }
+ }
+
+ #endregion
+
+ #region btn_SystemSetting_Click 系统设置按钮
+ private void btn_SystemSetting_Click(object sender, EventArgs e)
+ {
+ OperatingRecord.CreateRecord("系统设置按钮", "点击事件");
+ this.tab_Main.SelectedIndex = 0;
+
+ SetMainMenuButtonCilkeColor(((Button)sender).Name);
+ }
+ #endregion
+
+ #region btn_UserManager_Click 用户管理按钮
+ private void btn_UserManager_Click(object sender, EventArgs e)
+ {
+ OperatingRecord.CreateRecord("用户管理按钮", "点击事件");
+ this.tab_Main.SelectedIndex = 1;
+
+ SetMainMenuButtonCilkeColor(((Button)sender).Name);
+ }
+ #endregion
+
+ #region SetMainMenuButtonCilkeColor 主菜单中按钮点击之后,设置按钮的前景色和背景色
+ ///
+ /// 主菜单中按钮点击之后,设置按钮的前景色和背景色
+ ///
+ /// 点击的按钮的名称
+ private void SetMainMenuButtonCilkeColor(string strBtnName)
+ {
+ foreach (Control control in pnl_MainMenu.Controls)
+ {
+ if (control.Name == pnl_MainMenu.Name)
+ {
+ continue;
+ }
+ else if (control.Name == strBtnName)
+ {
+ control.BackColor = Color.White;
+ control.ForeColor = Color.Black;
+ }
+ else
+ {
+ control.BackColor = ColorTranslator.FromHtml("30, 56, 83");
+ control.ForeColor = Color.White;
+ }
+ }
+ }
+ #endregion
+
+ #region btn_save_ZH_US_Click 系统参数保存按钮
+ private void btn_save_ZH_US_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if(GlobalData.GetProperty("Language") != cbx_System_Language.Text)
+ {
+ OperatingRecord.CreateRecord("系统参数保存按钮",
+ $"系统语言由{GlobalData.GetProperty("Language")}修改为:{cbx_System_Language.Text}");
+ if (cbx_System_Language.Text == "English")
+ {
+ SetLanguage("en-US");
+ GlobalData.SetProperty("Language", "English");
+ }
+ else
+ {
+ SetLanguage("zh-CN");
+ GlobalData.SetProperty("Language", "Chinese");
+ }
+ }
+
+
+ MessageBox.Show("保存成功");
+
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"保存失败,原因:{ex.Message.ToString()}");
+ }
+
+ }
+ #endregion
}
}
diff --git a/src/PBBiologyVC/PBColonyVC.cpp b/src/PBBiologyVC/PBColonyVC.cpp
index bef0305..2d9182f 100644
--- a/src/PBBiologyVC/PBColonyVC.cpp
+++ b/src/PBBiologyVC/PBColonyVC.cpp
@@ -1,46 +1,53 @@
#include "pch.h"
-//#include "PBColonyVC.h"
-//#include
-//#include
-//#include "PBColony.h"
-//
-//
-//
-//namespace PBBiologyVC
-//{
-//
-// PBColonyVC::~PBColonyVC()
-// {
-//
-// }
-//
-// void PBColonyVC::run(System::Byte* mat, unsigned short width, unsigned short height)
-// {
-//
-// /*for (size_t i = 0; i < width * height; i++)
-// {
-// std::cout << mat[i];
-// }
-// std::cout << std::endl;
-//
-// cv::Mat src(height, width, CV_8UC1, mat);
-// Mat input_cn3;
-// cv::Point2f center;
-// float radius;
-// int ret = pbcolony->colony_get_circle(src,center,radius);
-// if (ret)
-// {
-// Mat mask = pbcolony->generateMaskImage(src.cols, src.rows, center.x - radius, center.y - radius, 2 * radius, 2 * radius);
-// int lower = -1;
-// int upper = -1;
-// Mat bin = pbcolony->get_lower_upper(src, mask, lower, upper);
-//
-// ClassifyStandard class_stand;
-// pbcolony->init_classify_standard(class_stand);
-// vector Cinfo = pbcolony->get_colony_info(src, bin, input_cn3, class_stand, pbcolony->image_inverted_flag);
-// ColonyStatistic CStatistic = pbcolony->get_colony_statistics(Cinfo);
-//
-//
-// }*/
-// }
-//}
\ No newline at end of file
+#include "PBColonyVC.h"
+#include
+#include
+
+void PBBiologyVC::PBColonyVC::run(System::Byte* image, int bit, unsigned short width, unsigned short height,int lower,int upper, System::Byte* dstRgb)
+{
+ PBColony pbcolony;
+ cv::Mat input_cn1;
+ if (bit == 16)
+ {
+ input_cn1 = cv::Mat(height, width, CV_16UC1, image);
+ cv::normalize(input_cn1, input_cn1, 0, 255, cv::NORM_MINMAX); // һ 0-255
+ input_cn1.convertTo(input_cn1, CV_8UC1); // תΪ CV_8UC1
+ }
+ else if (bit == 8)
+ {
+ input_cn1 = cv::Mat(height, width, CV_8UC1, image);
+ }
+ else
+ {
+ return;
+ }
+ Mat input_cn3;
+ Point2f center;
+ float radius;
+ int ret =pbcolony.colony_get_circle(input_cn1, center, radius);
+ if (ret)
+ {
+ cv::Mat mask = pbcolony.generateMaskImage(input_cn1.cols, input_cn1.rows, center.x - radius, center.y - radius, 2 * radius, 2 * radius);
+ int lower = -1;
+ int upper = -1;
+ Mat bin = pbcolony.get_lower_upper(input_cn1, mask, lower, upper);
+
+ ClassifyStandard class_stand;
+ pbcolony.init_classify_standard(class_stand);
+ vector Cinfo = pbcolony.get_colony_info(input_cn1, bin, input_cn3, class_stand, pbcolony.image_inverted_flag);
+ ColonyStatistic CStatistic = pbcolony.get_colony_statistics(Cinfo);
+
+
+ std::memcpy(dstRgb, input_cn3.data, input_cn3.rows * input_cn3.cols*3);
+
+
+ }
+}
+
+
+
+PBBiologyVC::PBColonyVC::~PBColonyVC()
+{
+
+}
+
diff --git a/src/PBBiologyVC/PBColonyVC.h b/src/PBBiologyVC/PBColonyVC.h
index 3e7839c..c81fade 100644
--- a/src/PBBiologyVC/PBColonyVC.h
+++ b/src/PBBiologyVC/PBColonyVC.h
@@ -1,20 +1,77 @@
-//#pragma once
-//#include "PBLane.h"
-//using namespace System;
-//using namespace System::Collections::Generic;
-//
-//namespace PBBiologyVC {
-//
-//
-// public ref class PBColonyVC
-// {
-//
-// ~PBColonyVC();
-//
-// public:
-// void run(System::Byte* mat, unsigned short width, unsigned short height);
-// private:
-//
-// };
-//}
-//
+#pragma once
+
+using namespace System;
+using namespace System::Collections::Generic;
+using namespace System::Runtime::InteropServices;
+
+namespace PBBiologyVC{
+
+ public ref struct ColonyInfoVC
+ {
+ public:
+ int IDX; //
+ int area; //
+ int perimeter; //ܳ
+ float diameter; //ֱ
+ int IOD; //IOD
+ int classify; //
+
+ };
+ public enum dataClassVC
+ {
+ AREA = 0, //
+ PERIMETER, //ܳ
+ DIAMETER, //ֱ
+ IOD, //IOD
+ };
+ public ref struct ClassifyStandardVC
+ {
+ List^ interval; //ݼ־
+ float maxd; //־
+ float mind; //С־
+ int num; //
+ dataClassVC classes; //
+ };
+ public ref struct MinMaxInfoVC
+ {
+ float mind; //Сֵ
+ float minIDX; //СֵӦ
+ float maxd; //ֵ
+ float maxIDX; //ֵӦ
+ float range; //Χ
+ float mean; //ֵ
+ float sum; //
+ int number; //
+ };
+
+
+ public ref struct ColonyStatisticVC
+ {
+ MinMaxInfoVC area; //ͳƽ
+ MinMaxInfoVC perimeter; //ܳͳƽ
+ MinMaxInfoVC diameter; //ֱͳƽ
+ MinMaxInfoVC IOD; //IODͳƽ
+ MinMaxInfoVC classify; //ͳƽ
+ };
+ public ref class PBColonyVC
+ {
+ ~PBColonyVC();
+ public:
+ void run(System::Byte* image, int bit, unsigned short width, unsigned short height, int lower, int upper, System::Byte* dstRgb);
+ };
+
+
+
+ //public ref class PBColonyVC
+ //{
+ // //PBColonyVC();
+
+ // //~PBColonyVC();
+
+ //public:
+ // //void run(System::Byte* image, int bit, unsigned short width, unsigned short height, int lower , int upper );
+
+ //private:
+ // //PBColony* pbcolony;
+ //};
+}
\ No newline at end of file
diff --git a/src/PBBiologyVC/PBImageProcessVC.cpp b/src/PBBiologyVC/PBImageProcessVC.cpp
index 67f3abf..7f3495e 100644
--- a/src/PBBiologyVC/PBImageProcessVC.cpp
+++ b/src/PBBiologyVC/PBImageProcessVC.cpp
@@ -191,3 +191,144 @@ void PBBiologyVC::PBImageProcessVC::setSharpen_vc(System::Byte* mat, int bit, un
std::memcpy(mat, dst.data, byteCount);
}
+float PBBiologyVC::PBImageProcessVC::distortion_correction_vc(System::Byte* mat,int bit, unsigned short width, unsigned short height, System::Byte* dst)
+{
+ cv::Mat image(height, width, CV_16UC1, mat);
+ //cv::Mat mat = cv::imread("testImage/6.tif", cv::IMREAD_ANYDEPTH);
+ //std::cout << mat.type() << std::endl;
+ //cv::Mat gray;
+ //mat.convertTo(gray, CV_8U, 1.0 / 256);
+ float pixel_size = 0;
+ cv::Mat cameraMatrix = cv::Mat::eye(3, 3, CV_64F); // ʼ
+ cv::Mat distCoeffs = cv::Mat::zeros(8, 1, CV_64F); // ϵʼ
+ if (width == 1413 && height == 944)
+ {
+ pixel_size = 0.146854;
+
+ cameraMatrix = (cv::Mat_(3, 3) <<
+ 13424.3, 0, 699.116,
+ 0, 13418.2, 457.194,
+ 0, 0, 1);
+ distCoeffs = (cv::Mat_(1, 5) <<
+ -13.09138374714043,
+ 1096.760467172357,
+ -0.01255686300425431,
+ -0.02193325448828992,
+ 6.210517199273205);
+
+ }
+ else if (width == 2120 && height == 1416)
+ {
+ pixel_size = 0.0979912;
+
+ cameraMatrix = (cv::Mat_(3, 3) <<
+ 30615.6, 0, 1075.35,
+ 0 ,30549.6, 671.703,
+ 0, 0, 1);
+ distCoeffs = (cv::Mat_(1, 5) <<
+ -28.27314484356243,
+ 4861.062216658945,
+ -0.005201762355309857,
+ -0.04199660720547452,
+ 16.86437358623617);
+
+ }
+ else if (width == 4240 && height == 2832)
+ {
+ pixel_size = 0.0488135;
+ cameraMatrix = (cv::Mat_(3, 3) <<
+ 55720.2, 0 ,2069.75,
+ 0, 55692.2 ,1330.99,
+ 0, 0, 1);
+ distCoeffs = (cv::Mat_(1, 5) <<
+ -26.49169599273552,
+ 4221.103679926392,
+ 0.002303751568779423,
+ -0.01228639356798468,
+ 16.46220656874338);
+
+
+ }
+ else if (width == 1046 && height == 700)
+ {
+ pixel_size = 0.197999;
+ cameraMatrix = (cv::Mat_(3, 3) <<
+ 12403.6 ,0, 509.269,
+ 0 ,12392.3 ,317.452,
+ 0, 0, 1);
+ distCoeffs = (cv::Mat_(1, 5) <<
+ -20.53803884839358,
+ 2982.635509064052,
+ 0.006638792032366512,
+ -0.02166487691462552,
+ 12.66787776344682);
+ }
+ else if (width == 1570 && height == 1051)
+ {
+ pixel_size = 0.132058;
+ cameraMatrix = (cv::Mat_(3, 3) <<
+ 13074.3, 0, 782.395,
+ 0 ,13067.7, 500.374,
+ 0, 0, 1);
+ distCoeffs = (cv::Mat_(1, 5) <<
+ -10.46123267078845,
+ 837.3603920854447,
+ -0.006721123253779827,
+ -0.0264263519058049,
+ 5.094811028131693);
+
+ }
+ else if (width == 3140 && height == 2102)
+ {
+ pixel_size = 0.0657731;
+ cameraMatrix = (cv::Mat_(3, 3) <<
+ 39272.7, 0, 1553.26,
+ 0 ,39357.7, 776.553,
+ 0, 0, 1);
+ distCoeffs = (cv::Mat_(1, 5) <<
+ -22.14092395647976,
+ 2198.79303457571,
+ 0.0926857564915898,
+ -0.01814724403191658,
+ 6.983496103826432);
+
+ }
+ Mat dstR = distortion_correction(image, cameraMatrix, distCoeffs);
+ std::memcpy(dst, dstR.data, dstR.cols * dstR.rows *2);
+
+ return pixel_size;
+ /*std::cout << "wxh" << width << "x" << height << "d wxh" << dstR.cols << "x" << dstR.rows << std::endl;*/
+
+ //cv::Size patternSize(8, 5);
+ //cv::Mat cameraMatrix;
+ //cv::Mat distCoeffs;
+ //float pixel_size = 0;
+ //bool ret = camera_calibration(gray, patternSize,28.0f,cameraMatrix, distCoeffs, pixel_size);
+ //if (ret)
+ //{
+ // std::cout << "f=" << pixel_size << std::endl;
+
+ // // ӡ cameraMatrix
+ // std::cout << "cameraMatrix: " << std::endl;
+ // for (int i = 0; i < cameraMatrix.rows; ++i) {
+ // for (int j = 0; j < cameraMatrix.cols; ++j) {
+ // std::cout << cameraMatrix.at(i, j) << " ";
+ // }
+ // std::cout << std::endl;
+ // }
+
+ // // ӡ distCoeffs
+ // std::cout << "distCoeffs: " << std::endl;
+ // for (int i = 0; i < distCoeffs.rows; ++i) {
+ // for (int j = 0; j < distCoeffs.cols; ++j) {
+ // std::cout << distCoeffs.at(i, j) << " ";
+ // }
+ // std::cout << std::endl;
+ // }
+
+ // std::cout << "cameraMatrix: " << cameraMatrix << std::endl;
+ // std::cout << "distCoeffs: " << distCoeffs << std::endl;
+ //}
+
+}
+
diff --git a/src/PBBiologyVC/PBImageProcessVC.h b/src/PBBiologyVC/PBImageProcessVC.h
index 5af47ce..d7e5a38 100644
--- a/src/PBBiologyVC/PBImageProcessVC.h
+++ b/src/PBBiologyVC/PBImageProcessVC.h
@@ -7,7 +7,7 @@ using namespace System::Collections::Generic;
using namespace System::Runtime::InteropServices;
namespace PBBiologyVC {
-
+
public ref struct Pseudo_infoVC
{
public:
@@ -49,6 +49,9 @@ namespace PBBiologyVC {
PBBiologyVC::Pseudo_infoVC^ get_pseudo_info_polygon_vc(System::Byte* mat, int bit, unsigned short width, unsigned short height, float max, float min, List^ list_point);
PBBiologyVC::Pseudo_infoVC^ get_pseudo_info_wand_vc(System::Byte* mat, System::Byte* dst, int bit, unsigned short width, unsigned short height, float max, float min, int x, int y, int th, int% _dstW, int% _dstH, int% _dstX, int% _dstY);
void setSharpen_vc(System::Byte* mat, int bit, unsigned short width, unsigned short height);
+
+ float distortion_correction_vc(System::Byte* image, int bit, unsigned short width, unsigned short height, System::Byte* dst);
+
private:
};