Compare commits
1 Commits
43e7f3009d
...
dev_update
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2ccd0c91a |
@@ -142,7 +142,4 @@
|
|||||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>25</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
</root>
|
||||||
@@ -1,160 +0,0 @@
|
|||||||
using CanFly.Canvas.Shape;
|
|
||||||
using CanFly.Canvas.UI;
|
|
||||||
using CanFly.Helper;
|
|
||||||
using DH.Commons.Base;
|
|
||||||
using HalconDotNet;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
|
|
||||||
public class SizeBaseGuideControl : UserControl
|
|
||||||
{
|
|
||||||
public Action? OnControlCloseEvent;
|
|
||||||
|
|
||||||
public event Action<string,string> OnDataPassed;
|
|
||||||
|
|
||||||
|
|
||||||
private string _currentImageFile;
|
|
||||||
|
|
||||||
public string CurrentImageFile;
|
|
||||||
|
|
||||||
public CameraBase cameraBase;
|
|
||||||
|
|
||||||
protected string _hScriptsDir = Path.Combine(Environment.CurrentDirectory, "hscripts");
|
|
||||||
|
|
||||||
protected HObject? hImage = null;
|
|
||||||
|
|
||||||
protected FlyCanvas _canvas;
|
|
||||||
|
|
||||||
private HDevEngineTool? tool = null;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void DataToTriggerEvent(string input,string output)
|
|
||||||
{
|
|
||||||
|
|
||||||
OnDataPassed?.Invoke(input, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void UpdateShape(FlyShape shape)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual string GetScriptFileName()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 执行Halcon脚本
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="inputImg">输入图像</param>
|
|
||||||
/// <param name="inputDic">输入参数</param>
|
|
||||||
/// <param name="outputParamKeys">输出参数</param>
|
|
||||||
protected void ExecuteHScript(
|
|
||||||
Dictionary<string, HObject> inputImg,
|
|
||||||
Dictionary<string, HTuple> inputDic,
|
|
||||||
List<string> outputParamKeys,
|
|
||||||
Action<Exception>? exceptionHandler = null)
|
|
||||||
{
|
|
||||||
|
|
||||||
string filePath = Path.Combine(_hScriptsDir, GetScriptFileName());
|
|
||||||
if (!File.Exists(filePath))
|
|
||||||
{
|
|
||||||
MessageBox.Show($"文件 {filePath} 不存在");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (tool == null)
|
|
||||||
{
|
|
||||||
tool = new HDevEngineTool(_hScriptsDir);
|
|
||||||
tool.LoadProcedure(Path.GetFileNameWithoutExtension(GetScriptFileName()));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//tool.InputImageDic["INPUT_Image"] = hImage;
|
|
||||||
//tool.InputTupleDic["XCenter"] = _x;
|
|
||||||
//tool.InputTupleDic["YCenter"] = _y;
|
|
||||||
//tool.InputTupleDic["Radius"] = _r;
|
|
||||||
|
|
||||||
tool.InputImageDic = inputImg;
|
|
||||||
tool.InputTupleDic = inputDic;
|
|
||||||
|
|
||||||
|
|
||||||
Dictionary<string, HTuple> outputParams = new Dictionary<string, HTuple>();
|
|
||||||
|
|
||||||
|
|
||||||
if (!tool.RunProcedure(out string error, out int timeElasped))
|
|
||||||
{
|
|
||||||
OnExecuteHScriptResult(false, outputParams, timeElasped);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < outputParamKeys.Count; i++)
|
|
||||||
{
|
|
||||||
string k = outputParamKeys[i];
|
|
||||||
outputParams[k] = tool.GetResultTuple(k);
|
|
||||||
}
|
|
||||||
|
|
||||||
OnExecuteHScriptResult(true, outputParams, timeElasped);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
exceptionHandler?.Invoke(ex);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
hImage?.Dispose();
|
|
||||||
hImage = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Halcon脚本执行结果回调函数,重写该方法以自行处理算法执行结果
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="success">算法执行是否成功</param>
|
|
||||||
/// <param name="resultDic">算法输出结果</param>
|
|
||||||
/// <param name="timeElasped">算法耗时,单位:ms</param>
|
|
||||||
protected virtual void OnExecuteHScriptResult(bool success, Dictionary<string, HTuple> resultDic, int timeElasped)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected void OpenImageFile(Action<Bitmap> callback)
|
|
||||||
{
|
|
||||||
OpenFileDialog ofd = new OpenFileDialog();
|
|
||||||
ofd.Filter = "图像文件|*.jpg;*.jpeg;*.png";
|
|
||||||
ofd.Multiselect = false;
|
|
||||||
if (ofd.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
CurrentImageFile = ofd.FileName;
|
|
||||||
Bitmap bitmap = (Bitmap)Image.FromFile(CurrentImageFile);
|
|
||||||
callback?.Invoke(bitmap);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected void OnControlClose()
|
|
||||||
{
|
|
||||||
OnControlCloseEvent?.Invoke();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
</root>
|
|
||||||
77
CanFly/UI/SizePanel/SizeCtrlTitleBar.Designer.cs
generated
@@ -1,77 +0,0 @@
|
|||||||
namespace CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
partial class SizeCtrlTitleBar
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
btnClose = new PictureBox();
|
|
||||||
j = new Label();
|
|
||||||
((System.ComponentModel.ISupportInitialize)btnClose).BeginInit();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
btnClose.Dock = DockStyle.Right;
|
|
||||||
btnClose.Image = XKRS.CanFly.Properties.Resources.Close;
|
|
||||||
btnClose.Location = new Point(516, 3);
|
|
||||||
btnClose.Name = "btnClose";
|
|
||||||
btnClose.Size = new Size(30, 30);
|
|
||||||
btnClose.SizeMode = PictureBoxSizeMode.StretchImage;
|
|
||||||
btnClose.TabIndex = 1;
|
|
||||||
btnClose.TabStop = false;
|
|
||||||
btnClose.Click += btnClose_Click;
|
|
||||||
//
|
|
||||||
// j
|
|
||||||
//
|
|
||||||
j.Dock = DockStyle.Fill;
|
|
||||||
j.Font = new Font("Microsoft YaHei UI", 12F, FontStyle.Bold);
|
|
||||||
j.Location = new Point(3, 3);
|
|
||||||
j.Name = "j";
|
|
||||||
j.Size = new Size(513, 30);
|
|
||||||
j.TabIndex = 2;
|
|
||||||
j.Text = "标题";
|
|
||||||
j.TextAlign = ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// SizeCtrlTitleBar
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 17F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
Controls.Add(j);
|
|
||||||
Controls.Add(btnClose);
|
|
||||||
MinimumSize = new Size(0, 36);
|
|
||||||
Name = "SizeCtrlTitleBar";
|
|
||||||
Padding = new Padding(3);
|
|
||||||
Size = new Size(549, 36);
|
|
||||||
((System.ComponentModel.ISupportInitialize)btnClose).EndInit();
|
|
||||||
ResumeLayout(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private PictureBox btnClose;
|
|
||||||
private Label j;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
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 CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
public partial class SizeCtrlTitleBar : UserControl
|
|
||||||
{
|
|
||||||
public event Action? OnCloseClicked;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[DisplayName("Title")]
|
|
||||||
public string Title
|
|
||||||
{
|
|
||||||
get { return this.j.Text; }
|
|
||||||
set { this.j.Text = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public SizeCtrlTitleBar()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
this.Dock = DockStyle.Top;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OnCloseClicked?.Invoke();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
364
CanFly/UI/SizePanel/SizeGuideCircleCtrl.Designer.cs
generated
@@ -1,364 +0,0 @@
|
|||||||
namespace CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
partial class SizeGuideCircleCtrl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SizeGuideCircleCtrl));
|
|
||||||
splitContainer = new SplitContainer();
|
|
||||||
panel1 = new Panel();
|
|
||||||
canvas = new Canvas.UI.FlyCanvas();
|
|
||||||
statusStrip1 = new StatusStrip();
|
|
||||||
lblStatus = new ToolStripStatusLabel();
|
|
||||||
btnClose = new PictureBox();
|
|
||||||
label4 = new Label();
|
|
||||||
btnExecute = new Button();
|
|
||||||
lblElapsed = new Label();
|
|
||||||
ctrlTitleBar = new SizeCtrlTitleBar();
|
|
||||||
groupBox1 = new GroupBox();
|
|
||||||
label1 = new Label();
|
|
||||||
label2 = new Label();
|
|
||||||
label3 = new Label();
|
|
||||||
tbR = new TextBox();
|
|
||||||
tbY = new TextBox();
|
|
||||||
tbX = new TextBox();
|
|
||||||
btnLoadImage = new Button();
|
|
||||||
btnCreateCircle = new Button();
|
|
||||||
btnSave = new Button();
|
|
||||||
label6 = new Label();
|
|
||||||
lblResult = new Label();
|
|
||||||
panelGuide = new Panel();
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer).BeginInit();
|
|
||||||
splitContainer.Panel1.SuspendLayout();
|
|
||||||
splitContainer.Panel2.SuspendLayout();
|
|
||||||
splitContainer.SuspendLayout();
|
|
||||||
panel1.SuspendLayout();
|
|
||||||
statusStrip1.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)btnClose).BeginInit();
|
|
||||||
groupBox1.SuspendLayout();
|
|
||||||
panelGuide.SuspendLayout();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// splitContainer
|
|
||||||
//
|
|
||||||
splitContainer.Dock = DockStyle.Fill;
|
|
||||||
splitContainer.Location = new Point(0, 0);
|
|
||||||
splitContainer.Name = "splitContainer";
|
|
||||||
//
|
|
||||||
// splitContainer.Panel1
|
|
||||||
//
|
|
||||||
splitContainer.Panel1.Controls.Add(panelGuide);
|
|
||||||
splitContainer.Panel1MinSize = 150;
|
|
||||||
//
|
|
||||||
// splitContainer.Panel2
|
|
||||||
//
|
|
||||||
splitContainer.Panel2.Controls.Add(panel1);
|
|
||||||
splitContainer.Size = new Size(1280, 640);
|
|
||||||
splitContainer.SplitterDistance = 200;
|
|
||||||
splitContainer.TabIndex = 12;
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
panel1.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
panel1.Controls.Add(canvas);
|
|
||||||
panel1.Controls.Add(statusStrip1);
|
|
||||||
panel1.Dock = DockStyle.Fill;
|
|
||||||
panel1.Location = new Point(0, 0);
|
|
||||||
panel1.Name = "panel1";
|
|
||||||
panel1.Size = new Size(1076, 640);
|
|
||||||
panel1.TabIndex = 1;
|
|
||||||
//
|
|
||||||
// canvas
|
|
||||||
//
|
|
||||||
canvas.AllowMultiSelect = false;
|
|
||||||
canvas.CreateMode = Canvas.Shape.ShapeTypeEnum.Polygon;
|
|
||||||
canvas.Dock = DockStyle.Fill;
|
|
||||||
canvas.Enabled = false;
|
|
||||||
canvas.FillDrawing = false;
|
|
||||||
canvas.Location = new Point(0, 0);
|
|
||||||
canvas.Margin = new Padding(2);
|
|
||||||
canvas.Name = "canvas";
|
|
||||||
canvas.OutsideShapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.OutsideShapes");
|
|
||||||
canvas.Scale = 1F;
|
|
||||||
canvas.Shapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.Shapes");
|
|
||||||
canvas.Size = new Size(1074, 616);
|
|
||||||
canvas.TabIndex = 2;
|
|
||||||
//
|
|
||||||
// statusStrip1
|
|
||||||
//
|
|
||||||
statusStrip1.Items.AddRange(new ToolStripItem[] { lblStatus });
|
|
||||||
statusStrip1.Location = new Point(0, 616);
|
|
||||||
statusStrip1.Name = "statusStrip1";
|
|
||||||
statusStrip1.Size = new Size(1074, 22);
|
|
||||||
statusStrip1.TabIndex = 1;
|
|
||||||
statusStrip1.Text = "statusStrip1";
|
|
||||||
//
|
|
||||||
// lblStatus
|
|
||||||
//
|
|
||||||
lblStatus.Name = "lblStatus";
|
|
||||||
lblStatus.Size = new Size(44, 17);
|
|
||||||
lblStatus.Text = " ";
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
btnClose.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
|
||||||
btnClose.Image = XKRS.CanFly.Properties.Resources.Close;
|
|
||||||
btnClose.InitialImage = XKRS.CanFly.Properties.Resources.Close;
|
|
||||||
btnClose.Location = new Point(1102, 3);
|
|
||||||
btnClose.Name = "btnClose";
|
|
||||||
btnClose.Size = new Size(33, 33);
|
|
||||||
btnClose.SizeMode = PictureBoxSizeMode.StretchImage;
|
|
||||||
btnClose.TabIndex = 5;
|
|
||||||
btnClose.TabStop = false;
|
|
||||||
btnClose.Click += btnClose_Click;
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
label4.AutoSize = true;
|
|
||||||
label4.Location = new Point(6, 307);
|
|
||||||
label4.Name = "label4";
|
|
||||||
label4.Size = new Size(44, 17);
|
|
||||||
label4.TabIndex = 3;
|
|
||||||
label4.Text = "耗时:";
|
|
||||||
//
|
|
||||||
// btnExecute
|
|
||||||
//
|
|
||||||
btnExecute.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnExecute.Location = new Point(6, 272);
|
|
||||||
btnExecute.Name = "btnExecute";
|
|
||||||
btnExecute.Size = new Size(186, 32);
|
|
||||||
btnExecute.TabIndex = 2;
|
|
||||||
btnExecute.Text = "执行";
|
|
||||||
btnExecute.UseVisualStyleBackColor = true;
|
|
||||||
btnExecute.Click += btnExecute_Click;
|
|
||||||
//
|
|
||||||
// lblElapsed
|
|
||||||
//
|
|
||||||
lblElapsed.AutoSize = true;
|
|
||||||
lblElapsed.Location = new Point(56, 307);
|
|
||||||
lblElapsed.Name = "lblElapsed";
|
|
||||||
lblElapsed.Size = new Size(32, 17);
|
|
||||||
lblElapsed.TabIndex = 4;
|
|
||||||
lblElapsed.Text = "0ms";
|
|
||||||
//
|
|
||||||
// ctrlTitleBar
|
|
||||||
//
|
|
||||||
ctrlTitleBar.Dock = DockStyle.Top;
|
|
||||||
ctrlTitleBar.Location = new Point(0, 0);
|
|
||||||
ctrlTitleBar.MinimumSize = new Size(0, 36);
|
|
||||||
ctrlTitleBar.Name = "ctrlTitleBar";
|
|
||||||
ctrlTitleBar.Padding = new Padding(3);
|
|
||||||
ctrlTitleBar.Size = new Size(198, 36);
|
|
||||||
ctrlTitleBar.TabIndex = 11;
|
|
||||||
ctrlTitleBar.Title = "圆形测量";
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
groupBox1.Controls.Add(tbX);
|
|
||||||
groupBox1.Controls.Add(tbY);
|
|
||||||
groupBox1.Controls.Add(tbR);
|
|
||||||
groupBox1.Controls.Add(label3);
|
|
||||||
groupBox1.Controls.Add(label2);
|
|
||||||
groupBox1.Controls.Add(label1);
|
|
||||||
groupBox1.Dock = DockStyle.Top;
|
|
||||||
groupBox1.Location = new Point(0, 36);
|
|
||||||
groupBox1.Name = "groupBox1";
|
|
||||||
groupBox1.Size = new Size(198, 116);
|
|
||||||
groupBox1.TabIndex = 12;
|
|
||||||
groupBox1.TabStop = false;
|
|
||||||
groupBox1.Text = "圆参数";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
label1.AutoSize = true;
|
|
||||||
label1.Location = new Point(6, 25);
|
|
||||||
label1.Name = "label1";
|
|
||||||
label1.Size = new Size(19, 17);
|
|
||||||
label1.TabIndex = 0;
|
|
||||||
label1.Text = "X:";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
label2.AutoSize = true;
|
|
||||||
label2.Location = new Point(6, 54);
|
|
||||||
label2.Name = "label2";
|
|
||||||
label2.Size = new Size(18, 17);
|
|
||||||
label2.TabIndex = 1;
|
|
||||||
label2.Text = "Y:";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
label3.AutoSize = true;
|
|
||||||
label3.Location = new Point(3, 83);
|
|
||||||
label3.Name = "label3";
|
|
||||||
label3.Size = new Size(44, 17);
|
|
||||||
label3.TabIndex = 2;
|
|
||||||
label3.Text = "半径:";
|
|
||||||
//
|
|
||||||
// tbR
|
|
||||||
//
|
|
||||||
tbR.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbR.Location = new Point(56, 80);
|
|
||||||
tbR.Name = "tbR";
|
|
||||||
tbR.Size = new Size(136, 23);
|
|
||||||
tbR.TabIndex = 3;
|
|
||||||
//
|
|
||||||
// tbY
|
|
||||||
//
|
|
||||||
tbY.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbY.Location = new Point(56, 51);
|
|
||||||
tbY.Name = "tbY";
|
|
||||||
tbY.Size = new Size(136, 23);
|
|
||||||
tbY.TabIndex = 4;
|
|
||||||
//
|
|
||||||
// tbX
|
|
||||||
//
|
|
||||||
tbX.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbX.Location = new Point(56, 22);
|
|
||||||
tbX.Name = "tbX";
|
|
||||||
tbX.Size = new Size(136, 23);
|
|
||||||
tbX.TabIndex = 5;
|
|
||||||
//
|
|
||||||
// btnLoadImage
|
|
||||||
//
|
|
||||||
btnLoadImage.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnLoadImage.Location = new Point(6, 158);
|
|
||||||
btnLoadImage.Name = "btnLoadImage";
|
|
||||||
btnLoadImage.Size = new Size(186, 32);
|
|
||||||
btnLoadImage.TabIndex = 13;
|
|
||||||
btnLoadImage.Text = "打开图片";
|
|
||||||
btnLoadImage.UseVisualStyleBackColor = true;
|
|
||||||
btnLoadImage.Click += btnLoadImage_Click;
|
|
||||||
//
|
|
||||||
// btnCreateCircle
|
|
||||||
//
|
|
||||||
btnCreateCircle.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnCreateCircle.Location = new Point(6, 196);
|
|
||||||
btnCreateCircle.Name = "btnCreateCircle";
|
|
||||||
btnCreateCircle.Size = new Size(186, 32);
|
|
||||||
btnCreateCircle.TabIndex = 14;
|
|
||||||
btnCreateCircle.Text = "创建圆形";
|
|
||||||
btnCreateCircle.UseVisualStyleBackColor = true;
|
|
||||||
btnCreateCircle.Click += btnCreateCircle_Click;
|
|
||||||
//
|
|
||||||
// btnSave
|
|
||||||
//
|
|
||||||
btnSave.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnSave.Location = new Point(9, 397);
|
|
||||||
btnSave.Name = "btnSave";
|
|
||||||
btnSave.Size = new Size(186, 32);
|
|
||||||
btnSave.TabIndex = 15;
|
|
||||||
btnSave.Text = "保存数据";
|
|
||||||
btnSave.UseVisualStyleBackColor = true;
|
|
||||||
btnSave.Click += btnSave_Click;
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
label6.AutoSize = true;
|
|
||||||
label6.Location = new Point(6, 338);
|
|
||||||
label6.Name = "label6";
|
|
||||||
label6.Size = new Size(44, 17);
|
|
||||||
label6.TabIndex = 16;
|
|
||||||
label6.Text = "结果:";
|
|
||||||
//
|
|
||||||
// lblResult
|
|
||||||
//
|
|
||||||
lblResult.AutoSize = true;
|
|
||||||
lblResult.Location = new Point(56, 338);
|
|
||||||
lblResult.Name = "lblResult";
|
|
||||||
lblResult.Size = new Size(20, 17);
|
|
||||||
lblResult.TabIndex = 17;
|
|
||||||
lblResult.Text = "无";
|
|
||||||
//
|
|
||||||
// panelGuide
|
|
||||||
//
|
|
||||||
panelGuide.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
panelGuide.Controls.Add(lblResult);
|
|
||||||
panelGuide.Controls.Add(label6);
|
|
||||||
panelGuide.Controls.Add(btnSave);
|
|
||||||
panelGuide.Controls.Add(btnCreateCircle);
|
|
||||||
panelGuide.Controls.Add(btnLoadImage);
|
|
||||||
panelGuide.Controls.Add(groupBox1);
|
|
||||||
panelGuide.Controls.Add(ctrlTitleBar);
|
|
||||||
panelGuide.Controls.Add(lblElapsed);
|
|
||||||
panelGuide.Controls.Add(btnExecute);
|
|
||||||
panelGuide.Controls.Add(label4);
|
|
||||||
panelGuide.Dock = DockStyle.Fill;
|
|
||||||
panelGuide.Location = new Point(0, 0);
|
|
||||||
panelGuide.Name = "panelGuide";
|
|
||||||
panelGuide.Size = new Size(200, 640);
|
|
||||||
panelGuide.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// GuideCircleCtrl
|
|
||||||
//
|
|
||||||
Controls.Add(splitContainer);
|
|
||||||
Controls.Add(btnClose);
|
|
||||||
Name = "GuideCircleCtrl";
|
|
||||||
Size = new Size(1280, 640);
|
|
||||||
splitContainer.Panel1.ResumeLayout(false);
|
|
||||||
splitContainer.Panel2.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer).EndInit();
|
|
||||||
splitContainer.ResumeLayout(false);
|
|
||||||
panel1.ResumeLayout(false);
|
|
||||||
panel1.PerformLayout();
|
|
||||||
statusStrip1.ResumeLayout(false);
|
|
||||||
statusStrip1.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)btnClose).EndInit();
|
|
||||||
groupBox1.ResumeLayout(false);
|
|
||||||
groupBox1.PerformLayout();
|
|
||||||
panelGuide.ResumeLayout(false);
|
|
||||||
panelGuide.PerformLayout();
|
|
||||||
ResumeLayout(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private SplitContainer splitContainer;
|
|
||||||
private Panel panel1;
|
|
||||||
private Canvas.UI.FlyCanvas canvas;
|
|
||||||
private StatusStrip statusStrip1;
|
|
||||||
private ToolStripStatusLabel lblStatus;
|
|
||||||
private PictureBox btnClose;
|
|
||||||
private Panel panelGuide;
|
|
||||||
private Label lblResult;
|
|
||||||
private Label label6;
|
|
||||||
private Button btnSave;
|
|
||||||
private Button btnCreateCircle;
|
|
||||||
private Button btnLoadImage;
|
|
||||||
private GroupBox groupBox1;
|
|
||||||
private TextBox tbX;
|
|
||||||
private TextBox tbY;
|
|
||||||
private TextBox tbR;
|
|
||||||
private Label label3;
|
|
||||||
private Label label2;
|
|
||||||
private Label label1;
|
|
||||||
private SizeCtrlTitleBar ctrlTitleBar;
|
|
||||||
private Label lblElapsed;
|
|
||||||
private Button btnExecute;
|
|
||||||
private Label label4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,361 +0,0 @@
|
|||||||
using CanFly.Canvas.Shape;
|
|
||||||
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;
|
|
||||||
using CanFly.Canvas.Helper;
|
|
||||||
using CanFly.Helper;
|
|
||||||
using HalconDotNet;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using CanFly.Canvas.UI;
|
|
||||||
|
|
||||||
|
|
||||||
namespace CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
public partial class SizeGuideCircleCtrl : SizeBaseGuideControl
|
|
||||||
{
|
|
||||||
|
|
||||||
private float _x;
|
|
||||||
private float _y;
|
|
||||||
private float _r;
|
|
||||||
private FlyShape? _circle;
|
|
||||||
|
|
||||||
|
|
||||||
protected override string GetScriptFileName() => "CircleMeasure.hdvp";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public SizeGuideCircleCtrl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
|
|
||||||
this.canvas.mouseMoved += Canvas_mouseMoved;
|
|
||||||
this.canvas.OnShapeUpdateEvent += UpdateShape;
|
|
||||||
this.canvas.selectionChanged += Canvas_selectionChanged;
|
|
||||||
|
|
||||||
this.canvas.OnShapeMoving += Canvas_OnShapeMoving;
|
|
||||||
this.canvas.newShape += Canvas_newShape;
|
|
||||||
|
|
||||||
this.ctrlTitleBar.OnCloseClicked += OnControlClose;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected override void UpdateShape(FlyShape shape)
|
|
||||||
{
|
|
||||||
this._circle = shape;
|
|
||||||
|
|
||||||
_x = shape.Points[0].X;
|
|
||||||
_y = shape.Points[0].Y;
|
|
||||||
_r = PointHelper.Distance(shape.Points[0], shape.Points[1]);
|
|
||||||
|
|
||||||
this.tbX.Text = shape.Points[0].X.ToString("F3");
|
|
||||||
this.tbY.Text = shape.Points[0].Y.ToString("F3");
|
|
||||||
this.tbR.Text = _r.ToString("F3");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnExecute_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(this.tbX.Text.Trim().Length == 0)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先创建圆形");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
this.canvas.OutsideShapes.Clear();
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
|
|
||||||
flag = new List<double>();
|
|
||||||
x = new List<double>();
|
|
||||||
y = new List<double>();
|
|
||||||
r = new List<double>();
|
|
||||||
Dictionary<string, HObject> inputImg = new Dictionary<string, HObject>();
|
|
||||||
|
|
||||||
if (hImage == null)
|
|
||||||
{
|
|
||||||
HOperatorSet.ReadImage(out hImage, CurrentImageFile);
|
|
||||||
}
|
|
||||||
inputImg["INPUT_Image"] = hImage;
|
|
||||||
|
|
||||||
Dictionary<string, HTuple> inputPara = new Dictionary<string, HTuple>();
|
|
||||||
|
|
||||||
|
|
||||||
inputPara["XCenter"] = _x;
|
|
||||||
inputPara["YCenter"] = _y;
|
|
||||||
inputPara["Radius"] = _r;
|
|
||||||
|
|
||||||
|
|
||||||
List<string> outputKeys = new List<string>()
|
|
||||||
{
|
|
||||||
"OUTPUT_PreTreatedImage",
|
|
||||||
"OUTPUT_Flag",
|
|
||||||
"RXCenter",
|
|
||||||
"RYCenter",
|
|
||||||
"RRadius"
|
|
||||||
};
|
|
||||||
|
|
||||||
ExecuteHScript(
|
|
||||||
inputImg,
|
|
||||||
inputPara,
|
|
||||||
outputKeys);
|
|
||||||
|
|
||||||
}
|
|
||||||
List<double> flag = new List<double>(), x=new List<double>(),y=new List<double>(),r=new List<double>();
|
|
||||||
|
|
||||||
protected override void OnExecuteHScriptResult(
|
|
||||||
bool success,
|
|
||||||
Dictionary<string, HTuple> resultDic,
|
|
||||||
int timeElasped)
|
|
||||||
{
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
"OUTPUT_Flag",
|
|
||||||
"RXCenter",
|
|
||||||
"RYCenter",
|
|
||||||
"RRadius"
|
|
||||||
*/
|
|
||||||
|
|
||||||
//取图?????
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
flag = resultDic["OUTPUT_Flag"].HTupleToDouble();
|
|
||||||
x = resultDic["RXCenter"].HTupleToDouble();
|
|
||||||
y = resultDic["RYCenter"].HTupleToDouble();
|
|
||||||
r = resultDic["RRadius"].HTupleToDouble();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (flag.Count > 0)
|
|
||||||
{
|
|
||||||
lblResult.Text = flag[0].ToString();
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lblResult.Text = "无";
|
|
||||||
}
|
|
||||||
if (flag.Count > 0 && x.Count > 0 && y.Count > 0 && r.Count > 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
//detectResult.VisionImageSet.MLImage = resultDic["RRadius"].GetResultObject("OUTPUT_PreTreatedImage");
|
|
||||||
this.canvas.DrawCircle(new PointF((float)x[0], (float)y[0]), (float)r[0]);
|
|
||||||
lblElapsed.Text = $"{timeElasped} ms";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Test()
|
|
||||||
{
|
|
||||||
string filePath = Path.Combine(_hScriptsDir, GetScriptFileName());
|
|
||||||
if (!File.Exists(filePath))
|
|
||||||
{
|
|
||||||
MessageBox.Show($"文件 {filePath} 不存在");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
HDevEngineTool tool = new HDevEngineTool(_hScriptsDir);
|
|
||||||
tool.LoadProcedure(Path.GetFileNameWithoutExtension(GetScriptFileName()));
|
|
||||||
|
|
||||||
|
|
||||||
if (hImage == null)
|
|
||||||
{
|
|
||||||
HOperatorSet.ReadImage(out hImage, CurrentImageFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
tool.InputImageDic["INPUT_Image"] = hImage;
|
|
||||||
tool.InputTupleDic["XCenter"] = _x;
|
|
||||||
tool.InputTupleDic["YCenter"] = _y;
|
|
||||||
tool.InputTupleDic["Radius"] = _r;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!tool.RunProcedure(out string error, out int timeElasped))
|
|
||||||
{
|
|
||||||
throw new Exception();
|
|
||||||
}
|
|
||||||
|
|
||||||
HTuple hFlag = tool.GetResultTuple("OUTPUT_Flag");
|
|
||||||
|
|
||||||
var flag = tool.GetResultTuple("OUTPUT_Flag").HTupleToDouble();
|
|
||||||
List<double> x = tool.GetResultTuple("RXCenter").HTupleToDouble();
|
|
||||||
var y = tool.GetResultTuple("RYCenter").HTupleToDouble();
|
|
||||||
var r = tool.GetResultTuple("RRadius").HTupleToDouble();
|
|
||||||
if (flag.Count > 0)
|
|
||||||
{
|
|
||||||
lblResult.Text = flag[0].ToString();
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lblResult.Text = "无";
|
|
||||||
}
|
|
||||||
if (flag.Count > 0 && x.Count > 0 && y.Count > 0 && r.Count > 0)
|
|
||||||
{
|
|
||||||
this.canvas.DrawCircle(new PointF((float)x[0], (float)y[0]), (float)r[0]);
|
|
||||||
lblElapsed.Text = $"{timeElasped} ms";
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
Debug.WriteLine("");
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
hImage?.Dispose();
|
|
||||||
hImage = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OnControlCloseEvent?.Invoke();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnLoadImage_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenImageFile(bitmap =>
|
|
||||||
{
|
|
||||||
this.canvas.LoadPixmap(bitmap);
|
|
||||||
this.canvas.Enabled = true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_mouseMoved(PointF pos)
|
|
||||||
{
|
|
||||||
if (InvokeRequired)
|
|
||||||
{
|
|
||||||
Invoke(Canvas_mouseMoved, pos);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lblStatus.Text = $"X:{pos.X}, Y:{pos.Y}";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_selectionChanged(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
//if (shapes.Count != 1)
|
|
||||||
//{
|
|
||||||
// // panelGuide.Controls.Clear();
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
//SwitchGuideForm(shapes[0].ShapeType);
|
|
||||||
// Canvas_OnShapeUpdateEvent(shapes[0]);
|
|
||||||
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_OnShapeMoving(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnCreateCircle_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.tbX.Text = string.Empty;
|
|
||||||
this.tbY.Text = string.Empty;
|
|
||||||
this.tbR.Text = string.Empty;
|
|
||||||
this.canvas.Shapes.Clear();
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
this.canvas.StartDraw(ShapeTypeEnum.Circle);
|
|
||||||
this.canvas.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_newShape()
|
|
||||||
{
|
|
||||||
|
|
||||||
this.canvas.StopDraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnSave_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (lblResult.Text.Equals("无"))
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先进行绘制");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(lblResult.Text != "0")
|
|
||||||
{
|
|
||||||
MessageBox.Show("测量计算错误,无法保存");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//List<double> x = tool.GetResultTuple("RXCenter").HTupleToDouble();
|
|
||||||
//var y = tool.GetResultTuple("RYCenter").HTupleToDouble();
|
|
||||||
//var r = tool.GetResultTuple("RRadius").HTupleToDouble();
|
|
||||||
//tool.InputTupleDic["XCenter"] = _x;
|
|
||||||
//tool.InputTupleDic["YCenter"] = _y;
|
|
||||||
//tool.InputTupleDic["Radius"] = _r;
|
|
||||||
string inputput = $"XCenter:{string.Join(";", _x)};YCenter:{string.Join(";", _y)};RRadius:{string.Join(";", _r)}";
|
|
||||||
string output = $"RXCenter:{string.Join(";", x[0])};RYCenter:{string.Join(";", y[0])};RRadius:{string.Join(";", r[0])}";
|
|
||||||
|
|
||||||
DataToTriggerEvent(inputput,output);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="canvas.OutsideShapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="canvas.Shapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
||||||
471
CanFly/UI/SizePanel/SizeGuideHeightCtrl.Designer.cs
generated
@@ -1,471 +0,0 @@
|
|||||||
namespace CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
partial class SizeGuideHeightCtrl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SizeGuideHeightCtrl));
|
|
||||||
splitter1 = new AntdUI.Splitter();
|
|
||||||
panel1 = new AntdUI.Panel();
|
|
||||||
canvas = new Canvas.UI.FlyCanvas();
|
|
||||||
panel2 = new AntdUI.Panel();
|
|
||||||
ctrlTitleBar = new GuidePanel.CtrlTitleBar();
|
|
||||||
statusStrip1 = new StatusStrip();
|
|
||||||
lblStatus = new ToolStripStatusLabel();
|
|
||||||
groupBox2 = new GroupBox();
|
|
||||||
tbLineX1 = new AntdUI.Input();
|
|
||||||
label1 = new AntdUI.Label();
|
|
||||||
label4 = new AntdUI.Label();
|
|
||||||
tbLineY1 = new AntdUI.Input();
|
|
||||||
label3 = new AntdUI.Label();
|
|
||||||
tbLineY2 = new AntdUI.Input();
|
|
||||||
label5 = new AntdUI.Label();
|
|
||||||
tbLineX2 = new AntdUI.Input();
|
|
||||||
label6 = new AntdUI.Label();
|
|
||||||
label7 = new AntdUI.Label();
|
|
||||||
tbwidth = new AntdUI.Input();
|
|
||||||
tbheight = new AntdUI.Input();
|
|
||||||
label2 = new AntdUI.Label();
|
|
||||||
CamName = new AntdUI.Input();
|
|
||||||
groupBox1 = new GroupBox();
|
|
||||||
switch1 = new AntdUI.Switch();
|
|
||||||
label8 = new AntdUI.Label();
|
|
||||||
button1 = new AntdUI.Button();
|
|
||||||
button2 = new AntdUI.Button();
|
|
||||||
button3 = new AntdUI.Button();
|
|
||||||
label9 = new AntdUI.Label();
|
|
||||||
lblElapsed = new AntdUI.Label();
|
|
||||||
lblResult = new AntdUI.Label();
|
|
||||||
label12 = new AntdUI.Label();
|
|
||||||
btnSave = new AntdUI.Button();
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitter1).BeginInit();
|
|
||||||
splitter1.Panel1.SuspendLayout();
|
|
||||||
splitter1.Panel2.SuspendLayout();
|
|
||||||
splitter1.SuspendLayout();
|
|
||||||
panel1.SuspendLayout();
|
|
||||||
panel2.SuspendLayout();
|
|
||||||
statusStrip1.SuspendLayout();
|
|
||||||
groupBox2.SuspendLayout();
|
|
||||||
groupBox1.SuspendLayout();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// splitter1
|
|
||||||
//
|
|
||||||
splitter1.Dock = DockStyle.Fill;
|
|
||||||
splitter1.Location = new Point(0, 0);
|
|
||||||
splitter1.Name = "splitter1";
|
|
||||||
//
|
|
||||||
// splitter1.Panel1
|
|
||||||
//
|
|
||||||
splitter1.Panel1.Controls.Add(panel2);
|
|
||||||
//
|
|
||||||
// splitter1.Panel2
|
|
||||||
//
|
|
||||||
splitter1.Panel2.Controls.Add(panel1);
|
|
||||||
splitter1.Size = new Size(1280, 640);
|
|
||||||
splitter1.SplitterDistance = 286;
|
|
||||||
splitter1.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
panel1.Controls.Add(statusStrip1);
|
|
||||||
panel1.Controls.Add(canvas);
|
|
||||||
panel1.Dock = DockStyle.Fill;
|
|
||||||
panel1.Location = new Point(0, 0);
|
|
||||||
panel1.Name = "panel1";
|
|
||||||
panel1.Size = new Size(990, 640);
|
|
||||||
panel1.TabIndex = 0;
|
|
||||||
panel1.Text = "panel1";
|
|
||||||
//
|
|
||||||
// canvas
|
|
||||||
//
|
|
||||||
canvas.AllowMultiSelect = false;
|
|
||||||
canvas.CreateMode = Canvas.Shape.ShapeTypeEnum.Polygon;
|
|
||||||
canvas.Dock = DockStyle.Fill;
|
|
||||||
canvas.FillDrawing = false;
|
|
||||||
canvas.Location = new Point(0, 0);
|
|
||||||
canvas.Margin = new Padding(2);
|
|
||||||
canvas.Name = "canvas";
|
|
||||||
canvas.OutsideShapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.OutsideShapes");
|
|
||||||
canvas.Scale = 1F;
|
|
||||||
canvas.Shapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.Shapes");
|
|
||||||
canvas.Size = new Size(990, 640);
|
|
||||||
canvas.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
panel2.Controls.Add(btnSave);
|
|
||||||
panel2.Controls.Add(lblResult);
|
|
||||||
panel2.Controls.Add(label12);
|
|
||||||
panel2.Controls.Add(lblElapsed);
|
|
||||||
panel2.Controls.Add(label9);
|
|
||||||
panel2.Controls.Add(button3);
|
|
||||||
panel2.Controls.Add(button2);
|
|
||||||
panel2.Controls.Add(groupBox1);
|
|
||||||
panel2.Controls.Add(groupBox2);
|
|
||||||
panel2.Controls.Add(ctrlTitleBar);
|
|
||||||
panel2.Dock = DockStyle.Fill;
|
|
||||||
panel2.Location = new Point(0, 0);
|
|
||||||
panel2.Name = "panel2";
|
|
||||||
panel2.Size = new Size(286, 640);
|
|
||||||
panel2.TabIndex = 0;
|
|
||||||
panel2.Text = "panel2";
|
|
||||||
//
|
|
||||||
// ctrlTitleBar
|
|
||||||
//
|
|
||||||
ctrlTitleBar.Dock = DockStyle.Top;
|
|
||||||
ctrlTitleBar.Location = new Point(0, 0);
|
|
||||||
ctrlTitleBar.MinimumSize = new Size(0, 36);
|
|
||||||
ctrlTitleBar.Name = "ctrlTitleBar";
|
|
||||||
ctrlTitleBar.Padding = new Padding(3);
|
|
||||||
ctrlTitleBar.Size = new Size(286, 36);
|
|
||||||
ctrlTitleBar.TabIndex = 12;
|
|
||||||
ctrlTitleBar.Title = "高度测量";
|
|
||||||
//
|
|
||||||
// statusStrip1
|
|
||||||
//
|
|
||||||
statusStrip1.Items.AddRange(new ToolStripItem[] { lblStatus });
|
|
||||||
statusStrip1.Location = new Point(0, 618);
|
|
||||||
statusStrip1.Name = "statusStrip1";
|
|
||||||
statusStrip1.Size = new Size(990, 22);
|
|
||||||
statusStrip1.TabIndex = 2;
|
|
||||||
statusStrip1.Text = "statusStrip1";
|
|
||||||
//
|
|
||||||
// lblStatus
|
|
||||||
//
|
|
||||||
lblStatus.Name = "lblStatus";
|
|
||||||
lblStatus.Size = new Size(44, 17);
|
|
||||||
lblStatus.Text = " ";
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
groupBox2.Controls.Add(tbheight);
|
|
||||||
groupBox2.Controls.Add(tbwidth);
|
|
||||||
groupBox2.Controls.Add(label7);
|
|
||||||
groupBox2.Controls.Add(label6);
|
|
||||||
groupBox2.Controls.Add(label3);
|
|
||||||
groupBox2.Controls.Add(tbLineY2);
|
|
||||||
groupBox2.Controls.Add(label5);
|
|
||||||
groupBox2.Controls.Add(tbLineX2);
|
|
||||||
groupBox2.Controls.Add(label4);
|
|
||||||
groupBox2.Controls.Add(tbLineY1);
|
|
||||||
groupBox2.Controls.Add(label1);
|
|
||||||
groupBox2.Controls.Add(tbLineX1);
|
|
||||||
groupBox2.Dock = DockStyle.Top;
|
|
||||||
groupBox2.Location = new Point(0, 36);
|
|
||||||
groupBox2.Name = "groupBox2";
|
|
||||||
groupBox2.Size = new Size(286, 229);
|
|
||||||
groupBox2.TabIndex = 14;
|
|
||||||
groupBox2.TabStop = false;
|
|
||||||
groupBox2.Text = "线参数";
|
|
||||||
//
|
|
||||||
// tbLineX1
|
|
||||||
//
|
|
||||||
tbLineX1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineX1.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, 134);
|
|
||||||
tbLineX1.Location = new Point(62, 22);
|
|
||||||
tbLineX1.Name = "tbLineX1";
|
|
||||||
tbLineX1.Radius = 3;
|
|
||||||
tbLineX1.Size = new Size(214, 32);
|
|
||||||
tbLineX1.TabIndex = 17;
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
label1.Location = new Point(6, 22);
|
|
||||||
label1.Name = "label1";
|
|
||||||
label1.Size = new Size(38, 32);
|
|
||||||
label1.TabIndex = 19;
|
|
||||||
label1.Text = " X1:";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
label4.Location = new Point(6, 60);
|
|
||||||
label4.Name = "label4";
|
|
||||||
label4.Size = new Size(38, 32);
|
|
||||||
label4.TabIndex = 23;
|
|
||||||
label4.Text = " Y1:";
|
|
||||||
//
|
|
||||||
// tbLineY1
|
|
||||||
//
|
|
||||||
tbLineY1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineY1.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, 134);
|
|
||||||
tbLineY1.Location = new Point(62, 60);
|
|
||||||
tbLineY1.Name = "tbLineY1";
|
|
||||||
tbLineY1.Radius = 3;
|
|
||||||
tbLineY1.Size = new Size(214, 32);
|
|
||||||
tbLineY1.TabIndex = 22;
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
label3.Location = new Point(6, 136);
|
|
||||||
label3.Name = "label3";
|
|
||||||
label3.Size = new Size(38, 32);
|
|
||||||
label3.TabIndex = 27;
|
|
||||||
label3.Text = " Y2:";
|
|
||||||
//
|
|
||||||
// tbLineY2
|
|
||||||
//
|
|
||||||
tbLineY2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineY2.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, 134);
|
|
||||||
tbLineY2.Location = new Point(62, 136);
|
|
||||||
tbLineY2.Name = "tbLineY2";
|
|
||||||
tbLineY2.Radius = 3;
|
|
||||||
tbLineY2.Size = new Size(214, 32);
|
|
||||||
tbLineY2.TabIndex = 26;
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
label5.Location = new Point(6, 98);
|
|
||||||
label5.Name = "label5";
|
|
||||||
label5.Size = new Size(38, 32);
|
|
||||||
label5.TabIndex = 25;
|
|
||||||
label5.Text = " X2:";
|
|
||||||
//
|
|
||||||
// tbLineX2
|
|
||||||
//
|
|
||||||
tbLineX2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineX2.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, 134);
|
|
||||||
tbLineX2.Location = new Point(62, 98);
|
|
||||||
tbLineX2.Name = "tbLineX2";
|
|
||||||
tbLineX2.Radius = 3;
|
|
||||||
tbLineX2.Size = new Size(214, 32);
|
|
||||||
tbLineX2.TabIndex = 24;
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
label6.Location = new Point(6, 174);
|
|
||||||
label6.Name = "label6";
|
|
||||||
label6.Size = new Size(50, 32);
|
|
||||||
label6.TabIndex = 28;
|
|
||||||
label6.Text = " 宽:";
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
label7.Location = new Point(145, 177);
|
|
||||||
label7.Name = "label7";
|
|
||||||
label7.Size = new Size(29, 32);
|
|
||||||
label7.TabIndex = 29;
|
|
||||||
label7.Text = "高:";
|
|
||||||
//
|
|
||||||
// tbwidth
|
|
||||||
//
|
|
||||||
tbwidth.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbwidth.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, 134);
|
|
||||||
tbwidth.Location = new Point(62, 177);
|
|
||||||
tbwidth.Name = "tbwidth";
|
|
||||||
tbwidth.Radius = 3;
|
|
||||||
tbwidth.Size = new Size(77, 32);
|
|
||||||
tbwidth.TabIndex = 30;
|
|
||||||
//
|
|
||||||
// tbheight
|
|
||||||
//
|
|
||||||
tbheight.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbheight.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, 134);
|
|
||||||
tbheight.Location = new Point(180, 177);
|
|
||||||
tbheight.Name = "tbheight";
|
|
||||||
tbheight.Radius = 3;
|
|
||||||
tbheight.Size = new Size(96, 32);
|
|
||||||
tbheight.TabIndex = 31;
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
label2.Location = new Point(6, 22);
|
|
||||||
label2.Name = "label2";
|
|
||||||
label2.Size = new Size(55, 32);
|
|
||||||
label2.TabIndex = 1;
|
|
||||||
label2.Text = "相机名:";
|
|
||||||
//
|
|
||||||
// CamName
|
|
||||||
//
|
|
||||||
CamName.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
CamName.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, 134);
|
|
||||||
CamName.Location = new Point(64, 22);
|
|
||||||
CamName.Name = "CamName";
|
|
||||||
CamName.Radius = 3;
|
|
||||||
CamName.ReadOnly = true;
|
|
||||||
CamName.Size = new Size(212, 32);
|
|
||||||
CamName.TabIndex = 18;
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
groupBox1.Controls.Add(button1);
|
|
||||||
groupBox1.Controls.Add(label8);
|
|
||||||
groupBox1.Controls.Add(switch1);
|
|
||||||
groupBox1.Controls.Add(label2);
|
|
||||||
groupBox1.Controls.Add(CamName);
|
|
||||||
groupBox1.Dock = DockStyle.Top;
|
|
||||||
groupBox1.Location = new Point(0, 265);
|
|
||||||
groupBox1.Name = "groupBox1";
|
|
||||||
groupBox1.Size = new Size(286, 105);
|
|
||||||
groupBox1.TabIndex = 19;
|
|
||||||
groupBox1.TabStop = false;
|
|
||||||
groupBox1.Text = "相机控制";
|
|
||||||
//
|
|
||||||
// switch1
|
|
||||||
//
|
|
||||||
switch1.Location = new Point(67, 60);
|
|
||||||
switch1.Name = "switch1";
|
|
||||||
switch1.Size = new Size(72, 32);
|
|
||||||
switch1.TabIndex = 19;
|
|
||||||
switch1.Text = "switch1";
|
|
||||||
//
|
|
||||||
// label8
|
|
||||||
//
|
|
||||||
label8.Location = new Point(6, 60);
|
|
||||||
label8.Name = "label8";
|
|
||||||
label8.Size = new Size(55, 32);
|
|
||||||
label8.TabIndex = 20;
|
|
||||||
label8.Text = "硬触发:";
|
|
||||||
//
|
|
||||||
// button1
|
|
||||||
//
|
|
||||||
button1.Location = new Point(145, 60);
|
|
||||||
button1.Name = "button1";
|
|
||||||
button1.Size = new Size(131, 32);
|
|
||||||
button1.TabIndex = 21;
|
|
||||||
button1.Text = "软触发一次";
|
|
||||||
//
|
|
||||||
// button2
|
|
||||||
//
|
|
||||||
button2.Location = new Point(0, 376);
|
|
||||||
button2.Name = "button2";
|
|
||||||
button2.Size = new Size(276, 37);
|
|
||||||
button2.TabIndex = 22;
|
|
||||||
button2.Text = "创建矩形";
|
|
||||||
button2.Type = AntdUI.TTypeMini.Primary;
|
|
||||||
//
|
|
||||||
// button3
|
|
||||||
//
|
|
||||||
button3.Location = new Point(0, 419);
|
|
||||||
button3.Name = "button3";
|
|
||||||
button3.Size = new Size(276, 36);
|
|
||||||
button3.TabIndex = 23;
|
|
||||||
button3.Text = "执行";
|
|
||||||
button3.Type = AntdUI.TTypeMini.Primary;
|
|
||||||
//
|
|
||||||
// label9
|
|
||||||
//
|
|
||||||
label9.Location = new Point(6, 461);
|
|
||||||
label9.Name = "label9";
|
|
||||||
label9.Size = new Size(50, 23);
|
|
||||||
label9.TabIndex = 24;
|
|
||||||
label9.Text = "耗时:";
|
|
||||||
//
|
|
||||||
// lblElapsed
|
|
||||||
//
|
|
||||||
lblElapsed.Location = new Point(67, 461);
|
|
||||||
lblElapsed.Name = "lblElapsed";
|
|
||||||
lblElapsed.Size = new Size(72, 23);
|
|
||||||
lblElapsed.TabIndex = 25;
|
|
||||||
lblElapsed.Text = "0 ms";
|
|
||||||
//
|
|
||||||
// lblResult
|
|
||||||
//
|
|
||||||
lblResult.Location = new Point(67, 490);
|
|
||||||
lblResult.Name = "lblResult";
|
|
||||||
lblResult.Size = new Size(72, 23);
|
|
||||||
lblResult.TabIndex = 27;
|
|
||||||
lblResult.Text = "无";
|
|
||||||
//
|
|
||||||
// label12
|
|
||||||
//
|
|
||||||
label12.Location = new Point(6, 490);
|
|
||||||
label12.Name = "label12";
|
|
||||||
label12.Size = new Size(50, 23);
|
|
||||||
label12.TabIndex = 26;
|
|
||||||
label12.Text = "结果:";
|
|
||||||
//
|
|
||||||
// btnSave
|
|
||||||
//
|
|
||||||
btnSave.Location = new Point(0, 519);
|
|
||||||
btnSave.Name = "btnSave";
|
|
||||||
btnSave.Size = new Size(276, 36);
|
|
||||||
btnSave.TabIndex = 28;
|
|
||||||
btnSave.Text = "保存数据";
|
|
||||||
btnSave.Type = AntdUI.TTypeMini.Primary;
|
|
||||||
//
|
|
||||||
// SizeGuideHeightCtrl
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 17F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
Controls.Add(splitter1);
|
|
||||||
Name = "SizeGuideHeightCtrl";
|
|
||||||
Size = new Size(1280, 640);
|
|
||||||
Load += GuideLineCircleCtrl_Load;
|
|
||||||
splitter1.Panel1.ResumeLayout(false);
|
|
||||||
splitter1.Panel2.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitter1).EndInit();
|
|
||||||
splitter1.ResumeLayout(false);
|
|
||||||
panel1.ResumeLayout(false);
|
|
||||||
panel1.PerformLayout();
|
|
||||||
panel2.ResumeLayout(false);
|
|
||||||
statusStrip1.ResumeLayout(false);
|
|
||||||
statusStrip1.PerformLayout();
|
|
||||||
groupBox2.ResumeLayout(false);
|
|
||||||
groupBox1.ResumeLayout(false);
|
|
||||||
ResumeLayout(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private TextBox tbRectWidth1;
|
|
||||||
private AntdUI.Splitter splitter1;
|
|
||||||
private AntdUI.Panel panel1;
|
|
||||||
private Canvas.UI.FlyCanvas canvas;
|
|
||||||
private AntdUI.Panel panel2;
|
|
||||||
private GuidePanel.CtrlTitleBar ctrlTitleBar;
|
|
||||||
private StatusStrip statusStrip1;
|
|
||||||
private ToolStripStatusLabel lblStatus;
|
|
||||||
private GroupBox groupBox2;
|
|
||||||
|
|
||||||
private Canvas.UI.FlyCanvas flyCanvas1;
|
|
||||||
private AntdUI.Input tbLineX1;
|
|
||||||
private AntdUI.Label label1;
|
|
||||||
private AntdUI.Label label3;
|
|
||||||
private AntdUI.Input tbLineY2;
|
|
||||||
private AntdUI.Label label5;
|
|
||||||
private AntdUI.Input tbLineX2;
|
|
||||||
private AntdUI.Label label4;
|
|
||||||
private AntdUI.Input tbLineY1;
|
|
||||||
private AntdUI.Label label7;
|
|
||||||
private AntdUI.Label label6;
|
|
||||||
private AntdUI.Input tbwidth;
|
|
||||||
private AntdUI.Input tbheight;
|
|
||||||
private GroupBox groupBox1;
|
|
||||||
private AntdUI.Label label2;
|
|
||||||
private AntdUI.Input CamName;
|
|
||||||
private AntdUI.Button button1;
|
|
||||||
private AntdUI.Label label8;
|
|
||||||
private AntdUI.Switch switch1;
|
|
||||||
private AntdUI.Button button2;
|
|
||||||
private AntdUI.Button button3;
|
|
||||||
private AntdUI.Label lblElapsed;
|
|
||||||
private AntdUI.Label label9;
|
|
||||||
private AntdUI.Label lblResult;
|
|
||||||
private AntdUI.Label label12;
|
|
||||||
private AntdUI.Button btnSave;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,346 +0,0 @@
|
|||||||
using CanFly.Canvas.Helper;
|
|
||||||
using CanFly.Canvas.Shape;
|
|
||||||
using CanFly.Canvas.UI;
|
|
||||||
using CanFly.Helper;
|
|
||||||
using HalconDotNet;
|
|
||||||
using OpenCvSharp;
|
|
||||||
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 CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
public partial class SizeGuideHeightCtrl : SizeBaseGuideControl
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private FlyShape? _line;
|
|
||||||
|
|
||||||
|
|
||||||
private float _lineX1;
|
|
||||||
private float _lineY1;
|
|
||||||
private float _lineX2;
|
|
||||||
private float _lineY2;
|
|
||||||
float width, height;
|
|
||||||
private float _lineWidth;
|
|
||||||
private PointF[] _rectPoints = new PointF[4];
|
|
||||||
//private float _LineLX=new float();
|
|
||||||
//private float _LineLY =new float();
|
|
||||||
//private float _LineRX =new float();
|
|
||||||
//private float _LineRY =new float();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected override string GetScriptFileName() => "HeightMeasure.hdvp";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public SizeGuideHeightCtrl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
this.canvas.mouseMoved += Canvas_mouseMoved;
|
|
||||||
this.canvas.OnShapeUpdateEvent += UpdateShape;
|
|
||||||
this.canvas.selectionChanged += Canvas_selectionChanged;
|
|
||||||
|
|
||||||
this.canvas.OnShapeMoving += Canvas_OnShapeMoving;
|
|
||||||
this.canvas.newShape += Canvas_newShape;
|
|
||||||
|
|
||||||
this.ctrlTitleBar.OnCloseClicked += OnControlClose;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected override void UpdateShape(FlyShape shape)
|
|
||||||
{
|
|
||||||
switch (shape.ShapeType)
|
|
||||||
{
|
|
||||||
case ShapeTypeEnum.Rectangle:
|
|
||||||
this._line = shape;
|
|
||||||
|
|
||||||
var pts = this._line.Points;
|
|
||||||
|
|
||||||
_lineX1 = pts[0].X;
|
|
||||||
_lineY1 = pts[0].Y;
|
|
||||||
_lineX2 = pts[1].X;
|
|
||||||
_lineY2 = pts[1].Y;
|
|
||||||
_lineWidth = shape.LineVirtualRectWidth;
|
|
||||||
_rectPoints = shape.LineVirtualRectPoints;
|
|
||||||
//_LineLX = (shape.LineVirtualRectPoints[0].X + shape.LineVirtualRectPoints[3].X) / 2;
|
|
||||||
//_LineLY = (shape.LineVirtualRectPoints[0].Y + shape.LineVirtualRectPoints[3].Y) / 2;
|
|
||||||
//_LineRX = (shape.LineVirtualRectPoints[1].X + shape.LineVirtualRectPoints[2].X) / 2;
|
|
||||||
//_LineRY = (shape.LineVirtualRectPoints[1].Y + shape.LineVirtualRectPoints[2].Y) / 2;
|
|
||||||
|
|
||||||
width = Math.Abs(_lineX2 - _lineX1);
|
|
||||||
height = Math.Abs(_lineY2 - _lineY1);
|
|
||||||
|
|
||||||
|
|
||||||
tbLineX1.Text = _lineX1.ToString("F3");
|
|
||||||
tbLineY1.Text = _lineY1.ToString("F3");
|
|
||||||
tbLineX2.Text = _lineX2.ToString("F3");
|
|
||||||
tbLineY2.Text = _lineY2.ToString("F3");
|
|
||||||
tbwidth.Text = width.ToString();
|
|
||||||
tbheight.Text = height.ToString();
|
|
||||||
// NumRectWidth1.Value = (decimal)_lineWidth;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void GuideLineCircleCtrl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_mouseMoved(PointF pos)
|
|
||||||
{
|
|
||||||
if (InvokeRequired)
|
|
||||||
{
|
|
||||||
Invoke(Canvas_mouseMoved, pos);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lblStatus.Text = $"X:{pos.X}, Y:{pos.Y}";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_selectionChanged(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
//if (shapes.Count != 1)
|
|
||||||
//{
|
|
||||||
// // panelGuide.Controls.Clear();
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
//SwitchGuideForm(shapes[0].ShapeType);
|
|
||||||
// Canvas_OnShapeUpdateEvent(shapes[0]);
|
|
||||||
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_OnShapeMoving(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnCreateLine_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
tbLineX1.Text = string.Empty;
|
|
||||||
tbLineY1.Text = string.Empty;
|
|
||||||
tbLineX2.Text = string.Empty;
|
|
||||||
tbLineY2.Text = string.Empty; ;
|
|
||||||
tbwidth.Text = string.Empty; ;
|
|
||||||
tbheight.Text = string.Empty; ;
|
|
||||||
this.canvas.Shapes.RemoveAll(shp => shp.ShapeType == ShapeTypeEnum.Rectangle);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
this.canvas.StartDraw(ShapeTypeEnum.Rectangle);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnLoadImage_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenImageFile(bitmap =>
|
|
||||||
{
|
|
||||||
this.canvas.LoadPixmap(bitmap);
|
|
||||||
this.canvas.Enabled = true;
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_newShape()
|
|
||||||
{
|
|
||||||
this.canvas.StopDraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnExecute_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.tbLineX1.Text.Trim().Length == 0)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先创建矩形");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.canvas.OutsideShapes.Clear();
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
|
|
||||||
|
|
||||||
flag = new List<double>();
|
|
||||||
|
|
||||||
Line1Para = new List<double>();
|
|
||||||
Line2Para = new List<double>();
|
|
||||||
iHeight = new List<double>();
|
|
||||||
Dictionary<string, HObject> inputImg = new Dictionary<string, HObject>();
|
|
||||||
|
|
||||||
if (hImage == null)
|
|
||||||
{
|
|
||||||
HOperatorSet.ReadImage(out hImage, CurrentImageFile);
|
|
||||||
}
|
|
||||||
inputImg["INPUT_Image"] = hImage;
|
|
||||||
|
|
||||||
|
|
||||||
Dictionary<string, HTuple> inputPara = new Dictionary<string, HTuple>();
|
|
||||||
|
|
||||||
|
|
||||||
inputPara["row"] = _lineY1;
|
|
||||||
inputPara["column"] = _lineX1;
|
|
||||||
inputPara["Width"] = width;
|
|
||||||
inputPara["Height"] = height;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<string> outputKeys = new List<string>()
|
|
||||||
{
|
|
||||||
"OUTPUT_PreTreatedImage",
|
|
||||||
"OUTPUT_Flag",
|
|
||||||
|
|
||||||
"Line1Para",
|
|
||||||
"Line2Para",
|
|
||||||
"iHeight"
|
|
||||||
};
|
|
||||||
|
|
||||||
ExecuteHScript(
|
|
||||||
inputImg,
|
|
||||||
inputPara,
|
|
||||||
outputKeys);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
List<double> flag = new List<double>();
|
|
||||||
List<double> Line1Para = new List<double>();
|
|
||||||
List<double> Line2Para = new List<double>();
|
|
||||||
|
|
||||||
List<double> iHeight = new List<double>();
|
|
||||||
|
|
||||||
|
|
||||||
protected override void OnExecuteHScriptResult(
|
|
||||||
bool success,
|
|
||||||
Dictionary<string, HTuple> resultDic,
|
|
||||||
int timeElasped)
|
|
||||||
{
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
"OUTPUT_Flag",
|
|
||||||
"RXCenter",
|
|
||||||
"RYCenter",
|
|
||||||
"RRadius"
|
|
||||||
*/
|
|
||||||
|
|
||||||
flag = resultDic["OUTPUT_Flag"].HTupleToDouble();
|
|
||||||
|
|
||||||
Line1Para = resultDic["Line1Para"].HTupleToDouble();
|
|
||||||
Line2Para = resultDic["Line2Para"].HTupleToDouble();
|
|
||||||
// EndRow = resultDic["EndRow"].HTupleToDouble();
|
|
||||||
//EndCloumn = resultDic["EndColumn"].HTupleToDouble();
|
|
||||||
iHeight = resultDic["iHeight"].HTupleToDouble();
|
|
||||||
|
|
||||||
if (flag.Count > 0)
|
|
||||||
{
|
|
||||||
lblResult.Text = flag[0].ToString();
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lblResult.Text = "无";
|
|
||||||
}
|
|
||||||
if (flag.Count > 0 && Line1Para.Count == 4 && Line2Para.Count == 4 && iHeight.Count > 0)
|
|
||||||
{
|
|
||||||
float width = 0;
|
|
||||||
this.canvas.DrawLine(new PointF((float)Line1Para[1], (float)Line1Para[0]), new PointF((float)Line1Para[3], (float)Line1Para[2]), 0);
|
|
||||||
this.canvas.DrawLine(new PointF((float)Line2Para[1], (float)Line2Para[0]), new PointF((float)Line2Para[3], (float)Line2Para[2]), 0);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
lblElapsed.Text = $"{timeElasped} ms";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnSave_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (lblResult.Text.Equals("无"))
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先进行绘制");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (lblResult.Text != "0")
|
|
||||||
{
|
|
||||||
MessageBox.Show("测量计算错误,无法保存");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string input = $"row:{string.Join(";", _lineY1)};column:{string.Join(";", _lineX1)};" +
|
|
||||||
$"Width:{string.Join(";", width)};Height:{string.Join(";", height)}";
|
|
||||||
|
|
||||||
string output = $"iHeight:{string.Join(";", iHeight[0])}";
|
|
||||||
DataToTriggerEvent(input, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void tbLineX1_TextChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="canvas.OutsideShapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="canvas.Shapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
||||||
550
CanFly/UI/SizePanel/SizeGuideLineCircleCtrl.Designer.cs
generated
@@ -1,550 +0,0 @@
|
|||||||
namespace CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
partial class SizeGuideLineCircleCtrl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SizeGuideLineCircleCtrl));
|
|
||||||
lblElapsed = new Label();
|
|
||||||
label4 = new Label();
|
|
||||||
splitContainer = new SplitContainer();
|
|
||||||
panelGuide = new Panel();
|
|
||||||
lblDistance = new Label();
|
|
||||||
label17 = new Label();
|
|
||||||
lblResult = new Label();
|
|
||||||
label15 = new Label();
|
|
||||||
btnCreateLine = new Button();
|
|
||||||
btnCreateCircle = new Button();
|
|
||||||
btnLoadImage = new Button();
|
|
||||||
label9 = new Label();
|
|
||||||
btnExecute = new Button();
|
|
||||||
label10 = new Label();
|
|
||||||
groupBox2 = new GroupBox();
|
|
||||||
NumRectWidth1 = new NumericUpDown();
|
|
||||||
label11 = new Label();
|
|
||||||
tbLineX2 = new TextBox();
|
|
||||||
label8 = new Label();
|
|
||||||
tbLineY2 = new TextBox();
|
|
||||||
label5 = new Label();
|
|
||||||
tbLineX1 = new TextBox();
|
|
||||||
tbLineY1 = new TextBox();
|
|
||||||
label6 = new Label();
|
|
||||||
label7 = new Label();
|
|
||||||
groupBox1 = new GroupBox();
|
|
||||||
tbCircleX = new TextBox();
|
|
||||||
tbCircleY = new TextBox();
|
|
||||||
tbCircleR = new TextBox();
|
|
||||||
label3 = new Label();
|
|
||||||
label2 = new Label();
|
|
||||||
label1 = new Label();
|
|
||||||
ctrlTitleBar = new SizeCtrlTitleBar();
|
|
||||||
panel1 = new Panel();
|
|
||||||
canvas = new Canvas.UI.FlyCanvas();
|
|
||||||
statusStrip1 = new StatusStrip();
|
|
||||||
lblStatus = new ToolStripStatusLabel();
|
|
||||||
btnSave = new Button();
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer).BeginInit();
|
|
||||||
splitContainer.Panel1.SuspendLayout();
|
|
||||||
splitContainer.Panel2.SuspendLayout();
|
|
||||||
splitContainer.SuspendLayout();
|
|
||||||
panelGuide.SuspendLayout();
|
|
||||||
groupBox2.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)NumRectWidth1).BeginInit();
|
|
||||||
groupBox1.SuspendLayout();
|
|
||||||
panel1.SuspendLayout();
|
|
||||||
statusStrip1.SuspendLayout();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// lblElapsed
|
|
||||||
//
|
|
||||||
lblElapsed.AutoSize = true;
|
|
||||||
lblElapsed.Location = new Point(50, 328);
|
|
||||||
lblElapsed.Name = "lblElapsed";
|
|
||||||
lblElapsed.Size = new Size(32, 17);
|
|
||||||
lblElapsed.TabIndex = 9;
|
|
||||||
lblElapsed.Text = "0ms";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
label4.AutoSize = true;
|
|
||||||
label4.Location = new Point(0, 328);
|
|
||||||
label4.Name = "label4";
|
|
||||||
label4.Size = new Size(44, 17);
|
|
||||||
label4.TabIndex = 8;
|
|
||||||
label4.Text = "耗时:";
|
|
||||||
//
|
|
||||||
// splitContainer
|
|
||||||
//
|
|
||||||
splitContainer.Dock = DockStyle.Fill;
|
|
||||||
splitContainer.Location = new Point(0, 0);
|
|
||||||
splitContainer.Name = "splitContainer";
|
|
||||||
//
|
|
||||||
// splitContainer.Panel1
|
|
||||||
//
|
|
||||||
splitContainer.Panel1.Controls.Add(panelGuide);
|
|
||||||
splitContainer.Panel1MinSize = 150;
|
|
||||||
//
|
|
||||||
// splitContainer.Panel2
|
|
||||||
//
|
|
||||||
splitContainer.Panel2.Controls.Add(panel1);
|
|
||||||
splitContainer.Size = new Size(1280, 640);
|
|
||||||
splitContainer.SplitterDistance = 200;
|
|
||||||
splitContainer.TabIndex = 11;
|
|
||||||
//
|
|
||||||
// panelGuide
|
|
||||||
//
|
|
||||||
panelGuide.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
panelGuide.Controls.Add(btnSave);
|
|
||||||
panelGuide.Controls.Add(lblDistance);
|
|
||||||
panelGuide.Controls.Add(label17);
|
|
||||||
panelGuide.Controls.Add(lblResult);
|
|
||||||
panelGuide.Controls.Add(label15);
|
|
||||||
panelGuide.Controls.Add(btnCreateLine);
|
|
||||||
panelGuide.Controls.Add(btnCreateCircle);
|
|
||||||
panelGuide.Controls.Add(btnLoadImage);
|
|
||||||
panelGuide.Controls.Add(label9);
|
|
||||||
panelGuide.Controls.Add(btnExecute);
|
|
||||||
panelGuide.Controls.Add(label10);
|
|
||||||
panelGuide.Controls.Add(groupBox2);
|
|
||||||
panelGuide.Controls.Add(groupBox1);
|
|
||||||
panelGuide.Controls.Add(ctrlTitleBar);
|
|
||||||
panelGuide.Dock = DockStyle.Fill;
|
|
||||||
panelGuide.Location = new Point(0, 0);
|
|
||||||
panelGuide.Name = "panelGuide";
|
|
||||||
panelGuide.Size = new Size(200, 640);
|
|
||||||
panelGuide.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// lblDistance
|
|
||||||
//
|
|
||||||
lblDistance.AutoSize = true;
|
|
||||||
lblDistance.Location = new Point(54, 505);
|
|
||||||
lblDistance.Name = "lblDistance";
|
|
||||||
lblDistance.Size = new Size(15, 17);
|
|
||||||
lblDistance.TabIndex = 29;
|
|
||||||
lblDistance.Text = "0";
|
|
||||||
//
|
|
||||||
// label17
|
|
||||||
//
|
|
||||||
label17.AutoSize = true;
|
|
||||||
label17.Location = new Point(6, 505);
|
|
||||||
label17.Name = "label17";
|
|
||||||
label17.Size = new Size(44, 17);
|
|
||||||
label17.TabIndex = 28;
|
|
||||||
label17.Text = "距离:";
|
|
||||||
//
|
|
||||||
// lblResult
|
|
||||||
//
|
|
||||||
lblResult.AutoSize = true;
|
|
||||||
lblResult.Location = new Point(54, 479);
|
|
||||||
lblResult.Name = "lblResult";
|
|
||||||
lblResult.Size = new Size(20, 17);
|
|
||||||
lblResult.TabIndex = 27;
|
|
||||||
lblResult.Text = "无";
|
|
||||||
//
|
|
||||||
// label15
|
|
||||||
//
|
|
||||||
label15.AutoSize = true;
|
|
||||||
label15.Location = new Point(6, 479);
|
|
||||||
label15.Name = "label15";
|
|
||||||
label15.Size = new Size(44, 17);
|
|
||||||
label15.TabIndex = 26;
|
|
||||||
label15.Text = "结果:";
|
|
||||||
//
|
|
||||||
// btnCreateLine
|
|
||||||
//
|
|
||||||
btnCreateLine.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnCreateLine.Location = new Point(6, 406);
|
|
||||||
btnCreateLine.Name = "btnCreateLine";
|
|
||||||
btnCreateLine.Size = new Size(186, 32);
|
|
||||||
btnCreateLine.TabIndex = 20;
|
|
||||||
btnCreateLine.Text = "创建直线";
|
|
||||||
btnCreateLine.UseVisualStyleBackColor = true;
|
|
||||||
btnCreateLine.Click += btnCreateLine_Click;
|
|
||||||
//
|
|
||||||
// btnCreateCircle
|
|
||||||
//
|
|
||||||
btnCreateCircle.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnCreateCircle.Location = new Point(6, 368);
|
|
||||||
btnCreateCircle.Name = "btnCreateCircle";
|
|
||||||
btnCreateCircle.Size = new Size(186, 32);
|
|
||||||
btnCreateCircle.TabIndex = 19;
|
|
||||||
btnCreateCircle.Text = "创建圆形";
|
|
||||||
btnCreateCircle.UseVisualStyleBackColor = true;
|
|
||||||
btnCreateCircle.Click += btnCreateCircle_Click;
|
|
||||||
//
|
|
||||||
// btnLoadImage
|
|
||||||
//
|
|
||||||
btnLoadImage.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnLoadImage.Location = new Point(6, 330);
|
|
||||||
btnLoadImage.Name = "btnLoadImage";
|
|
||||||
btnLoadImage.Size = new Size(186, 32);
|
|
||||||
btnLoadImage.TabIndex = 18;
|
|
||||||
btnLoadImage.Text = "打开图片";
|
|
||||||
btnLoadImage.UseVisualStyleBackColor = true;
|
|
||||||
btnLoadImage.Click += btnLoadImage_Click;
|
|
||||||
//
|
|
||||||
// label9
|
|
||||||
//
|
|
||||||
label9.AutoSize = true;
|
|
||||||
label9.Location = new Point(56, 525);
|
|
||||||
label9.Name = "label9";
|
|
||||||
label9.Size = new Size(32, 17);
|
|
||||||
label9.TabIndex = 17;
|
|
||||||
label9.Text = "0ms";
|
|
||||||
//
|
|
||||||
// btnExecute
|
|
||||||
//
|
|
||||||
btnExecute.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnExecute.Location = new Point(6, 444);
|
|
||||||
btnExecute.Name = "btnExecute";
|
|
||||||
btnExecute.Size = new Size(186, 32);
|
|
||||||
btnExecute.TabIndex = 15;
|
|
||||||
btnExecute.Text = "执行";
|
|
||||||
btnExecute.UseVisualStyleBackColor = true;
|
|
||||||
btnExecute.Click += btnExecute_Click;
|
|
||||||
//
|
|
||||||
// label10
|
|
||||||
//
|
|
||||||
label10.AutoSize = true;
|
|
||||||
label10.Location = new Point(6, 525);
|
|
||||||
label10.Name = "label10";
|
|
||||||
label10.Size = new Size(44, 17);
|
|
||||||
label10.TabIndex = 16;
|
|
||||||
label10.Text = "耗时:";
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
groupBox2.Controls.Add(NumRectWidth1);
|
|
||||||
groupBox2.Controls.Add(label11);
|
|
||||||
groupBox2.Controls.Add(tbLineX2);
|
|
||||||
groupBox2.Controls.Add(label8);
|
|
||||||
groupBox2.Controls.Add(tbLineY2);
|
|
||||||
groupBox2.Controls.Add(label5);
|
|
||||||
groupBox2.Controls.Add(tbLineX1);
|
|
||||||
groupBox2.Controls.Add(tbLineY1);
|
|
||||||
groupBox2.Controls.Add(label6);
|
|
||||||
groupBox2.Controls.Add(label7);
|
|
||||||
groupBox2.Dock = DockStyle.Top;
|
|
||||||
groupBox2.Location = new Point(0, 152);
|
|
||||||
groupBox2.Name = "groupBox2";
|
|
||||||
groupBox2.Size = new Size(198, 172);
|
|
||||||
groupBox2.TabIndex = 13;
|
|
||||||
groupBox2.TabStop = false;
|
|
||||||
groupBox2.Text = "线参数";
|
|
||||||
//
|
|
||||||
// NumRectWidth1
|
|
||||||
//
|
|
||||||
NumRectWidth1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
NumRectWidth1.Location = new Point(56, 138);
|
|
||||||
NumRectWidth1.Maximum = new decimal(new int[] { 9000, 0, 0, 0 });
|
|
||||||
NumRectWidth1.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
|
|
||||||
NumRectWidth1.Name = "NumRectWidth1";
|
|
||||||
NumRectWidth1.Size = new Size(136, 23);
|
|
||||||
NumRectWidth1.TabIndex = 13;
|
|
||||||
NumRectWidth1.Value = new decimal(new int[] { 1, 0, 0, 0 });
|
|
||||||
//
|
|
||||||
// label11
|
|
||||||
//
|
|
||||||
label11.AutoSize = true;
|
|
||||||
label11.Location = new Point(6, 140);
|
|
||||||
label11.Name = "label11";
|
|
||||||
label11.Size = new Size(35, 17);
|
|
||||||
label11.TabIndex = 12;
|
|
||||||
label11.Text = "宽度:";
|
|
||||||
//
|
|
||||||
// tbLineX2
|
|
||||||
//
|
|
||||||
tbLineX2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineX2.Location = new Point(56, 80);
|
|
||||||
tbLineX2.Name = "tbLineX2";
|
|
||||||
tbLineX2.Size = new Size(136, 23);
|
|
||||||
tbLineX2.TabIndex = 9;
|
|
||||||
//
|
|
||||||
// label8
|
|
||||||
//
|
|
||||||
label8.AutoSize = true;
|
|
||||||
label8.Location = new Point(6, 83);
|
|
||||||
label8.Name = "label8";
|
|
||||||
label8.Size = new Size(26, 17);
|
|
||||||
label8.TabIndex = 8;
|
|
||||||
label8.Text = "X2:";
|
|
||||||
//
|
|
||||||
// tbLineY2
|
|
||||||
//
|
|
||||||
tbLineY2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineY2.Location = new Point(56, 109);
|
|
||||||
tbLineY2.Name = "tbLineY2";
|
|
||||||
tbLineY2.Size = new Size(136, 23);
|
|
||||||
tbLineY2.TabIndex = 7;
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
label5.AutoSize = true;
|
|
||||||
label5.Location = new Point(6, 112);
|
|
||||||
label5.Name = "label5";
|
|
||||||
label5.Size = new Size(25, 17);
|
|
||||||
label5.TabIndex = 6;
|
|
||||||
label5.Text = "Y2:";
|
|
||||||
//
|
|
||||||
// tbLineX1
|
|
||||||
//
|
|
||||||
tbLineX1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineX1.Location = new Point(56, 22);
|
|
||||||
tbLineX1.Name = "tbLineX1";
|
|
||||||
tbLineX1.Size = new Size(136, 23);
|
|
||||||
tbLineX1.TabIndex = 5;
|
|
||||||
//
|
|
||||||
// tbLineY1
|
|
||||||
//
|
|
||||||
tbLineY1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineY1.Location = new Point(56, 51);
|
|
||||||
tbLineY1.Name = "tbLineY1";
|
|
||||||
tbLineY1.Size = new Size(136, 23);
|
|
||||||
tbLineY1.TabIndex = 4;
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
label6.AutoSize = true;
|
|
||||||
label6.Location = new Point(6, 54);
|
|
||||||
label6.Name = "label6";
|
|
||||||
label6.Size = new Size(25, 17);
|
|
||||||
label6.TabIndex = 1;
|
|
||||||
label6.Text = "Y1:";
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
label7.AutoSize = true;
|
|
||||||
label7.Location = new Point(6, 25);
|
|
||||||
label7.Name = "label7";
|
|
||||||
label7.Size = new Size(26, 17);
|
|
||||||
label7.TabIndex = 0;
|
|
||||||
label7.Text = "X1:";
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
groupBox1.Controls.Add(tbCircleX);
|
|
||||||
groupBox1.Controls.Add(tbCircleY);
|
|
||||||
groupBox1.Controls.Add(tbCircleR);
|
|
||||||
groupBox1.Controls.Add(label3);
|
|
||||||
groupBox1.Controls.Add(label2);
|
|
||||||
groupBox1.Controls.Add(label1);
|
|
||||||
groupBox1.Dock = DockStyle.Top;
|
|
||||||
groupBox1.Location = new Point(0, 36);
|
|
||||||
groupBox1.Name = "groupBox1";
|
|
||||||
groupBox1.Size = new Size(198, 116);
|
|
||||||
groupBox1.TabIndex = 12;
|
|
||||||
groupBox1.TabStop = false;
|
|
||||||
groupBox1.Text = "圆参数";
|
|
||||||
//
|
|
||||||
// tbCircleX
|
|
||||||
//
|
|
||||||
tbCircleX.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbCircleX.Location = new Point(56, 22);
|
|
||||||
tbCircleX.Name = "tbCircleX";
|
|
||||||
tbCircleX.Size = new Size(136, 23);
|
|
||||||
tbCircleX.TabIndex = 5;
|
|
||||||
//
|
|
||||||
// tbCircleY
|
|
||||||
//
|
|
||||||
tbCircleY.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbCircleY.Location = new Point(56, 51);
|
|
||||||
tbCircleY.Name = "tbCircleY";
|
|
||||||
tbCircleY.Size = new Size(136, 23);
|
|
||||||
tbCircleY.TabIndex = 4;
|
|
||||||
//
|
|
||||||
// tbCircleR
|
|
||||||
//
|
|
||||||
tbCircleR.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbCircleR.Location = new Point(56, 80);
|
|
||||||
tbCircleR.Name = "tbCircleR";
|
|
||||||
tbCircleR.Size = new Size(136, 23);
|
|
||||||
tbCircleR.TabIndex = 3;
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
label3.AutoSize = true;
|
|
||||||
label3.Location = new Point(3, 83);
|
|
||||||
label3.Name = "label3";
|
|
||||||
label3.Size = new Size(44, 17);
|
|
||||||
label3.TabIndex = 2;
|
|
||||||
label3.Text = "半径:";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
label2.AutoSize = true;
|
|
||||||
label2.Location = new Point(6, 54);
|
|
||||||
label2.Name = "label2";
|
|
||||||
label2.Size = new Size(18, 17);
|
|
||||||
label2.TabIndex = 1;
|
|
||||||
label2.Text = "Y:";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
label1.AutoSize = true;
|
|
||||||
label1.Location = new Point(6, 25);
|
|
||||||
label1.Name = "label1";
|
|
||||||
label1.Size = new Size(19, 17);
|
|
||||||
label1.TabIndex = 0;
|
|
||||||
label1.Text = "X:";
|
|
||||||
//
|
|
||||||
// ctrlTitleBar
|
|
||||||
//
|
|
||||||
ctrlTitleBar.Dock = DockStyle.Top;
|
|
||||||
ctrlTitleBar.Location = new Point(0, 0);
|
|
||||||
ctrlTitleBar.MinimumSize = new Size(0, 36);
|
|
||||||
ctrlTitleBar.Name = "ctrlTitleBar";
|
|
||||||
ctrlTitleBar.Padding = new Padding(3);
|
|
||||||
ctrlTitleBar.Size = new Size(198, 36);
|
|
||||||
ctrlTitleBar.TabIndex = 11;
|
|
||||||
ctrlTitleBar.Title = "线圆测量";
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
panel1.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
panel1.Controls.Add(canvas);
|
|
||||||
panel1.Controls.Add(statusStrip1);
|
|
||||||
panel1.Dock = DockStyle.Fill;
|
|
||||||
panel1.Location = new Point(0, 0);
|
|
||||||
panel1.Name = "panel1";
|
|
||||||
panel1.Size = new Size(1076, 640);
|
|
||||||
panel1.TabIndex = 1;
|
|
||||||
//
|
|
||||||
// canvas
|
|
||||||
//
|
|
||||||
canvas.AllowMultiSelect = false;
|
|
||||||
canvas.CreateMode = Canvas.Shape.ShapeTypeEnum.Polygon;
|
|
||||||
canvas.Dock = DockStyle.Fill;
|
|
||||||
canvas.Enabled = false;
|
|
||||||
canvas.FillDrawing = false;
|
|
||||||
canvas.Location = new Point(0, 0);
|
|
||||||
canvas.Margin = new Padding(2);
|
|
||||||
canvas.Name = "canvas";
|
|
||||||
canvas.OutsideShapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.OutsideShapes");
|
|
||||||
canvas.Scale = 1F;
|
|
||||||
canvas.Shapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.Shapes");
|
|
||||||
canvas.Size = new Size(1074, 616);
|
|
||||||
canvas.TabIndex = 2;
|
|
||||||
//
|
|
||||||
// statusStrip1
|
|
||||||
//
|
|
||||||
statusStrip1.Items.AddRange(new ToolStripItem[] { lblStatus });
|
|
||||||
statusStrip1.Location = new Point(0, 616);
|
|
||||||
statusStrip1.Name = "statusStrip1";
|
|
||||||
statusStrip1.Size = new Size(1074, 22);
|
|
||||||
statusStrip1.TabIndex = 1;
|
|
||||||
statusStrip1.Text = "statusStrip1";
|
|
||||||
//
|
|
||||||
// lblStatus
|
|
||||||
//
|
|
||||||
lblStatus.Name = "lblStatus";
|
|
||||||
lblStatus.Size = new Size(44, 17);
|
|
||||||
lblStatus.Text = " ";
|
|
||||||
//
|
|
||||||
// btnSave
|
|
||||||
//
|
|
||||||
btnSave.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnSave.Location = new Point(6, 545);
|
|
||||||
btnSave.Name = "btnSave";
|
|
||||||
btnSave.Size = new Size(186, 32);
|
|
||||||
btnSave.TabIndex = 30;
|
|
||||||
btnSave.Text = "保存数据";
|
|
||||||
btnSave.UseVisualStyleBackColor = true;
|
|
||||||
btnSave.Click += btnSave_Click;
|
|
||||||
//
|
|
||||||
// GuideLineCircleCtrl
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 17F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
Controls.Add(splitContainer);
|
|
||||||
Controls.Add(lblElapsed);
|
|
||||||
Controls.Add(label4);
|
|
||||||
Name = "GuideLineCircleCtrl";
|
|
||||||
Size = new Size(1280, 640);
|
|
||||||
Load += GuideLineCircleCtrl_Load;
|
|
||||||
splitContainer.Panel1.ResumeLayout(false);
|
|
||||||
splitContainer.Panel2.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer).EndInit();
|
|
||||||
splitContainer.ResumeLayout(false);
|
|
||||||
panelGuide.ResumeLayout(false);
|
|
||||||
panelGuide.PerformLayout();
|
|
||||||
groupBox2.ResumeLayout(false);
|
|
||||||
groupBox2.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)NumRectWidth1).EndInit();
|
|
||||||
groupBox1.ResumeLayout(false);
|
|
||||||
groupBox1.PerformLayout();
|
|
||||||
panel1.ResumeLayout(false);
|
|
||||||
panel1.PerformLayout();
|
|
||||||
statusStrip1.ResumeLayout(false);
|
|
||||||
statusStrip1.PerformLayout();
|
|
||||||
ResumeLayout(false);
|
|
||||||
PerformLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private Label lblElapsed;
|
|
||||||
private Label label4;
|
|
||||||
|
|
||||||
private SplitContainer splitContainer;
|
|
||||||
private Panel panelGuide;
|
|
||||||
private Panel panel1;
|
|
||||||
private Canvas.UI.FlyCanvas canvas;
|
|
||||||
private StatusStrip statusStrip1;
|
|
||||||
private ToolStripStatusLabel lblStatus;
|
|
||||||
private GroupBox groupBox2;
|
|
||||||
private TextBox tbLineX2;
|
|
||||||
private Label label8;
|
|
||||||
private TextBox tbLineY2;
|
|
||||||
private Label label5;
|
|
||||||
private TextBox tbLineX1;
|
|
||||||
private TextBox tbLineY1;
|
|
||||||
private Label label6;
|
|
||||||
private Label label7;
|
|
||||||
private GroupBox groupBox1;
|
|
||||||
private TextBox tbCircleX;
|
|
||||||
private TextBox tbCircleY;
|
|
||||||
private TextBox tbCircleR;
|
|
||||||
private Label label3;
|
|
||||||
private Label label2;
|
|
||||||
private Label label1;
|
|
||||||
private SizeCtrlTitleBar ctrlTitleBar;
|
|
||||||
private Button btnCreateCircle;
|
|
||||||
private Button btnLoadImage;
|
|
||||||
private Label label9;
|
|
||||||
private Button btnExecute;
|
|
||||||
private Label label10;
|
|
||||||
private Button btnCreateLine;
|
|
||||||
private TextBox tbRectWidth1;
|
|
||||||
private Label label11;
|
|
||||||
private NumericUpDown NumRectWidth1;
|
|
||||||
private Label lblDistance;
|
|
||||||
private Label label17;
|
|
||||||
private Label lblResult;
|
|
||||||
private Label label15;
|
|
||||||
private Button btnSave;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,449 +0,0 @@
|
|||||||
using CanFly.Canvas.Helper;
|
|
||||||
using CanFly.Canvas.Shape;
|
|
||||||
using CanFly.Canvas.UI;
|
|
||||||
using CanFly.Helper;
|
|
||||||
using HalconDotNet;
|
|
||||||
using OpenCvSharp;
|
|
||||||
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 CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
public partial class SizeGuideLineCircleCtrl : SizeBaseGuideControl
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
private FlyShape? _circle;
|
|
||||||
private FlyShape? _line;
|
|
||||||
|
|
||||||
|
|
||||||
private float _lineX1;
|
|
||||||
private float _lineY1;
|
|
||||||
private float _lineX2;
|
|
||||||
private float _lineY2;
|
|
||||||
private float _lineWidth;
|
|
||||||
|
|
||||||
|
|
||||||
private float _circleX;
|
|
||||||
private float _circleY;
|
|
||||||
private float _circleR;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected override string GetScriptFileName() => "LineToCircle.hdvp";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public SizeGuideLineCircleCtrl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
this.canvas.mouseMoved += Canvas_mouseMoved;
|
|
||||||
this.canvas.OnShapeUpdateEvent += UpdateShape;
|
|
||||||
this.canvas.selectionChanged += Canvas_selectionChanged;
|
|
||||||
|
|
||||||
this.canvas.OnShapeMoving += Canvas_OnShapeMoving;
|
|
||||||
this.canvas.newShape += Canvas_newShape;
|
|
||||||
|
|
||||||
this.ctrlTitleBar.OnCloseClicked += OnControlClose;
|
|
||||||
|
|
||||||
NumRectWidth1.ValueChanged -= NumRectWidth1_ValueChanged;
|
|
||||||
NumRectWidth1.Value = 40;
|
|
||||||
NumRectWidth1.ValueChanged += NumRectWidth1_ValueChanged;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected override void UpdateShape(FlyShape shape)
|
|
||||||
{
|
|
||||||
switch (shape.ShapeType)
|
|
||||||
{
|
|
||||||
case ShapeTypeEnum.Line:
|
|
||||||
this._line = shape;
|
|
||||||
_line.IsDrawLineVirtualRect = true;
|
|
||||||
var pts = this._line.Points;
|
|
||||||
|
|
||||||
_lineX1 = pts[0].X;
|
|
||||||
_lineY1 = pts[0].Y;
|
|
||||||
_lineX2 = pts[1].X;
|
|
||||||
_lineY2 = pts[1].Y;
|
|
||||||
_lineWidth = shape.LineVirtualRectWidth;
|
|
||||||
|
|
||||||
tbLineX1.Text = _lineX1.ToString("F3");
|
|
||||||
tbLineY1.Text = _lineY1.ToString("F3");
|
|
||||||
tbLineX2.Text = _lineX2.ToString("F3");
|
|
||||||
tbLineY2.Text = _lineY2.ToString("F3");
|
|
||||||
// NumRectWidth1.Value = (decimal)_lineWidth;
|
|
||||||
break;
|
|
||||||
case ShapeTypeEnum.Circle:
|
|
||||||
this._circle = shape;
|
|
||||||
|
|
||||||
_circleX = shape.Points[0].X;
|
|
||||||
_circleY = shape.Points[0].Y;
|
|
||||||
_circleR = PointHelper.Distance(shape.Points[0], shape.Points[1]);
|
|
||||||
|
|
||||||
this.tbCircleX.Text = _circleX.ToString("F3");
|
|
||||||
this.tbCircleY.Text = _circleY.ToString("F3");
|
|
||||||
this.tbCircleR.Text = _circleR.ToString("F3");
|
|
||||||
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void GuideLineCircleCtrl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_mouseMoved(PointF pos)
|
|
||||||
{
|
|
||||||
if (InvokeRequired)
|
|
||||||
{
|
|
||||||
Invoke(Canvas_mouseMoved, pos);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lblStatus.Text = $"X:{pos.X}, Y:{pos.Y}";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_selectionChanged(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
//if (shapes.Count != 1)
|
|
||||||
//{
|
|
||||||
// // panelGuide.Controls.Clear();
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
//SwitchGuideForm(shapes[0].ShapeType);
|
|
||||||
// Canvas_OnShapeUpdateEvent(shapes[0]);
|
|
||||||
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_OnShapeMoving(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnCreateCircle_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.tbCircleX.Text = string.Empty;
|
|
||||||
this.tbCircleY.Text = string.Empty;
|
|
||||||
this.tbCircleR.Text = string.Empty;
|
|
||||||
this.canvas.Shapes.RemoveAll(shp => shp.ShapeType == ShapeTypeEnum.Circle);
|
|
||||||
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
this.canvas.StartDraw(ShapeTypeEnum.Circle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnCreateLine_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
tbLineX1.Text = string.Empty;
|
|
||||||
tbLineY1.Text = string.Empty;
|
|
||||||
tbLineX2.Text = string.Empty;
|
|
||||||
tbLineY2.Text = string.Empty;
|
|
||||||
|
|
||||||
this.canvas.Shapes.RemoveAll(shp => shp.ShapeType == ShapeTypeEnum.Line);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
this.canvas.StartDraw(ShapeTypeEnum.Line);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnLoadImage_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenImageFile(bitmap =>
|
|
||||||
{
|
|
||||||
this.canvas.LoadPixmap(bitmap);
|
|
||||||
this.canvas.Enabled = true;
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_newShape()
|
|
||||||
{
|
|
||||||
this.canvas.StopDraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string strarrayX=string.Empty;
|
|
||||||
string strarrayY=string.Empty;
|
|
||||||
private void btnExecute_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.tbLineX1.Text.Trim().Length == 0)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先创建直线");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.tbLineX1.Text.Trim().Length == 0)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先创建圆形");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.canvas.OutsideShapes.Clear();
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
|
|
||||||
flag = new List<double>();
|
|
||||||
Distance = new List<double>();
|
|
||||||
fRowCenter = new List<double>();
|
|
||||||
fColCenter = new List<double>();
|
|
||||||
fRadius = new List<double>();
|
|
||||||
RowBegin = new List<double>();
|
|
||||||
ColBegin = new List<double>();
|
|
||||||
RowEnd = new List<double>();
|
|
||||||
ColEnd = new List<double>();
|
|
||||||
Dictionary<string, HObject> inputImg = new Dictionary<string, HObject>();
|
|
||||||
|
|
||||||
if (hImage == null)
|
|
||||||
{
|
|
||||||
HOperatorSet.ReadImage(out hImage, CurrentImageFile);
|
|
||||||
}
|
|
||||||
inputImg["INPUT_Image"] = hImage;
|
|
||||||
|
|
||||||
Dictionary<string, HTuple> inputPara = new Dictionary<string, HTuple>();
|
|
||||||
|
|
||||||
PointF[] Points = this._line.LineVirtualRectPoints;
|
|
||||||
PointF Point1 = Points[0];
|
|
||||||
PointF Point2 = Points[1];
|
|
||||||
PointF Point3 = Points[2];
|
|
||||||
PointF Point4 = Points[3];
|
|
||||||
PointF Point5 = Points[0];
|
|
||||||
|
|
||||||
float x1 = Point1.X;
|
|
||||||
float y1 = Point1.Y;
|
|
||||||
|
|
||||||
float x2 = Point2.X;
|
|
||||||
float y2 = Point2.Y;
|
|
||||||
|
|
||||||
float x3 = Point3.X;
|
|
||||||
float y3 = Point3.Y;
|
|
||||||
|
|
||||||
float x4 = Point4.X;
|
|
||||||
float y4 = Point4.Y;
|
|
||||||
|
|
||||||
float x5 = Point5.X;
|
|
||||||
float y5 = Point5.Y;
|
|
||||||
|
|
||||||
|
|
||||||
float[] arrayX = new float[] { x1, x2, x3, x4, x5 };
|
|
||||||
HTuple hTupleArrayX = new HTuple(arrayX);
|
|
||||||
|
|
||||||
float[] arrayY = new float[] { y1, y2, y3, y4, y5 };
|
|
||||||
HTuple hTupleArrayY = new HTuple(arrayY);
|
|
||||||
|
|
||||||
strarrayX=string.Join(",", arrayX);
|
|
||||||
strarrayY=string.Join(",", arrayY);
|
|
||||||
|
|
||||||
inputPara["LX"] = _lineX1;
|
|
||||||
inputPara["LY"] = _lineY1;
|
|
||||||
inputPara["RX"] = _lineX2;
|
|
||||||
inputPara["RY"] = _lineY2;
|
|
||||||
inputPara["XCenter"] = _circleX;
|
|
||||||
inputPara["YCenter"] = _circleY;
|
|
||||||
inputPara["Radius"] = _circleR;
|
|
||||||
inputPara["Line_XRect"] = hTupleArrayX;
|
|
||||||
inputPara["Line_YRect"] = hTupleArrayY;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<string> outputKeys = new List<string>()
|
|
||||||
{
|
|
||||||
"OUTPUT_Flag",
|
|
||||||
"distance",
|
|
||||||
"fRowCenter",
|
|
||||||
"fColCenter",
|
|
||||||
"fRadius",
|
|
||||||
"RowBegin",
|
|
||||||
"ColBegin",
|
|
||||||
"RowEnd",
|
|
||||||
"ColEnd"
|
|
||||||
};
|
|
||||||
|
|
||||||
ExecuteHScript(
|
|
||||||
inputImg,
|
|
||||||
inputPara,
|
|
||||||
outputKeys);
|
|
||||||
|
|
||||||
}
|
|
||||||
List<double> flag = new List<double>();
|
|
||||||
List<double> Distance = new List<double>();
|
|
||||||
List<double> fRowCenter = new List<double>();
|
|
||||||
List<double> fColCenter = new List<double>();
|
|
||||||
List<double> fRadius = new List<double>();
|
|
||||||
List<double> RowBegin = new List<double>();
|
|
||||||
List<double> ColBegin = new List<double>();
|
|
||||||
List<double> RowEnd = new List<double>();
|
|
||||||
List<double> ColEnd = new List<double>();
|
|
||||||
protected override void OnExecuteHScriptResult(
|
|
||||||
bool success,
|
|
||||||
Dictionary<string, HTuple> resultDic,
|
|
||||||
int timeElasped)
|
|
||||||
{
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//"OUTPUT_Flag",
|
|
||||||
// "distance",
|
|
||||||
// "fRowCenter",
|
|
||||||
// "fColCenter",
|
|
||||||
// "fRadius",
|
|
||||||
// "RowBegin",
|
|
||||||
// "ColBegin",
|
|
||||||
// "RowEnd",
|
|
||||||
// "ColEnd"
|
|
||||||
|
|
||||||
flag = resultDic["OUTPUT_Flag"].HTupleToDouble();
|
|
||||||
Distance = resultDic["distance"].HTupleToDouble();
|
|
||||||
fRowCenter = resultDic["fRowCenter"].HTupleToDouble();
|
|
||||||
fColCenter = resultDic["fColCenter"].HTupleToDouble();
|
|
||||||
fRadius = resultDic["fRadius"].HTupleToDouble();
|
|
||||||
RowBegin = resultDic["RowBegin"].HTupleToDouble();
|
|
||||||
ColBegin = resultDic["ColBegin"].HTupleToDouble();
|
|
||||||
RowEnd = resultDic["RowEnd"].HTupleToDouble();
|
|
||||||
ColEnd = resultDic["ColEnd"].HTupleToDouble();
|
|
||||||
|
|
||||||
|
|
||||||
if (flag.Count > 0)
|
|
||||||
{
|
|
||||||
lblResult.Text = flag[0].ToString();
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lblResult.Text = "无";
|
|
||||||
}
|
|
||||||
if (Distance.Count > 0)
|
|
||||||
{
|
|
||||||
lblDistance.Text = Distance[0].ToString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lblDistance.Text = "0";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flag.Count > 0 && Distance.Count > 0 && fRowCenter.Count > 0 && fColCenter.Count > 0 && fRadius.Count > 0 && RowBegin.Count > 0 && ColBegin.Count > 0 && RowEnd.Count > 0 && ColEnd.Count > 0)
|
|
||||||
{
|
|
||||||
float width = 0;
|
|
||||||
this.canvas.DrawLine(new PointF((float)ColBegin[0], (float)RowBegin[0]), new PointF((float)ColEnd[0], (float)RowEnd[0]), width);
|
|
||||||
this.canvas.DrawCircle(new PointF((float)fColCenter[0], (float)fRowCenter[0]), (float)fRadius[0]);
|
|
||||||
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
lblElapsed.Text = $"{timeElasped} ms";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void NumRectWidth1_ValueChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (_line != null)
|
|
||||||
{
|
|
||||||
//_line1.IsDrawLineVirtualRect = true;
|
|
||||||
_line.LineVirtualRectWidth = (float)NumRectWidth1.Value;
|
|
||||||
UpdateShape(_line);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnSave_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (lblResult.Text.Equals("无"))
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先进行绘制");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (lblResult.Text != "0")
|
|
||||||
{
|
|
||||||
MessageBox.Show("测量计算错误,无法保存");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string input = $"LX:{_lineX1};" +
|
|
||||||
$"LY:{_lineY1};" +
|
|
||||||
$"RX:{_lineX2};" +
|
|
||||||
$"RY:{_lineY2};" +
|
|
||||||
$"XCenter:{_circleX};" +
|
|
||||||
$"YCenter:{_circleY};" +
|
|
||||||
$"Radius:{_circleR};" +
|
|
||||||
$"Line_XRect:{strarrayX};"+
|
|
||||||
$"Line_YRect:{strarrayY}";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string result = $"distance:{Distance[0]};";
|
|
||||||
DataToTriggerEvent(input, result);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="canvas.OutsideShapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="canvas.Shapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
||||||
427
CanFly/UI/SizePanel/SizeGuideLineCtrl.Designer.cs
generated
@@ -1,427 +0,0 @@
|
|||||||
namespace CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
partial class SizeGuideLineCtrl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SizeGuideLineCtrl));
|
|
||||||
lblElapsed = new Label();
|
|
||||||
label4 = new Label();
|
|
||||||
splitContainer = new SplitContainer();
|
|
||||||
panelGuide = new Panel();
|
|
||||||
btnSave = new Button();
|
|
||||||
lblResult = new Label();
|
|
||||||
label1 = new Label();
|
|
||||||
btnCreateLine = new Button();
|
|
||||||
btnLoadImage = new Button();
|
|
||||||
label9 = new Label();
|
|
||||||
btnExecute = new Button();
|
|
||||||
label10 = new Label();
|
|
||||||
groupBox2 = new GroupBox();
|
|
||||||
NumRectWidth1 = new NumericUpDown();
|
|
||||||
label11 = new Label();
|
|
||||||
tbLineX2 = new TextBox();
|
|
||||||
label8 = new Label();
|
|
||||||
tbLineY2 = new TextBox();
|
|
||||||
label5 = new Label();
|
|
||||||
tbLineX1 = new TextBox();
|
|
||||||
tbLineY1 = new TextBox();
|
|
||||||
label6 = new Label();
|
|
||||||
label7 = new Label();
|
|
||||||
ctrlTitleBar = new SizeCtrlTitleBar();
|
|
||||||
panel1 = new Panel();
|
|
||||||
canvas = new Canvas.UI.FlyCanvas();
|
|
||||||
statusStrip1 = new StatusStrip();
|
|
||||||
lblStatus = new ToolStripStatusLabel();
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer).BeginInit();
|
|
||||||
splitContainer.Panel1.SuspendLayout();
|
|
||||||
splitContainer.Panel2.SuspendLayout();
|
|
||||||
splitContainer.SuspendLayout();
|
|
||||||
panelGuide.SuspendLayout();
|
|
||||||
groupBox2.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)NumRectWidth1).BeginInit();
|
|
||||||
panel1.SuspendLayout();
|
|
||||||
statusStrip1.SuspendLayout();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// lblElapsed
|
|
||||||
//
|
|
||||||
lblElapsed.AutoSize = true;
|
|
||||||
lblElapsed.Location = new Point(50, 328);
|
|
||||||
lblElapsed.Name = "lblElapsed";
|
|
||||||
lblElapsed.Size = new Size(32, 17);
|
|
||||||
lblElapsed.TabIndex = 9;
|
|
||||||
lblElapsed.Text = "0ms";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
label4.AutoSize = true;
|
|
||||||
label4.Location = new Point(0, 328);
|
|
||||||
label4.Name = "label4";
|
|
||||||
label4.Size = new Size(44, 17);
|
|
||||||
label4.TabIndex = 8;
|
|
||||||
label4.Text = "耗时:";
|
|
||||||
//
|
|
||||||
// splitContainer
|
|
||||||
//
|
|
||||||
splitContainer.Dock = DockStyle.Fill;
|
|
||||||
splitContainer.Location = new Point(0, 0);
|
|
||||||
splitContainer.Name = "splitContainer";
|
|
||||||
//
|
|
||||||
// splitContainer.Panel1
|
|
||||||
//
|
|
||||||
splitContainer.Panel1.Controls.Add(panelGuide);
|
|
||||||
splitContainer.Panel1MinSize = 150;
|
|
||||||
//
|
|
||||||
// splitContainer.Panel2
|
|
||||||
//
|
|
||||||
splitContainer.Panel2.Controls.Add(panel1);
|
|
||||||
splitContainer.Size = new Size(1280, 640);
|
|
||||||
splitContainer.SplitterDistance = 200;
|
|
||||||
splitContainer.TabIndex = 11;
|
|
||||||
//
|
|
||||||
// panelGuide
|
|
||||||
//
|
|
||||||
panelGuide.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
panelGuide.Controls.Add(btnSave);
|
|
||||||
panelGuide.Controls.Add(lblResult);
|
|
||||||
panelGuide.Controls.Add(label1);
|
|
||||||
panelGuide.Controls.Add(btnCreateLine);
|
|
||||||
panelGuide.Controls.Add(btnLoadImage);
|
|
||||||
panelGuide.Controls.Add(label9);
|
|
||||||
panelGuide.Controls.Add(btnExecute);
|
|
||||||
panelGuide.Controls.Add(label10);
|
|
||||||
panelGuide.Controls.Add(groupBox2);
|
|
||||||
panelGuide.Controls.Add(ctrlTitleBar);
|
|
||||||
panelGuide.Dock = DockStyle.Fill;
|
|
||||||
panelGuide.Location = new Point(0, 0);
|
|
||||||
panelGuide.Name = "panelGuide";
|
|
||||||
panelGuide.Size = new Size(200, 640);
|
|
||||||
panelGuide.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// btnSave
|
|
||||||
//
|
|
||||||
btnSave.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnSave.Location = new Point(6, 390);
|
|
||||||
btnSave.Name = "btnSave";
|
|
||||||
btnSave.Size = new Size(186, 32);
|
|
||||||
btnSave.TabIndex = 23;
|
|
||||||
btnSave.Text = "保存数据";
|
|
||||||
btnSave.UseVisualStyleBackColor = true;
|
|
||||||
btnSave.Click += btnSave_Click;
|
|
||||||
//
|
|
||||||
// lblResult
|
|
||||||
//
|
|
||||||
lblResult.AutoSize = true;
|
|
||||||
lblResult.Location = new Point(59, 354);
|
|
||||||
lblResult.Name = "lblResult";
|
|
||||||
lblResult.Size = new Size(20, 17);
|
|
||||||
lblResult.TabIndex = 22;
|
|
||||||
lblResult.Text = "无";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
label1.AutoSize = true;
|
|
||||||
label1.Location = new Point(9, 354);
|
|
||||||
label1.Name = "label1";
|
|
||||||
label1.Size = new Size(44, 17);
|
|
||||||
label1.TabIndex = 21;
|
|
||||||
label1.Text = "结果:";
|
|
||||||
//
|
|
||||||
// btnCreateLine
|
|
||||||
//
|
|
||||||
btnCreateLine.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnCreateLine.Location = new Point(9, 252);
|
|
||||||
btnCreateLine.Name = "btnCreateLine";
|
|
||||||
btnCreateLine.Size = new Size(186, 32);
|
|
||||||
btnCreateLine.TabIndex = 20;
|
|
||||||
btnCreateLine.Text = "创建直线";
|
|
||||||
btnCreateLine.UseVisualStyleBackColor = true;
|
|
||||||
btnCreateLine.Click += btnCreateLine_Click;
|
|
||||||
//
|
|
||||||
// btnLoadImage
|
|
||||||
//
|
|
||||||
btnLoadImage.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnLoadImage.Location = new Point(6, 214);
|
|
||||||
btnLoadImage.Name = "btnLoadImage";
|
|
||||||
btnLoadImage.Size = new Size(186, 32);
|
|
||||||
btnLoadImage.TabIndex = 18;
|
|
||||||
btnLoadImage.Text = "打开图片";
|
|
||||||
btnLoadImage.UseVisualStyleBackColor = true;
|
|
||||||
btnLoadImage.Click += btnLoadImage_Click;
|
|
||||||
//
|
|
||||||
// label9
|
|
||||||
//
|
|
||||||
label9.AutoSize = true;
|
|
||||||
label9.Location = new Point(59, 325);
|
|
||||||
label9.Name = "label9";
|
|
||||||
label9.Size = new Size(32, 17);
|
|
||||||
label9.TabIndex = 17;
|
|
||||||
label9.Text = "0ms";
|
|
||||||
//
|
|
||||||
// btnExecute
|
|
||||||
//
|
|
||||||
btnExecute.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnExecute.Location = new Point(9, 290);
|
|
||||||
btnExecute.Name = "btnExecute";
|
|
||||||
btnExecute.Size = new Size(186, 32);
|
|
||||||
btnExecute.TabIndex = 15;
|
|
||||||
btnExecute.Text = "执行";
|
|
||||||
btnExecute.UseVisualStyleBackColor = true;
|
|
||||||
btnExecute.Click += btnExecute_Click;
|
|
||||||
//
|
|
||||||
// label10
|
|
||||||
//
|
|
||||||
label10.AutoSize = true;
|
|
||||||
label10.Location = new Point(9, 325);
|
|
||||||
label10.Name = "label10";
|
|
||||||
label10.Size = new Size(44, 17);
|
|
||||||
label10.TabIndex = 16;
|
|
||||||
label10.Text = "耗时:";
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
groupBox2.Controls.Add(NumRectWidth1);
|
|
||||||
groupBox2.Controls.Add(label11);
|
|
||||||
groupBox2.Controls.Add(tbLineX2);
|
|
||||||
groupBox2.Controls.Add(label8);
|
|
||||||
groupBox2.Controls.Add(tbLineY2);
|
|
||||||
groupBox2.Controls.Add(label5);
|
|
||||||
groupBox2.Controls.Add(tbLineX1);
|
|
||||||
groupBox2.Controls.Add(tbLineY1);
|
|
||||||
groupBox2.Controls.Add(label6);
|
|
||||||
groupBox2.Controls.Add(label7);
|
|
||||||
groupBox2.Dock = DockStyle.Top;
|
|
||||||
groupBox2.Location = new Point(0, 36);
|
|
||||||
groupBox2.Name = "groupBox2";
|
|
||||||
groupBox2.Size = new Size(198, 172);
|
|
||||||
groupBox2.TabIndex = 13;
|
|
||||||
groupBox2.TabStop = false;
|
|
||||||
groupBox2.Text = "线参数";
|
|
||||||
//
|
|
||||||
// NumRectWidth1
|
|
||||||
//
|
|
||||||
NumRectWidth1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
NumRectWidth1.Location = new Point(56, 138);
|
|
||||||
NumRectWidth1.Maximum = new decimal(new int[] { 9000, 0, 0, 0 });
|
|
||||||
NumRectWidth1.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
|
|
||||||
NumRectWidth1.Name = "NumRectWidth1";
|
|
||||||
NumRectWidth1.Size = new Size(136, 23);
|
|
||||||
NumRectWidth1.TabIndex = 13;
|
|
||||||
NumRectWidth1.Value = new decimal(new int[] { 1, 0, 0, 0 });
|
|
||||||
//
|
|
||||||
// label11
|
|
||||||
//
|
|
||||||
label11.AutoSize = true;
|
|
||||||
label11.Location = new Point(6, 140);
|
|
||||||
label11.Name = "label11";
|
|
||||||
label11.Size = new Size(35, 17);
|
|
||||||
label11.TabIndex = 12;
|
|
||||||
label11.Text = "宽度:";
|
|
||||||
//
|
|
||||||
// tbLineX2
|
|
||||||
//
|
|
||||||
tbLineX2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineX2.Location = new Point(56, 80);
|
|
||||||
tbLineX2.Name = "tbLineX2";
|
|
||||||
tbLineX2.Size = new Size(136, 23);
|
|
||||||
tbLineX2.TabIndex = 9;
|
|
||||||
//
|
|
||||||
// label8
|
|
||||||
//
|
|
||||||
label8.AutoSize = true;
|
|
||||||
label8.Location = new Point(6, 83);
|
|
||||||
label8.Name = "label8";
|
|
||||||
label8.Size = new Size(26, 17);
|
|
||||||
label8.TabIndex = 8;
|
|
||||||
label8.Text = "X2:";
|
|
||||||
//
|
|
||||||
// tbLineY2
|
|
||||||
//
|
|
||||||
tbLineY2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineY2.Location = new Point(56, 109);
|
|
||||||
tbLineY2.Name = "tbLineY2";
|
|
||||||
tbLineY2.Size = new Size(136, 23);
|
|
||||||
tbLineY2.TabIndex = 7;
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
label5.AutoSize = true;
|
|
||||||
label5.Location = new Point(6, 112);
|
|
||||||
label5.Name = "label5";
|
|
||||||
label5.Size = new Size(25, 17);
|
|
||||||
label5.TabIndex = 6;
|
|
||||||
label5.Text = "Y2:";
|
|
||||||
//
|
|
||||||
// tbLineX1
|
|
||||||
//
|
|
||||||
tbLineX1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineX1.Location = new Point(56, 22);
|
|
||||||
tbLineX1.Name = "tbLineX1";
|
|
||||||
tbLineX1.Size = new Size(136, 23);
|
|
||||||
tbLineX1.TabIndex = 5;
|
|
||||||
//
|
|
||||||
// tbLineY1
|
|
||||||
//
|
|
||||||
tbLineY1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLineY1.Location = new Point(56, 51);
|
|
||||||
tbLineY1.Name = "tbLineY1";
|
|
||||||
tbLineY1.Size = new Size(136, 23);
|
|
||||||
tbLineY1.TabIndex = 4;
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
label6.AutoSize = true;
|
|
||||||
label6.Location = new Point(6, 54);
|
|
||||||
label6.Name = "label6";
|
|
||||||
label6.Size = new Size(25, 17);
|
|
||||||
label6.TabIndex = 1;
|
|
||||||
label6.Text = "Y1:";
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
label7.AutoSize = true;
|
|
||||||
label7.Location = new Point(6, 25);
|
|
||||||
label7.Name = "label7";
|
|
||||||
label7.Size = new Size(26, 17);
|
|
||||||
label7.TabIndex = 0;
|
|
||||||
label7.Text = "X1:";
|
|
||||||
//
|
|
||||||
// ctrlTitleBar
|
|
||||||
//
|
|
||||||
ctrlTitleBar.Dock = DockStyle.Top;
|
|
||||||
ctrlTitleBar.Location = new Point(0, 0);
|
|
||||||
ctrlTitleBar.MinimumSize = new Size(0, 36);
|
|
||||||
ctrlTitleBar.Name = "ctrlTitleBar";
|
|
||||||
ctrlTitleBar.Padding = new Padding(3);
|
|
||||||
ctrlTitleBar.Size = new Size(198, 36);
|
|
||||||
ctrlTitleBar.TabIndex = 11;
|
|
||||||
ctrlTitleBar.Title = "直线测量";
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
panel1.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
panel1.Controls.Add(canvas);
|
|
||||||
panel1.Controls.Add(statusStrip1);
|
|
||||||
panel1.Dock = DockStyle.Fill;
|
|
||||||
panel1.Location = new Point(0, 0);
|
|
||||||
panel1.Name = "panel1";
|
|
||||||
panel1.Size = new Size(1076, 640);
|
|
||||||
panel1.TabIndex = 1;
|
|
||||||
//
|
|
||||||
// canvas
|
|
||||||
//
|
|
||||||
canvas.AllowMultiSelect = false;
|
|
||||||
canvas.CreateMode = Canvas.Shape.ShapeTypeEnum.Polygon;
|
|
||||||
canvas.Dock = DockStyle.Fill;
|
|
||||||
canvas.Enabled = false;
|
|
||||||
canvas.FillDrawing = false;
|
|
||||||
canvas.Location = new Point(0, 0);
|
|
||||||
canvas.Margin = new Padding(2);
|
|
||||||
canvas.Name = "canvas";
|
|
||||||
canvas.OutsideShapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.OutsideShapes");
|
|
||||||
canvas.Scale = 1F;
|
|
||||||
canvas.Shapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.Shapes");
|
|
||||||
canvas.Size = new Size(1074, 616);
|
|
||||||
canvas.TabIndex = 2;
|
|
||||||
//
|
|
||||||
// statusStrip1
|
|
||||||
//
|
|
||||||
statusStrip1.Items.AddRange(new ToolStripItem[] { lblStatus });
|
|
||||||
statusStrip1.Location = new Point(0, 616);
|
|
||||||
statusStrip1.Name = "statusStrip1";
|
|
||||||
statusStrip1.Size = new Size(1074, 22);
|
|
||||||
statusStrip1.TabIndex = 1;
|
|
||||||
statusStrip1.Text = "statusStrip1";
|
|
||||||
//
|
|
||||||
// lblStatus
|
|
||||||
//
|
|
||||||
lblStatus.Name = "lblStatus";
|
|
||||||
lblStatus.Size = new Size(44, 17);
|
|
||||||
lblStatus.Text = " ";
|
|
||||||
//
|
|
||||||
// GuideLineCtrl
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 17F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
Controls.Add(splitContainer);
|
|
||||||
Controls.Add(lblElapsed);
|
|
||||||
Controls.Add(label4);
|
|
||||||
Name = "GuideLineCtrl";
|
|
||||||
Size = new Size(1280, 640);
|
|
||||||
Load += GuideLineCircleCtrl_Load;
|
|
||||||
splitContainer.Panel1.ResumeLayout(false);
|
|
||||||
splitContainer.Panel2.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer).EndInit();
|
|
||||||
splitContainer.ResumeLayout(false);
|
|
||||||
panelGuide.ResumeLayout(false);
|
|
||||||
panelGuide.PerformLayout();
|
|
||||||
groupBox2.ResumeLayout(false);
|
|
||||||
groupBox2.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)NumRectWidth1).EndInit();
|
|
||||||
panel1.ResumeLayout(false);
|
|
||||||
panel1.PerformLayout();
|
|
||||||
statusStrip1.ResumeLayout(false);
|
|
||||||
statusStrip1.PerformLayout();
|
|
||||||
ResumeLayout(false);
|
|
||||||
PerformLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private Label lblElapsed;
|
|
||||||
private Label label4;
|
|
||||||
|
|
||||||
private SplitContainer splitContainer;
|
|
||||||
private Panel panelGuide;
|
|
||||||
private Panel panel1;
|
|
||||||
private Canvas.UI.FlyCanvas canvas;
|
|
||||||
private StatusStrip statusStrip1;
|
|
||||||
private ToolStripStatusLabel lblStatus;
|
|
||||||
private GroupBox groupBox2;
|
|
||||||
private TextBox tbLineX2;
|
|
||||||
private Label label8;
|
|
||||||
private TextBox tbLineY2;
|
|
||||||
private Label label5;
|
|
||||||
private TextBox tbLineX1;
|
|
||||||
private TextBox tbLineY1;
|
|
||||||
private Label label6;
|
|
||||||
private Label label7;
|
|
||||||
private SizeCtrlTitleBar ctrlTitleBar;
|
|
||||||
private Button btnLoadImage;
|
|
||||||
private Label label9;
|
|
||||||
private Button btnExecute;
|
|
||||||
private Label label10;
|
|
||||||
private Button btnCreateLine;
|
|
||||||
private TextBox tbRectWidth1;
|
|
||||||
private Label label11;
|
|
||||||
private NumericUpDown NumRectWidth1;
|
|
||||||
private Label lblResult;
|
|
||||||
private Label label1;
|
|
||||||
private Button btnSave;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,387 +0,0 @@
|
|||||||
using CanFly.Canvas.Helper;
|
|
||||||
using CanFly.Canvas.Shape;
|
|
||||||
using CanFly.Canvas.UI;
|
|
||||||
using CanFly.Helper;
|
|
||||||
using HalconDotNet;
|
|
||||||
using OpenCvSharp;
|
|
||||||
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 CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
public partial class SizeGuideLineCtrl : SizeBaseGuideControl
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private FlyShape? _line;
|
|
||||||
|
|
||||||
|
|
||||||
private float _lineX1;
|
|
||||||
private float _lineY1;
|
|
||||||
private float _lineX2;
|
|
||||||
private float _lineY2;
|
|
||||||
private float _lineWidth;
|
|
||||||
private PointF[] _rectPoints = new PointF[4];
|
|
||||||
//private float _LineLX=new float();
|
|
||||||
//private float _LineLY =new float();
|
|
||||||
//private float _LineRX =new float();
|
|
||||||
//private float _LineRY =new float();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected override string GetScriptFileName() => "Line_detect.hdvp";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public SizeGuideLineCtrl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
this.canvas.mouseMoved += Canvas_mouseMoved;
|
|
||||||
this.canvas.OnShapeUpdateEvent += UpdateShape;
|
|
||||||
this.canvas.selectionChanged += Canvas_selectionChanged;
|
|
||||||
|
|
||||||
this.canvas.OnShapeMoving += Canvas_OnShapeMoving;
|
|
||||||
this.canvas.newShape += Canvas_newShape;
|
|
||||||
|
|
||||||
this.ctrlTitleBar.OnCloseClicked += OnControlClose;
|
|
||||||
|
|
||||||
NumRectWidth1.ValueChanged -= NumRectWidth1_ValueChanged;
|
|
||||||
NumRectWidth1.Value = 40;
|
|
||||||
NumRectWidth1.ValueChanged += NumRectWidth1_ValueChanged;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected override void UpdateShape(FlyShape shape)
|
|
||||||
{
|
|
||||||
switch (shape.ShapeType)
|
|
||||||
{
|
|
||||||
case ShapeTypeEnum.Line:
|
|
||||||
this._line = shape;
|
|
||||||
_line.IsDrawLineVirtualRect = true;
|
|
||||||
var pts = this._line.Points;
|
|
||||||
|
|
||||||
_lineX1 = pts[0].X;
|
|
||||||
_lineY1 = pts[0].Y;
|
|
||||||
_lineX2 = pts[1].X;
|
|
||||||
_lineY2 = pts[1].Y;
|
|
||||||
_lineWidth = shape.LineVirtualRectWidth;
|
|
||||||
_rectPoints = shape.LineVirtualRectPoints;
|
|
||||||
//_LineLX = (shape.LineVirtualRectPoints[0].X + shape.LineVirtualRectPoints[3].X) / 2;
|
|
||||||
//_LineLY = (shape.LineVirtualRectPoints[0].Y + shape.LineVirtualRectPoints[3].Y) / 2;
|
|
||||||
//_LineRX = (shape.LineVirtualRectPoints[1].X + shape.LineVirtualRectPoints[2].X) / 2;
|
|
||||||
//_LineRY = (shape.LineVirtualRectPoints[1].Y + shape.LineVirtualRectPoints[2].Y) / 2;
|
|
||||||
|
|
||||||
tbLineX1.Text = _lineX1.ToString("F3");
|
|
||||||
tbLineY1.Text = _lineY1.ToString("F3");
|
|
||||||
tbLineX2.Text = _lineX2.ToString("F3");
|
|
||||||
tbLineY2.Text = _lineY2.ToString("F3");
|
|
||||||
// NumRectWidth1.Value = (decimal)_lineWidth;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void GuideLineCircleCtrl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_mouseMoved(PointF pos)
|
|
||||||
{
|
|
||||||
if (InvokeRequired)
|
|
||||||
{
|
|
||||||
Invoke(Canvas_mouseMoved, pos);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lblStatus.Text = $"X:{pos.X}, Y:{pos.Y}";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_selectionChanged(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
//if (shapes.Count != 1)
|
|
||||||
//{
|
|
||||||
// // panelGuide.Controls.Clear();
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
//SwitchGuideForm(shapes[0].ShapeType);
|
|
||||||
// Canvas_OnShapeUpdateEvent(shapes[0]);
|
|
||||||
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_OnShapeMoving(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnCreateLine_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
tbLineX1.Text = string.Empty;
|
|
||||||
tbLineY1.Text = string.Empty;
|
|
||||||
tbLineX2.Text = string.Empty;
|
|
||||||
tbLineY2.Text = string.Empty;
|
|
||||||
|
|
||||||
|
|
||||||
this.canvas.Shapes.RemoveAll(shp => shp.ShapeType == ShapeTypeEnum.Line);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
this.canvas.StartDraw(ShapeTypeEnum.Line);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnLoadImage_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenImageFile(bitmap =>
|
|
||||||
{
|
|
||||||
this.canvas.LoadPixmap(bitmap);
|
|
||||||
this.canvas.Enabled = true;
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_newShape()
|
|
||||||
{
|
|
||||||
this.canvas.StopDraw();
|
|
||||||
}
|
|
||||||
string strarrayX = string.Empty;
|
|
||||||
string strarrayY = string.Empty;
|
|
||||||
private void btnExecute_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.tbLineX1.Text.Trim().Length == 0)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先创建直线");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.canvas.OutsideShapes.Clear();
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
|
|
||||||
|
|
||||||
flag = new List<double>();
|
|
||||||
RowBegin = new List<double>();
|
|
||||||
ColBegin = new List<double>();
|
|
||||||
RowEnd = new List<double>();
|
|
||||||
ColEnd = new List<double>();
|
|
||||||
Dictionary<string, HObject> inputImg = new Dictionary<string, HObject>();
|
|
||||||
|
|
||||||
if (hImage == null)
|
|
||||||
{
|
|
||||||
HOperatorSet.ReadImage(out hImage, CurrentImageFile);
|
|
||||||
}
|
|
||||||
inputImg["INPUT_Image"] = hImage;
|
|
||||||
// 创建一维数组
|
|
||||||
|
|
||||||
Dictionary<string, HTuple> inputPara = new Dictionary<string, HTuple>();
|
|
||||||
|
|
||||||
// 获取矩形的 4 个点
|
|
||||||
PointF[] Points = this._line.LineVirtualRectPoints;
|
|
||||||
PointF Point1 = Points[0];
|
|
||||||
PointF Point2 = Points[1];
|
|
||||||
PointF Point3 = Points[2];
|
|
||||||
PointF Point4 = Points[3];
|
|
||||||
PointF Point5 = Points[0];
|
|
||||||
|
|
||||||
float x1 = Point1.X;
|
|
||||||
float y1 = Point1.Y;
|
|
||||||
|
|
||||||
float x2 = Point2.X;
|
|
||||||
float y2 = Point2.Y;
|
|
||||||
|
|
||||||
float x3 = Point3.X;
|
|
||||||
float y3 = Point3.Y;
|
|
||||||
|
|
||||||
float x4 = Point4.X;
|
|
||||||
float y4 = Point4.Y;
|
|
||||||
|
|
||||||
float x5 = Point5.X;
|
|
||||||
float y5 = Point5.Y;
|
|
||||||
|
|
||||||
|
|
||||||
float[] arrayX = new float[] { x1, x2, x3, x4, x5 };
|
|
||||||
HTuple hTupleArrayX = new HTuple(arrayX);
|
|
||||||
|
|
||||||
float[] arrayY = new float[] { y1, y2, y3, y4, y5 };
|
|
||||||
HTuple hTupleArrayY = new HTuple(arrayY);
|
|
||||||
|
|
||||||
strarrayX = string.Join(",", arrayX);
|
|
||||||
strarrayY = string.Join(",", arrayY);
|
|
||||||
|
|
||||||
inputPara["LX"] = _lineX1;
|
|
||||||
inputPara["LY"] = _lineY1;
|
|
||||||
inputPara["RX"] = _lineX2;
|
|
||||||
inputPara["RY"] = _lineY2;
|
|
||||||
inputPara["XRect"] = hTupleArrayX;
|
|
||||||
inputPara["YRect"] = hTupleArrayY;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<string> outputKeys = new List<string>()
|
|
||||||
{
|
|
||||||
"OUTPUT_Flag",
|
|
||||||
"RowBegin",
|
|
||||||
"ColBegin",
|
|
||||||
"RowEnd",
|
|
||||||
"ColEnd"
|
|
||||||
};
|
|
||||||
|
|
||||||
ExecuteHScript(
|
|
||||||
inputImg,
|
|
||||||
inputPara,
|
|
||||||
outputKeys);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
List<double> flag = new List<double>();
|
|
||||||
List<double> RowBegin = new List<double>();
|
|
||||||
List<double> ColBegin = new List<double>();
|
|
||||||
List<double> RowEnd = new List<double>();
|
|
||||||
List<double> ColEnd = new List<double>();
|
|
||||||
|
|
||||||
|
|
||||||
protected override void OnExecuteHScriptResult(
|
|
||||||
bool success,
|
|
||||||
Dictionary<string, HTuple> resultDic,
|
|
||||||
int timeElasped)
|
|
||||||
{
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
"OUTPUT_Flag",
|
|
||||||
"RXCenter",
|
|
||||||
"RYCenter",
|
|
||||||
"RRadius"
|
|
||||||
*/
|
|
||||||
|
|
||||||
flag = resultDic["OUTPUT_Flag"].HTupleToDouble();
|
|
||||||
RowBegin = resultDic["RowBegin"].HTupleToDouble();
|
|
||||||
ColBegin = resultDic["ColBegin"].HTupleToDouble();
|
|
||||||
RowEnd = resultDic["RowEnd"].HTupleToDouble();
|
|
||||||
ColEnd = resultDic["ColEnd"].HTupleToDouble();
|
|
||||||
if (flag.Count > 0)
|
|
||||||
{
|
|
||||||
lblResult.Text = flag[0].ToString();
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lblResult.Text = "无";
|
|
||||||
}
|
|
||||||
if (flag.Count > 0 && RowBegin.Count > 0 && ColBegin.Count > 0 && RowEnd.Count > 0 && ColEnd.Count > 0)
|
|
||||||
{
|
|
||||||
float width = 0;
|
|
||||||
this.canvas.DrawLine(new PointF((float)ColBegin[0], (float)RowBegin[0]), new PointF((float)ColEnd[0], (float)RowEnd[0]), width);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
lblElapsed.Text = $"{timeElasped} ms";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void NumRectWidth1_ValueChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (_line != null)
|
|
||||||
{
|
|
||||||
//_line1.IsDrawLineVirtualRect = true;
|
|
||||||
_line.LineVirtualRectWidth = (float)NumRectWidth1.Value;
|
|
||||||
UpdateShape(_line);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnSave_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (lblResult.Text.Equals("无"))
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先进行绘制");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (lblResult.Text != "0")
|
|
||||||
{
|
|
||||||
MessageBox.Show("测量计算错误,无法保存");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//flag = resultDic["OUTPUT_Flag"].HTupleToDouble();
|
|
||||||
//RowBegin = resultDic["RowBegin"].HTupleToDouble();
|
|
||||||
//ColBegin = resultDic["ColBegin"].HTupleToDouble();
|
|
||||||
//RowEnd = resultDic["RowEnd"].HTupleToDouble();
|
|
||||||
//ColEnd = resultDic["ColEnd"].HTupleToDouble();
|
|
||||||
|
|
||||||
|
|
||||||
string input = $"LX:{_lineX1};" +
|
|
||||||
$"LY:{_lineY1};" +
|
|
||||||
$"RX:{_lineX2};" +
|
|
||||||
$"RY:{_lineY2};" +
|
|
||||||
$"Line_XRect:{strarrayX};" +
|
|
||||||
$"Line_YRect:{strarrayY}";
|
|
||||||
|
|
||||||
|
|
||||||
string result = $"RowBegin:{string.Join(";", RowBegin[0])};ColBegin:{string.Join(";", ColBegin[0])};RowEnd:{string.Join(";", RowEnd[0])};ColEnd:{string.Join(";", ColEnd[0])}";
|
|
||||||
|
|
||||||
DataToTriggerEvent(input, result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="canvas.OutsideShapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="canvas.Shapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
||||||
570
CanFly/UI/SizePanel/SizeGuideLineLineCtrl.Designer.cs
generated
@@ -1,570 +0,0 @@
|
|||||||
namespace CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
partial class SizeGuideLineLineCtrl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SizeGuideLineLineCtrl));
|
|
||||||
lblStatus = new ToolStripStatusLabel();
|
|
||||||
panel1 = new Panel();
|
|
||||||
canvas = new Canvas.UI.FlyCanvas();
|
|
||||||
statusStrip1 = new StatusStrip();
|
|
||||||
ctrlTitleBar = new SizeCtrlTitleBar();
|
|
||||||
tbLine1X2 = new TextBox();
|
|
||||||
label8 = new Label();
|
|
||||||
tbLine1Y2 = new TextBox();
|
|
||||||
label5 = new Label();
|
|
||||||
label10 = new Label();
|
|
||||||
tbLine1X1 = new TextBox();
|
|
||||||
tbLine1Y1 = new TextBox();
|
|
||||||
label6 = new Label();
|
|
||||||
label7 = new Label();
|
|
||||||
btnLoadImage = new Button();
|
|
||||||
label9 = new Label();
|
|
||||||
btnExecute = new Button();
|
|
||||||
panelGuide = new Panel();
|
|
||||||
lblDistance = new Label();
|
|
||||||
label17 = new Label();
|
|
||||||
lblResult = new Label();
|
|
||||||
label15 = new Label();
|
|
||||||
groupBox3 = new GroupBox();
|
|
||||||
NumRectWidth2 = new NumericUpDown();
|
|
||||||
label2 = new Label();
|
|
||||||
tbLine2X2 = new TextBox();
|
|
||||||
label11 = new Label();
|
|
||||||
tbLine2Y2 = new TextBox();
|
|
||||||
label12 = new Label();
|
|
||||||
tbLine2X1 = new TextBox();
|
|
||||||
tbLine2Y1 = new TextBox();
|
|
||||||
label13 = new Label();
|
|
||||||
label14 = new Label();
|
|
||||||
groupBox2 = new GroupBox();
|
|
||||||
NumRectWidth1 = new NumericUpDown();
|
|
||||||
label1 = new Label();
|
|
||||||
splitContainer = new SplitContainer();
|
|
||||||
lblElapsed = new Label();
|
|
||||||
label4 = new Label();
|
|
||||||
btnSave = new Button();
|
|
||||||
panel1.SuspendLayout();
|
|
||||||
statusStrip1.SuspendLayout();
|
|
||||||
panelGuide.SuspendLayout();
|
|
||||||
groupBox3.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)NumRectWidth2).BeginInit();
|
|
||||||
groupBox2.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)NumRectWidth1).BeginInit();
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer).BeginInit();
|
|
||||||
splitContainer.Panel1.SuspendLayout();
|
|
||||||
splitContainer.Panel2.SuspendLayout();
|
|
||||||
splitContainer.SuspendLayout();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// lblStatus
|
|
||||||
//
|
|
||||||
lblStatus.Name = "lblStatus";
|
|
||||||
lblStatus.Size = new Size(44, 17);
|
|
||||||
lblStatus.Text = " ";
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
panel1.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
panel1.Controls.Add(canvas);
|
|
||||||
panel1.Controls.Add(statusStrip1);
|
|
||||||
panel1.Dock = DockStyle.Fill;
|
|
||||||
panel1.Location = new Point(0, 0);
|
|
||||||
panel1.Name = "panel1";
|
|
||||||
panel1.Size = new Size(1076, 640);
|
|
||||||
panel1.TabIndex = 1;
|
|
||||||
//
|
|
||||||
// canvas
|
|
||||||
//
|
|
||||||
canvas.AllowMultiSelect = false;
|
|
||||||
canvas.CreateMode = Canvas.Shape.ShapeTypeEnum.Polygon;
|
|
||||||
canvas.Dock = DockStyle.Fill;
|
|
||||||
canvas.Enabled = false;
|
|
||||||
canvas.FillDrawing = false;
|
|
||||||
canvas.Location = new Point(0, 0);
|
|
||||||
canvas.Margin = new Padding(2);
|
|
||||||
canvas.Name = "canvas";
|
|
||||||
canvas.OutsideShapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.OutsideShapes");
|
|
||||||
canvas.Scale = 1F;
|
|
||||||
canvas.Shapes = (List<Canvas.Shape.FlyShape>)resources.GetObject("canvas.Shapes");
|
|
||||||
canvas.Size = new Size(1074, 616);
|
|
||||||
canvas.TabIndex = 2;
|
|
||||||
//
|
|
||||||
// statusStrip1
|
|
||||||
//
|
|
||||||
statusStrip1.Items.AddRange(new ToolStripItem[] { lblStatus });
|
|
||||||
statusStrip1.Location = new Point(0, 616);
|
|
||||||
statusStrip1.Name = "statusStrip1";
|
|
||||||
statusStrip1.Size = new Size(1074, 22);
|
|
||||||
statusStrip1.TabIndex = 1;
|
|
||||||
statusStrip1.Text = "statusStrip1";
|
|
||||||
//
|
|
||||||
// ctrlTitleBar
|
|
||||||
//
|
|
||||||
ctrlTitleBar.Dock = DockStyle.Top;
|
|
||||||
ctrlTitleBar.Location = new Point(0, 0);
|
|
||||||
ctrlTitleBar.MinimumSize = new Size(0, 36);
|
|
||||||
ctrlTitleBar.Name = "ctrlTitleBar";
|
|
||||||
ctrlTitleBar.Padding = new Padding(3);
|
|
||||||
ctrlTitleBar.Size = new Size(198, 36);
|
|
||||||
ctrlTitleBar.TabIndex = 11;
|
|
||||||
ctrlTitleBar.Title = "线线测量";
|
|
||||||
//
|
|
||||||
// tbLine1X2
|
|
||||||
//
|
|
||||||
tbLine1X2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLine1X2.Location = new Point(56, 80);
|
|
||||||
tbLine1X2.Name = "tbLine1X2";
|
|
||||||
tbLine1X2.Size = new Size(134, 23);
|
|
||||||
tbLine1X2.TabIndex = 9;
|
|
||||||
//
|
|
||||||
// label8
|
|
||||||
//
|
|
||||||
label8.AutoSize = true;
|
|
||||||
label8.Location = new Point(6, 83);
|
|
||||||
label8.Name = "label8";
|
|
||||||
label8.Size = new Size(26, 17);
|
|
||||||
label8.TabIndex = 8;
|
|
||||||
label8.Text = "X2:";
|
|
||||||
//
|
|
||||||
// tbLine1Y2
|
|
||||||
//
|
|
||||||
tbLine1Y2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLine1Y2.Location = new Point(56, 109);
|
|
||||||
tbLine1Y2.Name = "tbLine1Y2";
|
|
||||||
tbLine1Y2.Size = new Size(134, 23);
|
|
||||||
tbLine1Y2.TabIndex = 7;
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
label5.AutoSize = true;
|
|
||||||
label5.Location = new Point(6, 112);
|
|
||||||
label5.Name = "label5";
|
|
||||||
label5.Size = new Size(25, 17);
|
|
||||||
label5.TabIndex = 6;
|
|
||||||
label5.Text = "Y2:";
|
|
||||||
//
|
|
||||||
// label10
|
|
||||||
//
|
|
||||||
label10.AutoSize = true;
|
|
||||||
label10.Location = new Point(6, 521);
|
|
||||||
label10.Name = "label10";
|
|
||||||
label10.Size = new Size(44, 17);
|
|
||||||
label10.TabIndex = 16;
|
|
||||||
label10.Text = "耗时:";
|
|
||||||
//
|
|
||||||
// tbLine1X1
|
|
||||||
//
|
|
||||||
tbLine1X1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLine1X1.Location = new Point(56, 22);
|
|
||||||
tbLine1X1.Name = "tbLine1X1";
|
|
||||||
tbLine1X1.Size = new Size(134, 23);
|
|
||||||
tbLine1X1.TabIndex = 5;
|
|
||||||
//
|
|
||||||
// tbLine1Y1
|
|
||||||
//
|
|
||||||
tbLine1Y1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLine1Y1.Location = new Point(56, 51);
|
|
||||||
tbLine1Y1.Name = "tbLine1Y1";
|
|
||||||
tbLine1Y1.Size = new Size(134, 23);
|
|
||||||
tbLine1Y1.TabIndex = 4;
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
label6.AutoSize = true;
|
|
||||||
label6.Location = new Point(6, 54);
|
|
||||||
label6.Name = "label6";
|
|
||||||
label6.Size = new Size(25, 17);
|
|
||||||
label6.TabIndex = 1;
|
|
||||||
label6.Text = "Y1:";
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
label7.AutoSize = true;
|
|
||||||
label7.Location = new Point(6, 25);
|
|
||||||
label7.Name = "label7";
|
|
||||||
label7.Size = new Size(26, 17);
|
|
||||||
label7.TabIndex = 0;
|
|
||||||
label7.Text = "X1:";
|
|
||||||
//
|
|
||||||
// btnLoadImage
|
|
||||||
//
|
|
||||||
btnLoadImage.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnLoadImage.Location = new Point(6, 394);
|
|
||||||
btnLoadImage.Name = "btnLoadImage";
|
|
||||||
btnLoadImage.Size = new Size(184, 32);
|
|
||||||
btnLoadImage.TabIndex = 18;
|
|
||||||
btnLoadImage.Text = "打开图片";
|
|
||||||
btnLoadImage.UseVisualStyleBackColor = true;
|
|
||||||
btnLoadImage.Click += btnLoadImage_Click;
|
|
||||||
//
|
|
||||||
// label9
|
|
||||||
//
|
|
||||||
label9.AutoSize = true;
|
|
||||||
label9.Location = new Point(54, 521);
|
|
||||||
label9.Name = "label9";
|
|
||||||
label9.Size = new Size(32, 17);
|
|
||||||
label9.TabIndex = 17;
|
|
||||||
label9.Text = "0ms";
|
|
||||||
//
|
|
||||||
// btnExecute
|
|
||||||
//
|
|
||||||
btnExecute.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnExecute.Location = new Point(5, 432);
|
|
||||||
btnExecute.Name = "btnExecute";
|
|
||||||
btnExecute.Size = new Size(184, 32);
|
|
||||||
btnExecute.TabIndex = 15;
|
|
||||||
btnExecute.Text = "执行";
|
|
||||||
btnExecute.UseVisualStyleBackColor = true;
|
|
||||||
btnExecute.Click += btnExecute_Click;
|
|
||||||
//
|
|
||||||
// panelGuide
|
|
||||||
//
|
|
||||||
panelGuide.BorderStyle = BorderStyle.FixedSingle;
|
|
||||||
panelGuide.Controls.Add(btnSave);
|
|
||||||
panelGuide.Controls.Add(lblDistance);
|
|
||||||
panelGuide.Controls.Add(label17);
|
|
||||||
panelGuide.Controls.Add(lblResult);
|
|
||||||
panelGuide.Controls.Add(label15);
|
|
||||||
panelGuide.Controls.Add(groupBox3);
|
|
||||||
panelGuide.Controls.Add(btnLoadImage);
|
|
||||||
panelGuide.Controls.Add(label9);
|
|
||||||
panelGuide.Controls.Add(btnExecute);
|
|
||||||
panelGuide.Controls.Add(label10);
|
|
||||||
panelGuide.Controls.Add(groupBox2);
|
|
||||||
panelGuide.Controls.Add(ctrlTitleBar);
|
|
||||||
panelGuide.Dock = DockStyle.Fill;
|
|
||||||
panelGuide.Location = new Point(0, 0);
|
|
||||||
panelGuide.Name = "panelGuide";
|
|
||||||
panelGuide.Size = new Size(200, 640);
|
|
||||||
panelGuide.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// lblDistance
|
|
||||||
//
|
|
||||||
lblDistance.AutoSize = true;
|
|
||||||
lblDistance.Location = new Point(54, 493);
|
|
||||||
lblDistance.Name = "lblDistance";
|
|
||||||
lblDistance.Size = new Size(15, 17);
|
|
||||||
lblDistance.TabIndex = 25;
|
|
||||||
lblDistance.Text = "0";
|
|
||||||
//
|
|
||||||
// label17
|
|
||||||
//
|
|
||||||
label17.AutoSize = true;
|
|
||||||
label17.Location = new Point(6, 493);
|
|
||||||
label17.Name = "label17";
|
|
||||||
label17.Size = new Size(44, 17);
|
|
||||||
label17.TabIndex = 24;
|
|
||||||
label17.Text = "距离:";
|
|
||||||
//
|
|
||||||
// lblResult
|
|
||||||
//
|
|
||||||
lblResult.AutoSize = true;
|
|
||||||
lblResult.Location = new Point(54, 467);
|
|
||||||
lblResult.Name = "lblResult";
|
|
||||||
lblResult.Size = new Size(20, 17);
|
|
||||||
lblResult.TabIndex = 23;
|
|
||||||
lblResult.Text = "无";
|
|
||||||
//
|
|
||||||
// label15
|
|
||||||
//
|
|
||||||
label15.AutoSize = true;
|
|
||||||
label15.Location = new Point(6, 467);
|
|
||||||
label15.Name = "label15";
|
|
||||||
label15.Size = new Size(44, 17);
|
|
||||||
label15.TabIndex = 22;
|
|
||||||
label15.Text = "结果:";
|
|
||||||
//
|
|
||||||
// groupBox3
|
|
||||||
//
|
|
||||||
groupBox3.Controls.Add(NumRectWidth2);
|
|
||||||
groupBox3.Controls.Add(label2);
|
|
||||||
groupBox3.Controls.Add(tbLine2X2);
|
|
||||||
groupBox3.Controls.Add(label11);
|
|
||||||
groupBox3.Controls.Add(tbLine2Y2);
|
|
||||||
groupBox3.Controls.Add(label12);
|
|
||||||
groupBox3.Controls.Add(tbLine2X1);
|
|
||||||
groupBox3.Controls.Add(tbLine2Y1);
|
|
||||||
groupBox3.Controls.Add(label13);
|
|
||||||
groupBox3.Controls.Add(label14);
|
|
||||||
groupBox3.Dock = DockStyle.Top;
|
|
||||||
groupBox3.Location = new Point(0, 216);
|
|
||||||
groupBox3.Name = "groupBox3";
|
|
||||||
groupBox3.Size = new Size(198, 172);
|
|
||||||
groupBox3.TabIndex = 21;
|
|
||||||
groupBox3.TabStop = false;
|
|
||||||
groupBox3.Text = "线2参数";
|
|
||||||
//
|
|
||||||
// NumRectWidth2
|
|
||||||
//
|
|
||||||
NumRectWidth2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
NumRectWidth2.Location = new Point(53, 138);
|
|
||||||
NumRectWidth2.Maximum = new decimal(new int[] { 9000, 0, 0, 0 });
|
|
||||||
NumRectWidth2.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
|
|
||||||
NumRectWidth2.Name = "NumRectWidth2";
|
|
||||||
NumRectWidth2.Size = new Size(136, 23);
|
|
||||||
NumRectWidth2.TabIndex = 13;
|
|
||||||
NumRectWidth2.Value = new decimal(new int[] { 1, 0, 0, 0 });
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
label2.AutoSize = true;
|
|
||||||
label2.Location = new Point(6, 140);
|
|
||||||
label2.Name = "label2";
|
|
||||||
label2.Size = new Size(35, 17);
|
|
||||||
label2.TabIndex = 12;
|
|
||||||
label2.Text = "宽度:";
|
|
||||||
//
|
|
||||||
// tbLine2X2
|
|
||||||
//
|
|
||||||
tbLine2X2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLine2X2.Location = new Point(56, 80);
|
|
||||||
tbLine2X2.Name = "tbLine2X2";
|
|
||||||
tbLine2X2.Size = new Size(134, 23);
|
|
||||||
tbLine2X2.TabIndex = 9;
|
|
||||||
//
|
|
||||||
// label11
|
|
||||||
//
|
|
||||||
label11.AutoSize = true;
|
|
||||||
label11.Location = new Point(6, 83);
|
|
||||||
label11.Name = "label11";
|
|
||||||
label11.Size = new Size(26, 17);
|
|
||||||
label11.TabIndex = 8;
|
|
||||||
label11.Text = "X2:";
|
|
||||||
//
|
|
||||||
// tbLine2Y2
|
|
||||||
//
|
|
||||||
tbLine2Y2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLine2Y2.Location = new Point(56, 109);
|
|
||||||
tbLine2Y2.Name = "tbLine2Y2";
|
|
||||||
tbLine2Y2.Size = new Size(136, 23);
|
|
||||||
tbLine2Y2.TabIndex = 7;
|
|
||||||
//
|
|
||||||
// label12
|
|
||||||
//
|
|
||||||
label12.AutoSize = true;
|
|
||||||
label12.Location = new Point(6, 112);
|
|
||||||
label12.Name = "label12";
|
|
||||||
label12.Size = new Size(25, 17);
|
|
||||||
label12.TabIndex = 6;
|
|
||||||
label12.Text = "Y2:";
|
|
||||||
//
|
|
||||||
// tbLine2X1
|
|
||||||
//
|
|
||||||
tbLine2X1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLine2X1.Location = new Point(56, 22);
|
|
||||||
tbLine2X1.Name = "tbLine2X1";
|
|
||||||
tbLine2X1.Size = new Size(134, 23);
|
|
||||||
tbLine2X1.TabIndex = 5;
|
|
||||||
//
|
|
||||||
// tbLine2Y1
|
|
||||||
//
|
|
||||||
tbLine2Y1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
tbLine2Y1.Location = new Point(56, 51);
|
|
||||||
tbLine2Y1.Name = "tbLine2Y1";
|
|
||||||
tbLine2Y1.Size = new Size(134, 23);
|
|
||||||
tbLine2Y1.TabIndex = 4;
|
|
||||||
//
|
|
||||||
// label13
|
|
||||||
//
|
|
||||||
label13.AutoSize = true;
|
|
||||||
label13.Location = new Point(6, 54);
|
|
||||||
label13.Name = "label13";
|
|
||||||
label13.Size = new Size(25, 17);
|
|
||||||
label13.TabIndex = 1;
|
|
||||||
label13.Text = "Y1:";
|
|
||||||
//
|
|
||||||
// label14
|
|
||||||
//
|
|
||||||
label14.AutoSize = true;
|
|
||||||
label14.Location = new Point(6, 25);
|
|
||||||
label14.Name = "label14";
|
|
||||||
label14.Size = new Size(26, 17);
|
|
||||||
label14.TabIndex = 0;
|
|
||||||
label14.Text = "X1:";
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
groupBox2.Controls.Add(NumRectWidth1);
|
|
||||||
groupBox2.Controls.Add(label1);
|
|
||||||
groupBox2.Controls.Add(tbLine1X2);
|
|
||||||
groupBox2.Controls.Add(label8);
|
|
||||||
groupBox2.Controls.Add(tbLine1Y2);
|
|
||||||
groupBox2.Controls.Add(label5);
|
|
||||||
groupBox2.Controls.Add(tbLine1X1);
|
|
||||||
groupBox2.Controls.Add(tbLine1Y1);
|
|
||||||
groupBox2.Controls.Add(label6);
|
|
||||||
groupBox2.Controls.Add(label7);
|
|
||||||
groupBox2.Dock = DockStyle.Top;
|
|
||||||
groupBox2.Location = new Point(0, 36);
|
|
||||||
groupBox2.Name = "groupBox2";
|
|
||||||
groupBox2.Size = new Size(198, 180);
|
|
||||||
groupBox2.TabIndex = 13;
|
|
||||||
groupBox2.TabStop = false;
|
|
||||||
groupBox2.Text = "线1参数";
|
|
||||||
//
|
|
||||||
// NumRectWidth1
|
|
||||||
//
|
|
||||||
NumRectWidth1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
NumRectWidth1.Location = new Point(54, 138);
|
|
||||||
NumRectWidth1.Maximum = new decimal(new int[] { 9000, 0, 0, 0 });
|
|
||||||
NumRectWidth1.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
|
|
||||||
NumRectWidth1.Name = "NumRectWidth1";
|
|
||||||
NumRectWidth1.Size = new Size(135, 23);
|
|
||||||
NumRectWidth1.TabIndex = 11;
|
|
||||||
NumRectWidth1.Value = new decimal(new int[] { 1, 0, 0, 0 });
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
label1.AutoSize = true;
|
|
||||||
label1.Location = new Point(6, 140);
|
|
||||||
label1.Name = "label1";
|
|
||||||
label1.Size = new Size(35, 17);
|
|
||||||
label1.TabIndex = 10;
|
|
||||||
label1.Text = "宽度:";
|
|
||||||
//
|
|
||||||
// splitContainer
|
|
||||||
//
|
|
||||||
splitContainer.Dock = DockStyle.Fill;
|
|
||||||
splitContainer.Location = new Point(0, 0);
|
|
||||||
splitContainer.Name = "splitContainer";
|
|
||||||
//
|
|
||||||
// splitContainer.Panel1
|
|
||||||
//
|
|
||||||
splitContainer.Panel1.Controls.Add(panelGuide);
|
|
||||||
splitContainer.Panel1MinSize = 150;
|
|
||||||
//
|
|
||||||
// splitContainer.Panel2
|
|
||||||
//
|
|
||||||
splitContainer.Panel2.Controls.Add(panel1);
|
|
||||||
splitContainer.Size = new Size(1280, 640);
|
|
||||||
splitContainer.SplitterDistance = 200;
|
|
||||||
splitContainer.TabIndex = 11;
|
|
||||||
//
|
|
||||||
// lblElapsed
|
|
||||||
//
|
|
||||||
lblElapsed.AutoSize = true;
|
|
||||||
lblElapsed.Location = new Point(50, 328);
|
|
||||||
lblElapsed.Name = "lblElapsed";
|
|
||||||
lblElapsed.Size = new Size(32, 17);
|
|
||||||
lblElapsed.TabIndex = 13;
|
|
||||||
lblElapsed.Text = "0ms";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
label4.AutoSize = true;
|
|
||||||
label4.Location = new Point(0, 328);
|
|
||||||
label4.Name = "label4";
|
|
||||||
label4.Size = new Size(44, 17);
|
|
||||||
label4.TabIndex = 12;
|
|
||||||
label4.Text = "耗时:";
|
|
||||||
//
|
|
||||||
// btnSave
|
|
||||||
//
|
|
||||||
btnSave.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
|
||||||
btnSave.Location = new Point(3, 541);
|
|
||||||
btnSave.Name = "btnSave";
|
|
||||||
btnSave.Size = new Size(186, 32);
|
|
||||||
btnSave.TabIndex = 26;
|
|
||||||
btnSave.Text = "保存数据";
|
|
||||||
btnSave.UseVisualStyleBackColor = true;
|
|
||||||
btnSave.Click += btnSave_Click;
|
|
||||||
//
|
|
||||||
// GuideLineLineCtrl
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 17F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
Controls.Add(splitContainer);
|
|
||||||
Controls.Add(lblElapsed);
|
|
||||||
Controls.Add(label4);
|
|
||||||
Name = "GuideLineLineCtrl";
|
|
||||||
Size = new Size(1280, 640);
|
|
||||||
panel1.ResumeLayout(false);
|
|
||||||
panel1.PerformLayout();
|
|
||||||
statusStrip1.ResumeLayout(false);
|
|
||||||
statusStrip1.PerformLayout();
|
|
||||||
panelGuide.ResumeLayout(false);
|
|
||||||
panelGuide.PerformLayout();
|
|
||||||
groupBox3.ResumeLayout(false);
|
|
||||||
groupBox3.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)NumRectWidth2).EndInit();
|
|
||||||
groupBox2.ResumeLayout(false);
|
|
||||||
groupBox2.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)NumRectWidth1).EndInit();
|
|
||||||
splitContainer.Panel1.ResumeLayout(false);
|
|
||||||
splitContainer.Panel2.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer).EndInit();
|
|
||||||
splitContainer.ResumeLayout(false);
|
|
||||||
ResumeLayout(false);
|
|
||||||
PerformLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private ToolStripStatusLabel lblStatus;
|
|
||||||
private Panel panel1;
|
|
||||||
private Canvas.UI.FlyCanvas canvas;
|
|
||||||
private StatusStrip statusStrip1;
|
|
||||||
private SizeCtrlTitleBar ctrlTitleBar;
|
|
||||||
private TextBox tbLine1X2;
|
|
||||||
private Label label8;
|
|
||||||
private TextBox tbLine1Y2;
|
|
||||||
private Label label5;
|
|
||||||
private Label label10;
|
|
||||||
private TextBox tbLine1X1;
|
|
||||||
private TextBox tbLine1Y1;
|
|
||||||
private Label label6;
|
|
||||||
private Label label7;
|
|
||||||
private Button btnLoadImage;
|
|
||||||
private Label label9;
|
|
||||||
private Button btnExecute;
|
|
||||||
private Panel panelGuide;
|
|
||||||
private GroupBox groupBox2;
|
|
||||||
private SplitContainer splitContainer;
|
|
||||||
private Label lblElapsed;
|
|
||||||
private Label label4;
|
|
||||||
private GroupBox groupBox3;
|
|
||||||
private TextBox tbLine2X2;
|
|
||||||
private Label label11;
|
|
||||||
private TextBox tbLine2Y2;
|
|
||||||
private Label label12;
|
|
||||||
private TextBox tbLine2X1;
|
|
||||||
private TextBox tbLine2Y1;
|
|
||||||
private Label label13;
|
|
||||||
private Label label14;
|
|
||||||
private Label label1;
|
|
||||||
private Label label2;
|
|
||||||
private NumericUpDown NumRectWidth2;
|
|
||||||
private NumericUpDown NumRectWidth1;
|
|
||||||
private Label lblDistance;
|
|
||||||
private Label label17;
|
|
||||||
private Label lblResult;
|
|
||||||
private Label label15;
|
|
||||||
private Button btnSave;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,526 +0,0 @@
|
|||||||
using CanFly.Canvas.Helper;
|
|
||||||
using CanFly.Canvas.Shape;
|
|
||||||
using CanFly.Helper;
|
|
||||||
using HalconDotNet;
|
|
||||||
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 CanFly.UI.SizePanel
|
|
||||||
{
|
|
||||||
public partial class SizeGuideLineLineCtrl : SizeBaseGuideControl
|
|
||||||
{
|
|
||||||
private FlyShape? _line1;
|
|
||||||
private FlyShape? _line2;
|
|
||||||
|
|
||||||
private float _line1X1;
|
|
||||||
private float _line1Y1;
|
|
||||||
private float _line1X2;
|
|
||||||
private float _line1Y2;
|
|
||||||
private float _lineWidth;
|
|
||||||
|
|
||||||
private float _line2X1;
|
|
||||||
private float _line2Y1;
|
|
||||||
private float _line2X2;
|
|
||||||
private float _line2Y2;
|
|
||||||
private float _line2Width;
|
|
||||||
|
|
||||||
protected override string GetScriptFileName() => "LineToLine.hdvp";
|
|
||||||
|
|
||||||
|
|
||||||
public SizeGuideLineLineCtrl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
this.canvas.mouseMoved += Canvas_mouseMoved;
|
|
||||||
this.canvas.OnShapeUpdateEvent += UpdateShape;
|
|
||||||
this.canvas.selectionChanged += Canvas_selectionChanged;
|
|
||||||
|
|
||||||
this.canvas.OnShapeMoving += Canvas_OnShapeMoving;
|
|
||||||
this.canvas.newShape += Canvas_newShape;
|
|
||||||
|
|
||||||
this.ctrlTitleBar.OnCloseClicked += OnControlClose;
|
|
||||||
NumRectWidth1.ValueChanged -= NumRectWidth1_ValueChanged;
|
|
||||||
NumRectWidth1.Value = 40;
|
|
||||||
NumRectWidth1.ValueChanged += NumRectWidth1_ValueChanged;
|
|
||||||
|
|
||||||
NumRectWidth2.ValueChanged -= NumericUpDown2_ValueChanged;
|
|
||||||
NumRectWidth2.Value = 40;
|
|
||||||
NumRectWidth2.ValueChanged += NumericUpDown2_ValueChanged;
|
|
||||||
|
|
||||||
}
|
|
||||||
protected override void UpdateShape(FlyShape shape)
|
|
||||||
{
|
|
||||||
switch (shape.ShapeType)
|
|
||||||
{
|
|
||||||
case ShapeTypeEnum.Line:
|
|
||||||
// 判断是否为第一条直线或第二条直线
|
|
||||||
if (_line1 == shape)
|
|
||||||
{
|
|
||||||
//_line1 = shape;
|
|
||||||
var pts1 = _line1.Points;
|
|
||||||
_line1X1 = pts1[0].X;
|
|
||||||
_line1Y1 = pts1[0].Y;
|
|
||||||
_line1X2 = pts1[1].X;
|
|
||||||
_line1Y2 = pts1[1].Y;
|
|
||||||
_lineWidth = _line1.LineVirtualRectWidth;
|
|
||||||
|
|
||||||
tbLine1X1.Text = _line1X1.ToString("F3");
|
|
||||||
tbLine1Y1.Text = _line1Y1.ToString("F3");
|
|
||||||
tbLine1X2.Text = _line1X2.ToString("F3");
|
|
||||||
tbLine1Y2.Text = _line1Y2.ToString("F3");
|
|
||||||
//NumRectWidth1.Value = (decimal)_lineWidth;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//_line2 = shape;
|
|
||||||
var pts2 = _line2.Points;
|
|
||||||
_line2X1 = pts2[0].X;
|
|
||||||
_line2Y1 = pts2[0].Y;
|
|
||||||
_line2X2 = pts2[1].X;
|
|
||||||
_line2Y2 = pts2[1].Y;
|
|
||||||
_line2Width = _line2.LineVirtualRectWidth;
|
|
||||||
|
|
||||||
tbLine2X1.Text = _line2X1.ToString("F3");
|
|
||||||
tbLine2Y1.Text = _line2Y1.ToString("F3");
|
|
||||||
tbLine2X2.Text = _line2X2.ToString("F3");
|
|
||||||
tbLine2Y2.Text = _line2Y2.ToString("F3");
|
|
||||||
// NumRectWidth2.Value = (decimal)_line2Width;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void GuideLineCircleCtrl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_mouseMoved(PointF pos)
|
|
||||||
{
|
|
||||||
if (InvokeRequired)
|
|
||||||
{
|
|
||||||
Invoke(Canvas_mouseMoved, pos);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lblStatus.Text = $"X:{pos.X}, Y:{pos.Y}";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_selectionChanged(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
//if (shapes.Count != 1)
|
|
||||||
//{
|
|
||||||
// // panelGuide.Controls.Clear();
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
//SwitchGuideForm(shapes[0].ShapeType);
|
|
||||||
// Canvas_OnShapeUpdateEvent(shapes[0]);
|
|
||||||
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_OnShapeMoving(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateShape(shapes[0]);
|
|
||||||
}
|
|
||||||
private void Canvas_newShape()
|
|
||||||
{
|
|
||||||
// 自动切换到下一条直线绘制
|
|
||||||
if (_line1 == null)
|
|
||||||
{
|
|
||||||
_line1 = this.canvas.Shapes.LastOrDefault(shp => shp.ShapeType == ShapeTypeEnum.Line);
|
|
||||||
}
|
|
||||||
else if (_line2 == null)
|
|
||||||
{
|
|
||||||
_line2 = this.canvas.Shapes.LastOrDefault(shp => shp.ShapeType == ShapeTypeEnum.Line);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 停止绘制模式,用户可以根据需要重新启用
|
|
||||||
this.canvas.StopDraw();
|
|
||||||
//this.canvas.StopDraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnCreateLineOne_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// this.canvas.Shapes.RemoveAll(shp => shp == _line1); // 移除第一条直线
|
|
||||||
this._line1 = null;
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
this.canvas.StartDraw(ShapeTypeEnum.Line); // 启动绘制模式
|
|
||||||
this.canvas.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnCreateLineTwo_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// this.canvas.Shapes.RemoveAll(shp => shp == _line2); // 移除第二条直线
|
|
||||||
this._line2 = null;
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
this.canvas.StartDraw(ShapeTypeEnum.Line); // 启动绘制模式
|
|
||||||
this.canvas.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnExecute_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.canvas.pixmap == null)
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先打开图片");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.canvas.OutsideShapes.Clear();
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
|
|
||||||
flag = new List<double>();
|
|
||||||
Distance = new List<double>();
|
|
||||||
Line1_RowBegin = new List<double>();
|
|
||||||
Line1_ColBegin = new List<double>();
|
|
||||||
Line1_RowEnd = new List<double>();
|
|
||||||
Line1_ColEnd = new List<double>();
|
|
||||||
Line2_RowBegin = new List<double>();
|
|
||||||
Line2_ColBegin = new List<double>();
|
|
||||||
Line2_RowEnd = new List<double>();
|
|
||||||
Line2_ColEnd = new List<double>();
|
|
||||||
Dictionary<string, HObject> inputImg = new Dictionary<string, HObject>();
|
|
||||||
|
|
||||||
if (hImage == null)
|
|
||||||
{
|
|
||||||
HOperatorSet.ReadImage(out hImage, CurrentImageFile);
|
|
||||||
}
|
|
||||||
inputImg["INPUT_Image"] = hImage;
|
|
||||||
|
|
||||||
Dictionary<string, HTuple> inputPara = new Dictionary<string, HTuple>();
|
|
||||||
|
|
||||||
|
|
||||||
// 获取矩形的 4 个点
|
|
||||||
PointF[] Points = this._line1.LineVirtualRectPoints;
|
|
||||||
if (Points.Count() < 4)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PointF Point1 = Points[0];
|
|
||||||
PointF Point2 = Points[1];
|
|
||||||
PointF Point3 = Points[2];
|
|
||||||
PointF Point4 = Points[3];
|
|
||||||
PointF Point5 = Points[0];
|
|
||||||
|
|
||||||
float x1 = Point1.X;
|
|
||||||
float y1 = Point1.Y;
|
|
||||||
|
|
||||||
float x2 = Point2.X;
|
|
||||||
float y2 = Point2.Y;
|
|
||||||
|
|
||||||
float x3 = Point3.X;
|
|
||||||
float y3 = Point3.Y;
|
|
||||||
|
|
||||||
float x4 = Point4.X;
|
|
||||||
float y4 = Point4.Y;
|
|
||||||
|
|
||||||
float x5 = Point5.X;
|
|
||||||
float y5 = Point5.Y;
|
|
||||||
|
|
||||||
|
|
||||||
float[] array1X = new float[] { x1, x2, x3, x4, x5 };
|
|
||||||
HTuple hTupleArray1X = new HTuple(array1X);
|
|
||||||
|
|
||||||
float[] array1Y = new float[] { y1, y2, y3, y4, y5 };
|
|
||||||
HTuple hTupleArray1Y = new HTuple(array1Y);
|
|
||||||
|
|
||||||
|
|
||||||
strarray1X = string.Join(",", array1X);
|
|
||||||
strarray1Y = string.Join(",", array1Y);
|
|
||||||
|
|
||||||
|
|
||||||
// 获取矩形的 4 个点
|
|
||||||
PointF[] Points2 = this._line2.LineVirtualRectPoints;
|
|
||||||
if (Points2.Count() < 4)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PointF Point21 = Points2[0];
|
|
||||||
PointF Point22 = Points2[1];
|
|
||||||
PointF Point23 = Points2[2];
|
|
||||||
PointF Point24 = Points2[3];
|
|
||||||
PointF Point25 = Points2[0];
|
|
||||||
|
|
||||||
float x21 = Point21.X;
|
|
||||||
float y21 = Point21.Y;
|
|
||||||
|
|
||||||
float x22 = Point22.X;
|
|
||||||
float y22 = Point22.Y;
|
|
||||||
|
|
||||||
float x23 = Point23.X;
|
|
||||||
float y23 = Point23.Y;
|
|
||||||
|
|
||||||
float x24 = Point24.X;
|
|
||||||
float y24 = Point24.Y;
|
|
||||||
|
|
||||||
float x25 = Point25.X;
|
|
||||||
float y25 = Point25.Y;
|
|
||||||
|
|
||||||
|
|
||||||
float[] array2X = new float[] { x21, x22, x23, x24, x25 };
|
|
||||||
HTuple hTupleArray2X = new HTuple(array2X);
|
|
||||||
|
|
||||||
float[] array2Y = new float[] { y21, y22, y23, y24, y25 };
|
|
||||||
HTuple hTupleArray2Y = new HTuple(array2Y);
|
|
||||||
|
|
||||||
|
|
||||||
strarray2X = string.Join(",", array2X);
|
|
||||||
strarray2Y = string.Join(",", array2Y);
|
|
||||||
|
|
||||||
inputPara["Line1_LX"] = _line1X1;
|
|
||||||
inputPara["Line1_LY"] = _line1Y1;
|
|
||||||
inputPara["Line1_RX"] = _line1X2;
|
|
||||||
inputPara["Line1_RY"] = _line1Y2;
|
|
||||||
|
|
||||||
inputPara["Line2_LX"] = _line2X1;
|
|
||||||
inputPara["Line2_LY"] = _line2Y1;
|
|
||||||
inputPara["Line2_RX"] = _line2X2;
|
|
||||||
inputPara["Line2_RY"] = _line2Y2;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inputPara["Line1_XRect"] = hTupleArray1X;
|
|
||||||
inputPara["Line1_YRect"] = hTupleArray1Y;
|
|
||||||
|
|
||||||
inputPara["Line2_XRect"] = hTupleArray2X;
|
|
||||||
inputPara["Line2_YRect"] = hTupleArray2Y;
|
|
||||||
|
|
||||||
List<string> outputKeys = new List<string>()
|
|
||||||
{
|
|
||||||
"OUTPUT_Flag",
|
|
||||||
"Distance",
|
|
||||||
"Line1_RowBegin",
|
|
||||||
"Line1_ColBegin",
|
|
||||||
"Line1_RowEnd",
|
|
||||||
"Line1_ColEnd",
|
|
||||||
"Line2_RowBegin",
|
|
||||||
"Line2_ColBegin",
|
|
||||||
"Line2_RowEnd",
|
|
||||||
"Line2_ColEnd"
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
ExecuteHScript(
|
|
||||||
inputImg,
|
|
||||||
inputPara,
|
|
||||||
outputKeys);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void btnLoadImage_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenImageFile(bitmap =>
|
|
||||||
{
|
|
||||||
this.canvas.LoadPixmap(bitmap);
|
|
||||||
this.canvas.Enabled = true;
|
|
||||||
_line1 = new FlyShape();
|
|
||||||
_line2 = new FlyShape();
|
|
||||||
_line1.AddPoint(new Point(10, 10));
|
|
||||||
_line1.AddPoint(new Point(50, 10));
|
|
||||||
_line2.AddPoint(new Point(10, 20));
|
|
||||||
_line2.AddPoint(new Point(60, 20));
|
|
||||||
_line1.ShapeType = ShapeTypeEnum.Line;
|
|
||||||
_line2.ShapeType = ShapeTypeEnum.Line;
|
|
||||||
|
|
||||||
_line1.IsDrawLineVirtualRect = true;
|
|
||||||
_line1.LineVirtualRectWidth = 40;
|
|
||||||
_line2.IsDrawLineVirtualRect = true;
|
|
||||||
_line2.LineVirtualRectWidth = 40;
|
|
||||||
|
|
||||||
canvas.Shapes.Add(_line1);
|
|
||||||
canvas.Shapes.Add(_line2);
|
|
||||||
canvas.Invalidate();
|
|
||||||
|
|
||||||
UpdateShape(_line1);
|
|
||||||
UpdateShape(_line2);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
string strarray1X = string.Empty;
|
|
||||||
string strarray1Y = string.Empty;
|
|
||||||
string strarray2X = string.Empty;
|
|
||||||
string strarray2Y = string.Empty;
|
|
||||||
List<double> flag =new List<double>();
|
|
||||||
List<double> Distance = new List<double>();
|
|
||||||
List<double> Line1_RowBegin = new List<double>();
|
|
||||||
List<double> Line1_ColBegin = new List<double>();
|
|
||||||
List<double> Line1_RowEnd = new List<double>();
|
|
||||||
List<double> Line1_ColEnd = new List<double>();
|
|
||||||
List<double> Line2_RowBegin = new List<double>();
|
|
||||||
List<double> Line2_ColBegin = new List<double>();
|
|
||||||
List<double> Line2_RowEnd = new List<double>();
|
|
||||||
List<double> Line2_ColEnd = new List<double>();
|
|
||||||
protected override void OnExecuteHScriptResult(
|
|
||||||
bool success,
|
|
||||||
Dictionary<string, HTuple> resultDic,
|
|
||||||
int timeElasped)
|
|
||||||
{
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//"OUTPUT_Flag",
|
|
||||||
// "Distance",
|
|
||||||
// "Line1_RowBegin",
|
|
||||||
// "Line1_ColBegin",
|
|
||||||
// "Line1_RowEnd",
|
|
||||||
// "Line1_ColEnd",
|
|
||||||
// "Line2_RowBegin",
|
|
||||||
// "Line2_ColBegin",
|
|
||||||
// "Line2_RowEnd",
|
|
||||||
// "Line2_ColEnd"
|
|
||||||
|
|
||||||
|
|
||||||
flag = resultDic["OUTPUT_Flag"].HTupleToDouble();
|
|
||||||
Distance = resultDic["Distance"].HTupleToDouble();
|
|
||||||
Line1_RowBegin = resultDic["Line1_RowBegin"].HTupleToDouble();
|
|
||||||
Line1_ColBegin = resultDic["Line1_ColBegin"].HTupleToDouble();
|
|
||||||
Line1_RowEnd = resultDic["Line1_RowEnd"].HTupleToDouble();
|
|
||||||
Line1_ColEnd = resultDic["Line1_ColEnd"].HTupleToDouble();
|
|
||||||
Line2_RowBegin = resultDic["Line2_RowBegin"].HTupleToDouble();
|
|
||||||
Line2_ColBegin = resultDic["Line2_ColBegin"].HTupleToDouble();
|
|
||||||
Line2_RowEnd = resultDic["Line2_RowEnd"].HTupleToDouble();
|
|
||||||
Line2_ColEnd = resultDic["Line2_ColEnd"].HTupleToDouble();
|
|
||||||
|
|
||||||
if (flag.Count > 0)
|
|
||||||
{
|
|
||||||
lblResult.Text = flag[0].ToString();
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lblResult.Text = "无";
|
|
||||||
}
|
|
||||||
if (Distance.Count > 0)
|
|
||||||
{
|
|
||||||
lblDistance.Text = Distance[0].ToString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lblDistance.Text = "0";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flag.Count > 0 && Distance.Count > 0 && Line1_RowBegin.Count > 0 && Line1_ColBegin.Count > 0 && Line1_RowEnd.Count > 0 && Line1_ColEnd.Count > 0 && Line2_RowBegin.Count > 0 && Line2_ColBegin.Count > 0 && Line2_RowEnd.Count > 0 && Line2_ColEnd.Count > 0)
|
|
||||||
{
|
|
||||||
float width = 0;
|
|
||||||
this.canvas.DrawLine(new PointF((float)Line1_ColBegin[0], (float)Line1_RowBegin[0]), new PointF((float)Line1_ColEnd[0], (float)Line1_RowEnd[0]), width);
|
|
||||||
this.canvas.DrawLine(new PointF((float)Line2_ColBegin[0], (float)Line2_RowBegin[0]), new PointF((float)Line2_ColEnd[0], (float)Line2_RowEnd[0]), width);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
lblElapsed.Text = $"{timeElasped} ms";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void NumRectWidth1_ValueChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (_line1 != null)
|
|
||||||
{
|
|
||||||
//_line1.IsDrawLineVirtualRect = true;
|
|
||||||
_line1.LineVirtualRectWidth = (float)NumRectWidth1.Value;
|
|
||||||
UpdateShape(_line1);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void NumericUpDown2_ValueChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (_line2 != null)
|
|
||||||
{
|
|
||||||
// _line2.IsDrawLineVirtualRect = true;
|
|
||||||
_line2.LineVirtualRectWidth = (float)NumRectWidth2.Value;
|
|
||||||
UpdateShape(_line2);
|
|
||||||
this.canvas.Invalidate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnSave_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (lblResult.Text.Equals("无"))
|
|
||||||
{
|
|
||||||
MessageBox.Show("请先进行绘制");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (lblResult.Text != "0")
|
|
||||||
{
|
|
||||||
MessageBox.Show("测量计算错误,无法保存");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//inputPara["Line1_LX"] = _line1X1;
|
|
||||||
//inputPara["Line1_LY"] = _line1Y1;
|
|
||||||
//inputPara["Line1_RX"] = _line1X2;
|
|
||||||
//inputPara["Line1_RY"] = _line1Y2;
|
|
||||||
|
|
||||||
//inputPara["Line2_LX"] = _line2X1;
|
|
||||||
//inputPara["Line2_LY"] = _line2Y1;
|
|
||||||
//inputPara["Line2_RX"] = _line2X2;
|
|
||||||
//inputPara["Line2_RY"] = _line2Y2;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//inputPara["Line1_XRect"] = hTupleArray1X;
|
|
||||||
//inputPara["Line1_YRect"] = hTupleArray1Y;
|
|
||||||
|
|
||||||
//inputPara["Line2_XRect"] = hTupleArray2X;
|
|
||||||
//inputPara["Line2_YRect"] = hTupleArray2Y;
|
|
||||||
|
|
||||||
|
|
||||||
string input = $"Line1_LX:{_line1X1};" +
|
|
||||||
$"Line1_LY:{_line1Y1};" +
|
|
||||||
$"Line1_RX:{_line1X2};" +
|
|
||||||
$"Line1_RY:{_line1Y2};" +
|
|
||||||
$"Line2_LX:{_line2X1};" +
|
|
||||||
$"Line2_LY:{_line2Y1};" +
|
|
||||||
$"Line2_RX:{_line2X2};" +
|
|
||||||
$"Line2_RY:{_line2Y2};" +
|
|
||||||
$"Line1_XRect:{strarray1X};" +
|
|
||||||
$"Line1_YRect:{strarray1Y};" +
|
|
||||||
$"Line2_XRect:{strarray2X};" +
|
|
||||||
$"Line2_YRect:{strarray2Y}"
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
string result = $"Distance:{Distance[0]}";
|
|
||||||
|
|
||||||
|
|
||||||
DataToTriggerEvent(input, result);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="canvas.OutsideShapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="canvas.Shapes" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAERDYW5GbHkuQ2FudmFzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
|
|
||||||
cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAQBAAAAdlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
|
|
||||||
cmljLkxpc3RgMVtbQ2FuRmx5LkNhbnZhcy5TaGFwZS5GbHlTaGFwZSwgQ2FuRmx5LkNhbnZhcywgQ3Vs
|
|
||||||
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lv
|
|
||||||
bgQAAB5DYW5GbHkuQ2FudmFzLlNoYXBlLkZseVNoYXBlW10CAAAACAgJAwAAAAAAAAAAAAAADAQAAAAz
|
|
||||||
Q2FuRmx5LkNhbnZhcywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBwMAAAAAAQAA
|
|
||||||
AAAAAAAEHENhbkZseS5DYW52YXMuU2hhcGUuRmx5U2hhcGUEAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
||||||
93
CanFly/UI/UIMain/FrmMainSize.Designer.cs
generated
@@ -1,93 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
namespace XKRS.CanFly
|
|
||||||
{
|
|
||||||
partial class FrmMainSize
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
statusStrip1 = new StatusStrip();
|
|
||||||
panelContent = new Panel();
|
|
||||||
pageHeader1 = new AntdUI.PageHeader();
|
|
||||||
panelContent.SuspendLayout();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// statusStrip1
|
|
||||||
//
|
|
||||||
statusStrip1.Location = new Point(0, 808);
|
|
||||||
statusStrip1.Name = "statusStrip1";
|
|
||||||
statusStrip1.Size = new Size(1185, 22);
|
|
||||||
statusStrip1.TabIndex = 4;
|
|
||||||
statusStrip1.Text = "statusStrip1";
|
|
||||||
//
|
|
||||||
// panelContent
|
|
||||||
//
|
|
||||||
panelContent.Controls.Add(pageHeader1);
|
|
||||||
panelContent.Dock = DockStyle.Fill;
|
|
||||||
panelContent.Location = new Point(0, 0);
|
|
||||||
panelContent.Margin = new Padding(4, 3, 4, 3);
|
|
||||||
panelContent.Name = "panelContent";
|
|
||||||
panelContent.Size = new Size(1185, 808);
|
|
||||||
panelContent.TabIndex = 5;
|
|
||||||
//
|
|
||||||
// pageHeader1
|
|
||||||
//
|
|
||||||
pageHeader1.BackColor = Color.FromArgb(46, 108, 227);
|
|
||||||
pageHeader1.Dock = DockStyle.Top;
|
|
||||||
pageHeader1.Location = new Point(0, 0);
|
|
||||||
pageHeader1.Mode = AntdUI.TAMode.Dark;
|
|
||||||
pageHeader1.Name = "pageHeader1";
|
|
||||||
pageHeader1.ShowButton = true;
|
|
||||||
pageHeader1.ShowIcon = true;
|
|
||||||
pageHeader1.Size = new Size(1185, 33);
|
|
||||||
pageHeader1.TabIndex = 2;
|
|
||||||
pageHeader1.Text = "尺寸测量";
|
|
||||||
//
|
|
||||||
// FrmMainSize
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new SizeF(7F, 17F);
|
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
|
||||||
ClientSize = new Size(1185, 830);
|
|
||||||
Controls.Add(panelContent);
|
|
||||||
Controls.Add(statusStrip1);
|
|
||||||
FormBorderStyle = FormBorderStyle.FixedSingle;
|
|
||||||
Margin = new Padding(2, 3, 2, 3);
|
|
||||||
Name = "FrmMainSize";
|
|
||||||
StartPosition = FormStartPosition.CenterScreen;
|
|
||||||
Text = "尺寸测量";
|
|
||||||
Load += FrmMain_Load;
|
|
||||||
panelContent.ResumeLayout(false);
|
|
||||||
ResumeLayout(false);
|
|
||||||
PerformLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private StatusStrip statusStrip1;
|
|
||||||
private Panel panelContent;
|
|
||||||
private AntdUI.PageHeader pageHeader1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,440 +0,0 @@
|
|||||||
using AntdUI;
|
|
||||||
using CanFly.Canvas.Shape;
|
|
||||||
using CanFly.Helper;
|
|
||||||
using CanFly.UI;
|
|
||||||
using CanFly.UI.GuidePanel;
|
|
||||||
using CanFly.UI.SizePanel;
|
|
||||||
using CanFly.Util;
|
|
||||||
using DH.Commons.Base;
|
|
||||||
using HalconDotNet;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace XKRS.CanFly
|
|
||||||
{
|
|
||||||
|
|
||||||
public partial class FrmMainSize : Window
|
|
||||||
{
|
|
||||||
|
|
||||||
private string _currentImageFile = "";
|
|
||||||
private System.Windows.Forms.Timer _statusTimer = new System.Windows.Forms.Timer();
|
|
||||||
private SizeBaseGuideControl? _currentGuideCtrl;
|
|
||||||
|
|
||||||
|
|
||||||
private SizeGuideCircleCtrl guideCircleCtrl = new SizeGuideCircleCtrl();
|
|
||||||
private SizeGuideLineCircleCtrl guideLineCircleCtrl = new SizeGuideLineCircleCtrl();
|
|
||||||
private SizeGuideLineLineCtrl guideLineLineCtrl = new SizeGuideLineLineCtrl();
|
|
||||||
private SizeGuideLineCtrl guideLineCtrl = new SizeGuideLineCtrl();
|
|
||||||
private SizeGuideHeightCtrl guideHeightCtrl = new SizeGuideHeightCtrl();
|
|
||||||
string Type=string.Empty;
|
|
||||||
|
|
||||||
|
|
||||||
public string inputtext=string.Empty;
|
|
||||||
public string outtext = string.Empty;
|
|
||||||
DetectionConfig DetectionConfig;
|
|
||||||
public FrmMainSize(string type,DetectionConfig detectionConfig)
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
DetectionConfig = detectionConfig;
|
|
||||||
Type=type;
|
|
||||||
|
|
||||||
guideCircleCtrl.Dock = DockStyle.Fill;
|
|
||||||
guideCircleCtrl.OnControlCloseEvent -= () => panelContent.Controls.Clear();
|
|
||||||
guideCircleCtrl.OnControlCloseEvent += () => panelContent.Controls.Clear();
|
|
||||||
|
|
||||||
|
|
||||||
guideLineCircleCtrl.Dock = DockStyle.Fill;
|
|
||||||
guideLineCircleCtrl.OnControlCloseEvent -= () => panelContent.Controls.Clear();
|
|
||||||
guideLineCircleCtrl.OnControlCloseEvent += () => panelContent.Controls.Clear();
|
|
||||||
|
|
||||||
guideLineLineCtrl.Dock = DockStyle.Fill;
|
|
||||||
guideLineLineCtrl.OnControlCloseEvent -= () => panelContent.Controls.Clear();
|
|
||||||
guideLineLineCtrl.OnControlCloseEvent += () => panelContent.Controls.Clear();
|
|
||||||
|
|
||||||
guideLineCtrl.Dock = DockStyle.Fill;
|
|
||||||
guideLineCtrl.OnControlCloseEvent -= () => panelContent.Controls.Clear();
|
|
||||||
guideLineCtrl.OnControlCloseEvent += () => panelContent.Controls.Clear();
|
|
||||||
|
|
||||||
|
|
||||||
guideHeightCtrl.Dock = DockStyle.Fill;
|
|
||||||
guideHeightCtrl.OnControlCloseEvent -= () => panelContent.Controls.Clear();
|
|
||||||
guideHeightCtrl.OnControlCloseEvent += () => panelContent.Controls.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void FrmMain_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
switch (Type)
|
|
||||||
{
|
|
||||||
case "1":
|
|
||||||
SwitchMeasureMode(guideCircleCtrl);
|
|
||||||
break;
|
|
||||||
case "2":
|
|
||||||
SwitchMeasureMode(guideLineCtrl);
|
|
||||||
break;
|
|
||||||
case "3":
|
|
||||||
SwitchMeasureMode(guideLineLineCtrl);
|
|
||||||
break;
|
|
||||||
case "4":
|
|
||||||
SwitchMeasureMode(guideLineCircleCtrl);
|
|
||||||
break;
|
|
||||||
case "5":
|
|
||||||
SwitchMeasureMode(guideHeightCtrl);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void btnLoadImage_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//OpenFileDialog ofd = new OpenFileDialog();
|
|
||||||
//ofd.Filter = "ͼ<><CDBC><EFBFBD>ļ<EFBFBD>|*.jpg;*.png";
|
|
||||||
//ofd.Multiselect = false;
|
|
||||||
//if (ofd.ShowDialog() == DialogResult.OK)
|
|
||||||
//{
|
|
||||||
// _currentImageFile = ofd.FileName;
|
|
||||||
// Bitmap bitmap = (Bitmap)Image.FromFile(_currentImageFile);
|
|
||||||
// this.canvas.LoadPixmap(bitmap);
|
|
||||||
// this.btnCreateCircle.Enabled = true;
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnMeasureCircle_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//var contentCtrls = panelContent.Controls;
|
|
||||||
|
|
||||||
//if (contentCtrls.Count > 0)
|
|
||||||
//{
|
|
||||||
// if (contentCtrls[0] == guideCircleCtrl)
|
|
||||||
// {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
//panelContent.Controls.Clear();
|
|
||||||
//panelContent.Controls.Add(guideCircleCtrl);
|
|
||||||
|
|
||||||
SwitchMeasureMode(guideCircleCtrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void btnMeasureLineCircle_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SwitchMeasureMode(guideLineCircleCtrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void SwitchMeasureMode(SizeBaseGuideControl control)
|
|
||||||
{
|
|
||||||
var contentCtrls = panelContent.Controls;
|
|
||||||
|
|
||||||
if (contentCtrls.Count > 0)
|
|
||||||
{
|
|
||||||
if (contentCtrls[0] == control)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
panelContent.Controls.Clear();
|
|
||||||
|
|
||||||
control.OnDataPassed -= Control_OnDataPassed;
|
|
||||||
control.OnDataPassed += Control_OnDataPassed;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//control.Dock = DockStyle.Fill;
|
|
||||||
//control.OnControlCloseEvent -= () => panelContent.Controls.Clear();
|
|
||||||
//control.OnControlCloseEvent += () => panelContent.Controls.Clear();
|
|
||||||
panelContent.Controls.Add(control);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Control_OnDataPassed(string obj,string obj1)
|
|
||||||
{
|
|
||||||
inputtext = obj;
|
|
||||||
outtext = obj1;
|
|
||||||
this.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnCreateRect_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//this.canvas.StartDraw(ShapeTypeEnum.Rectangle);
|
|
||||||
//this.btnCreateCircle.Enabled = false;
|
|
||||||
//this.btnStopDraw.Enabled = true;
|
|
||||||
//this.canvas.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnStopDraw_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//panelGuide.Controls.Clear();
|
|
||||||
StopDrawMode();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void StartDrawMode()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void StopDrawMode()
|
|
||||||
{
|
|
||||||
//this.canvas.StopDraw();
|
|
||||||
|
|
||||||
|
|
||||||
//this.btnStopDraw.Enabled = false;
|
|
||||||
//this.btnCreateCircle.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Status(string message, int delay = 5000)
|
|
||||||
{
|
|
||||||
//_statusTimer.Stop();
|
|
||||||
//// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
||||||
//lblStatus.Text = message;
|
|
||||||
|
|
||||||
//// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
||||||
|
|
||||||
//_statusTimer.Interval = delay; // <20><><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|
||||||
//_statusTimer.Tick += (sender, e) =>
|
|
||||||
//{
|
|
||||||
// _statusTimer.Stop(); // ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1>
|
|
||||||
// lblStatus.Text = string.Empty; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>Ϣ
|
|
||||||
//};
|
|
||||||
//_statusTimer.Start(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_mouseMoved(PointF pos)
|
|
||||||
{
|
|
||||||
//if (InvokeRequired)
|
|
||||||
//{
|
|
||||||
// Invoke(Canvas_mouseMoved, pos);
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//lblStatus.Text = $"X:{pos.X}, Y:{pos.Y}";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_selectionChanged(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
if (shapes.Count != 1)
|
|
||||||
{
|
|
||||||
// panelGuide.Controls.Clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//SwitchGuideForm(shapes[0].ShapeType);
|
|
||||||
Canvas_OnShapeUpdateEvent(shapes[0]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void SwitchGuideForm(ShapeTypeEnum shapeType)
|
|
||||||
{
|
|
||||||
//if (_currentGuideCtrl == null)
|
|
||||||
//{
|
|
||||||
// switch (shapeType)
|
|
||||||
// {
|
|
||||||
// case ShapeTypeEnum.Point:
|
|
||||||
// break;
|
|
||||||
// case ShapeTypeEnum.Line:
|
|
||||||
// break;
|
|
||||||
// case ShapeTypeEnum.Rectangle:
|
|
||||||
// break;
|
|
||||||
// case ShapeTypeEnum.Circle:
|
|
||||||
// _currentGuideCtrl = new GuideCircleCtrl();
|
|
||||||
// _currentGuideCtrl.ImageFile = _currentImageFile;
|
|
||||||
// _currentGuideCtrl.OnDrawCircle += this.canvas.DrawCircle;
|
|
||||||
// _currentGuideCtrl.OnClose += () =>
|
|
||||||
// {
|
|
||||||
// panelGuide.Controls.Clear();
|
|
||||||
// StopDrawMode();
|
|
||||||
// };
|
|
||||||
// break;
|
|
||||||
// case ShapeTypeEnum.Polygon:
|
|
||||||
// break;
|
|
||||||
// case ShapeTypeEnum.LineStrip:
|
|
||||||
// break;
|
|
||||||
// default:
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//_currentGuideCtrl?.AddToPanel(panelGuide);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_OnShapeMoving(List<FlyShape> shapes)
|
|
||||||
{
|
|
||||||
//if (shapes.Count != 1)
|
|
||||||
//{
|
|
||||||
// panelGuide.Controls.Clear();
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//_currentGuideCtrl?.UpdateShape(shapes[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Canvas_OnShapeUpdateEvent(FlyShape shape)
|
|
||||||
{
|
|
||||||
switch (shape.ShapeType)
|
|
||||||
{
|
|
||||||
case ShapeTypeEnum.Point:
|
|
||||||
break;
|
|
||||||
case ShapeTypeEnum.Line:
|
|
||||||
break;
|
|
||||||
case ShapeTypeEnum.Rectangle:
|
|
||||||
break;
|
|
||||||
case ShapeTypeEnum.Circle:
|
|
||||||
{
|
|
||||||
//_currentGuideCtrl?.UpdateShape(shape);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ShapeTypeEnum.Polygon:
|
|
||||||
break;
|
|
||||||
case ShapeTypeEnum.LineStrip:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnTestOutsideDraw_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//Random random = new Random((int)DateTime.Now.Ticks);
|
|
||||||
|
|
||||||
//for (int i = 0; i < 10; i++)
|
|
||||||
//{
|
|
||||||
// // this.canvas.DrawCircle(new PointF(500, 500), 100);
|
|
||||||
|
|
||||||
// int x = random.Next() % 500;
|
|
||||||
// int y = random.Next() % 500;
|
|
||||||
// int r = random.Next() % 200;
|
|
||||||
|
|
||||||
// Debug.WriteLine($"X:{x}\tY:{y}\tR:{r}");
|
|
||||||
|
|
||||||
// this.canvas.DrawCircle(new PointF(x, y), r);
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnTestClearDraw_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//this.canvas.ClearDraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private async void btnTestCircleMeasure_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//string dir = Path.Combine(Environment.CurrentDirectory, "hscripts");
|
|
||||||
//string file = "CircleMeasure.hdvp";
|
|
||||||
//string filePath = Path.Combine(dir, file);
|
|
||||||
//if (!File.Exists(filePath))
|
|
||||||
//{
|
|
||||||
// MessageBox.Show($"<22>ļ<EFBFBD> {filePath} <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//HObject? hImage = null;
|
|
||||||
|
|
||||||
//try
|
|
||||||
//{
|
|
||||||
// HDevEngineTool tool = new HDevEngineTool(dir);
|
|
||||||
// tool.LoadProcedure(Path.GetFileNameWithoutExtension(file));
|
|
||||||
|
|
||||||
// // string imageFile = Path.Combine(Environment.CurrentDirectory, "hscripts", "image.png");
|
|
||||||
|
|
||||||
// HOperatorSet.ReadImage(out hImage, _currentImageFile);
|
|
||||||
// tool.InputImageDic["INPUT_Image"] = hImage;
|
|
||||||
// tool.InputTupleDic["XCenter"] = 981.625;
|
|
||||||
// tool.InputTupleDic["YCenter"] = 931.823;
|
|
||||||
// tool.InputTupleDic["Radius"] = 900.141;
|
|
||||||
|
|
||||||
// Stopwatch sw = new Stopwatch();
|
|
||||||
// sw.Start();
|
|
||||||
// if (!tool.RunProcedure(out string error, out _))
|
|
||||||
// {
|
|
||||||
// throw new Exception();
|
|
||||||
// }
|
|
||||||
// sw.Stop();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// var flag = tool.GetResultTuple("OUTPUT_Flag").HTupleToDouble();
|
|
||||||
// List<double> x = tool.GetResultTuple("RXCenter").HTupleToDouble();
|
|
||||||
// var y = tool.GetResultTuple("RYCenter").HTupleToDouble();
|
|
||||||
// var r = tool.GetResultTuple("RRadius").HTupleToDouble();
|
|
||||||
|
|
||||||
// if (flag.Count > 0 && x.Count > 0 && y.Count > 0 && r.Count > 0)
|
|
||||||
// {
|
|
||||||
// this.canvas.DrawCircle(new PointF((float)x[0], (float)y[0]), (float)r[0]);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //
|
|
||||||
// Debug.WriteLine("");
|
|
||||||
//}
|
|
||||||
//catch (Exception)
|
|
||||||
//{
|
|
||||||
// throw;
|
|
||||||
//}
|
|
||||||
//finally
|
|
||||||
//{
|
|
||||||
// hImage?.Dispose();
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnTest_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//this.canvas.DrawRectangle(new PointF(300, 300),
|
|
||||||
// new PointF(800, 500), 33f);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void btnRotateTest_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//if (this.canvas.Shapes.Count == 0)
|
|
||||||
//{
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//this.canvas.Shapes[0]._currentRotateAngle += 10;
|
|
||||||
//this.canvas.Invalidate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnMeasureLineline_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SwitchMeasureMode(guideLineLineCtrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnMeasureLine_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SwitchMeasureMode(guideLineCtrl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -14,9 +14,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\CanFly.Canvas\CanFly.Canvas.csproj" />
|
<ProjectReference Include="..\CanFly.Canvas\CanFly.Canvas.csproj" />
|
||||||
<ProjectReference Include="..\DH.Commons\DH.Commons.csproj" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -24,7 +29,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AntdUI" Version="1.8.9" />
|
|
||||||
<PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" />
|
<PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" />
|
||||||
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241108" />
|
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241108" />
|
||||||
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.10.0.20241108" />
|
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.10.0.20241108" />
|
||||||
|
|||||||
@@ -343,18 +343,7 @@ namespace DH.Commons.Base
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 其他方法保持原有逻辑
|
// 其他方法保持原有逻辑
|
||||||
public MatSet CopyImageSet(MatSet srcSet)
|
public Action<DateTime, CameraBase, Mat> OnHImageOutput { get; set; }
|
||||||
{
|
|
||||||
MatSet imageSet = new MatSet
|
|
||||||
{
|
|
||||||
Id = srcSet.Id,
|
|
||||||
_mat = srcSet._mat.Clone(),
|
|
||||||
// ImageSaveOption = srcSet.ImageSaveOption.Copy(),
|
|
||||||
ImageTime = srcSet.ImageTime
|
|
||||||
};
|
|
||||||
return imageSet;
|
|
||||||
}
|
|
||||||
public Action<DateTime, CameraBase, MatSet> OnHImageOutput { get; set; }
|
|
||||||
|
|
||||||
public virtual bool CameraConnect() { return false; }
|
public virtual bool CameraConnect() { return false; }
|
||||||
|
|
||||||
|
|||||||
@@ -488,7 +488,6 @@ namespace DH.Commons.Base
|
|||||||
#region 属性字段
|
#region 属性字段
|
||||||
private string _id = Guid.NewGuid().ToString();
|
private string _id = Guid.NewGuid().ToString();
|
||||||
private string _name;
|
private string _name;
|
||||||
private EnumDetectionType _detectionType= EnumDetectionType.深度学习;
|
|
||||||
private string _cameraSourceId = "";
|
private string _cameraSourceId = "";
|
||||||
private List<RelatedCamera> _cameraCollects = new List<RelatedCamera>();
|
private List<RelatedCamera> _cameraCollects = new List<RelatedCamera>();
|
||||||
private bool _isEnableGPU;
|
private bool _isEnableGPU;
|
||||||
@@ -510,7 +509,7 @@ namespace DH.Commons.Base
|
|||||||
private AntList<SizeTreatParam> _sizeTreatParamList = new AntList<SizeTreatParam>();
|
private AntList<SizeTreatParam> _sizeTreatParamList = new AntList<SizeTreatParam>();
|
||||||
|
|
||||||
private CustomizedPoint _showLocation = new CustomizedPoint();
|
private CustomizedPoint _showLocation = new CustomizedPoint();
|
||||||
private string _imageSaveDirectory= "D://PROJECTS//Images//";
|
private string _imageSaveDirectory="D://Images";
|
||||||
private bool _saveOKOriginal = false;
|
private bool _saveOKOriginal = false;
|
||||||
private bool _saveNGOriginal = false;
|
private bool _saveNGOriginal = false;
|
||||||
private bool _saveOKDetect = false;
|
private bool _saveOKDetect = false;
|
||||||
@@ -790,19 +789,7 @@ namespace DH.Commons.Base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Category("检测配置")]
|
|
||||||
[DisplayName("检测类型")]
|
|
||||||
[Description("检测类型")]
|
|
||||||
public EnumDetectionType DetectionType
|
|
||||||
{
|
|
||||||
get => _detectionType;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (_detectionType == value) return;
|
|
||||||
_detectionType = value;
|
|
||||||
OnPropertyChanged(nameof(DetectionType));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Category("显示配置")]
|
[Category("显示配置")]
|
||||||
[DisplayName("显示位置")]
|
[DisplayName("显示位置")]
|
||||||
@@ -1085,15 +1072,6 @@ namespace DH.Commons.Base
|
|||||||
OnPropertyChanged(nameof(CellLinks));
|
OnPropertyChanged(nameof(CellLinks));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool FilterOperation(DetectionResultDetail recongnitionResult)
|
|
||||||
{
|
|
||||||
|
|
||||||
double compareValue = recongnitionResult.Area;
|
|
||||||
double compareScoreValue = recongnitionResult.Score;
|
|
||||||
return (compareValue >= MinArea && compareValue <= MaxArea)&& (compareScoreValue >= MinScore && compareScoreValue <= MaxScore);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SizeTreatParam : NotifyProperty
|
public class SizeTreatParam : NotifyProperty
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ namespace DH.Commons.Base
|
|||||||
|
|
||||||
//if (InitialConfig.IsEnableLog)
|
//if (InitialConfig.IsEnableLog)
|
||||||
//{
|
//{
|
||||||
LoggerHelper.LogAsync(msg);
|
// LoggerHelper.LogAsync(msg);
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace DH.Commons.Base
|
|||||||
|
|
||||||
public HTuple hv_ModelID;
|
public HTuple hv_ModelID;
|
||||||
|
|
||||||
public abstract DetectStationResult RunInference(MatSet originImgSet, string detectionId = null);
|
public abstract DetectStationResult RunInference(Mat originImgSet, string detectionId = null);
|
||||||
|
|
||||||
//public abstract void SaveDetectResultAsync(DetectStationResult detectResult);
|
//public abstract void SaveDetectResultAsync(DetectStationResult detectResult);
|
||||||
|
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.Commons.Base
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
public class VisualLocalization
|
|
||||||
{
|
|
||||||
// 必须包含公共无参构造函数
|
|
||||||
public VisualLocalization() { }
|
|
||||||
|
|
||||||
public string CameraName { get; set; }
|
|
||||||
public string ModelPath { get; set; }
|
|
||||||
public string ImgPath { get; set; }
|
|
||||||
public string Threshold { get; set; }
|
|
||||||
public string Direction { get; set; }
|
|
||||||
public string Speed { get; set; }
|
|
||||||
|
|
||||||
// 保存到文件
|
|
||||||
public void SaveToFile(string filePath)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var options = new JsonSerializerOptions
|
|
||||||
{
|
|
||||||
WriteIndented = true, // 美化格式
|
|
||||||
IgnoreNullValues = true // 忽略空值
|
|
||||||
};
|
|
||||||
|
|
||||||
string json = JsonSerializer.Serialize(this, options);
|
|
||||||
File.WriteAllText(filePath, json);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException($"保存失败: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 从文件加载
|
|
||||||
public static VisualLocalization LoadFromFile(string filePath)
|
|
||||||
{
|
|
||||||
if (!File.Exists(filePath))
|
|
||||||
throw new FileNotFoundException("文件不存在", filePath);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string json = File.ReadAllText(filePath);
|
|
||||||
return JsonSerializer.Deserialize<VisualLocalization>(json);
|
|
||||||
}
|
|
||||||
catch (JsonException ex)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException($"JSON解析错误: {ex.Message}");
|
|
||||||
}
|
|
||||||
catch (IOException ex)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException($"文件读取失败: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -14,11 +14,8 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AntdUI" Version="1.8.9" />
|
<PackageReference Include="AntdUI" Version="1.8.9" />
|
||||||
<PackageReference Include="hyjiacan.pinyin4net" Version="4.1.1" />
|
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" />
|
<PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" />
|
||||||
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241108" />
|
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241108" />
|
||||||
|
|||||||
@@ -141,14 +141,6 @@ namespace DH.Commons.Enums
|
|||||||
False,
|
False,
|
||||||
True
|
True
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum EnumDetectionType
|
|
||||||
{
|
|
||||||
深度学习,
|
|
||||||
尺寸测量
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public enum StreamFormat
|
public enum StreamFormat
|
||||||
{
|
{
|
||||||
[Description("8位图像")]
|
[Description("8位图像")]
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ using System.Text.Json;
|
|||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using AntdUI;
|
using AntdUI;
|
||||||
using DH.Commons.Base;
|
using DH.Commons.Base;
|
||||||
using DH.Commons.Enums;
|
|
||||||
using DH.Commons.Models;
|
using DH.Commons.Models;
|
||||||
|
|
||||||
namespace DH.Commons.Helper
|
namespace DH.Commons.Helper
|
||||||
@@ -128,13 +127,6 @@ namespace DH.Commons.Helper
|
|||||||
{
|
{
|
||||||
foreach (var label in config.DetectionLableList)
|
foreach (var label in config.DetectionLableList)
|
||||||
{
|
{
|
||||||
//是否假如判断标签为中文转为为英文
|
|
||||||
//string pinyinlabel = FileHelper.ConvertHanzitoPinyinWithNumbers(label.LabelName.ToString());
|
|
||||||
//if (FileHelper.IsAlphaNumericOnly(pinyinlabel))
|
|
||||||
//{
|
|
||||||
|
|
||||||
//}
|
|
||||||
|
|
||||||
// 根据实际需求格式化输出
|
// 根据实际需求格式化输出
|
||||||
writer.WriteLine(label.LabelName.ToString()); // 假设DetectionLable重写了ToString()
|
writer.WriteLine(label.LabelName.ToString()); // 假设DetectionLable重写了ToString()
|
||||||
|
|
||||||
|
|||||||
@@ -1,507 +0,0 @@
|
|||||||
using hyjiacan.py4n;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.Commons.Enums
|
|
||||||
{
|
|
||||||
|
|
||||||
public static class FileHelper
|
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理两个文件夹中的文件,保留文件名交集部分,其余文件删除。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="imagesFolder">图片文件夹路径</param>
|
|
||||||
/// <param name="labelsFolder">标签文件夹路径</param>
|
|
||||||
public static void CleanupFolders(string imagesFolder, string labelsFolder)
|
|
||||||
{
|
|
||||||
if (!Directory.Exists(imagesFolder))
|
|
||||||
{
|
|
||||||
Console.WriteLine($"Images folder does not exist: {imagesFolder}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Directory.Exists(labelsFolder))
|
|
||||||
{
|
|
||||||
Console.WriteLine($"Labels folder does not exist: {labelsFolder}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取文件名(不包含扩展名)
|
|
||||||
var imageFiles = Directory.GetFiles(imagesFolder)
|
|
||||||
.Select(Path.GetFileNameWithoutExtension)
|
|
||||||
.ToHashSet();
|
|
||||||
|
|
||||||
var labelFiles = Directory.GetFiles(labelsFolder)
|
|
||||||
.Select(Path.GetFileNameWithoutExtension)
|
|
||||||
.ToHashSet();
|
|
||||||
|
|
||||||
// 计算交集
|
|
||||||
var commonFiles = imageFiles.Intersect(labelFiles);
|
|
||||||
|
|
||||||
// 删除 images 文件夹中不在交集中的文件
|
|
||||||
foreach (var imagePath in Directory.GetFiles(imagesFolder))
|
|
||||||
{
|
|
||||||
string fileNameWithoutExt = Path.GetFileNameWithoutExtension(imagePath);
|
|
||||||
if (!commonFiles.Contains(fileNameWithoutExt))
|
|
||||||
{
|
|
||||||
File.Delete(imagePath);
|
|
||||||
Console.WriteLine($"Deleted image file: {imagePath}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除 labels 文件夹中不在交集中的文件
|
|
||||||
foreach (var labelPath in Directory.GetFiles(labelsFolder))
|
|
||||||
{
|
|
||||||
string fileNameWithoutExt = Path.GetFileNameWithoutExtension(labelPath);
|
|
||||||
if (!commonFiles.Contains(fileNameWithoutExt))
|
|
||||||
{
|
|
||||||
File.Delete(labelPath);
|
|
||||||
Console.WriteLine($"Deleted label file: {labelPath}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Console.WriteLine("Folders cleaned successfully!");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取文件夹中所有图片文件的个数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="folderPath">目标文件夹路径</param>
|
|
||||||
/// <param name="includeSubdirectories">是否包含子文件夹,默认不包含</param>
|
|
||||||
/// <returns>图片文件总数</returns>
|
|
||||||
public static int CountImageFiles(string folderPath, bool includeSubdirectories = false)
|
|
||||||
{
|
|
||||||
if (!Directory.Exists(folderPath))
|
|
||||||
{
|
|
||||||
throw new DirectoryNotFoundException($"The folder '{folderPath}' does not exist.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 支持的图片格式
|
|
||||||
string[] imageExtensions = { "*.jpg", "*.jpeg", "*.png", "*.bmp", "*.gif" };
|
|
||||||
|
|
||||||
// 搜索选项
|
|
||||||
SearchOption searchOption = includeSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
|
|
||||||
|
|
||||||
int fileCount = 0;
|
|
||||||
|
|
||||||
foreach (var ext in imageExtensions)
|
|
||||||
{
|
|
||||||
fileCount += Directory.GetFiles(folderPath, ext, searchOption).Length;
|
|
||||||
}
|
|
||||||
|
|
||||||
return fileCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 删除一个目录所有子目录和文件
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="path"></param>
|
|
||||||
public static void DeleteDirectoryAndContents(string path)
|
|
||||||
{
|
|
||||||
// 确保目录存在
|
|
||||||
if (Directory.Exists(path))
|
|
||||||
{
|
|
||||||
// 删除目录中的文件
|
|
||||||
string[] files = Directory.GetFiles(path);
|
|
||||||
foreach (var file in files)
|
|
||||||
{
|
|
||||||
File.Delete(file);
|
|
||||||
Console.WriteLine($"文件已删除: {file}");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除目录中的子目录
|
|
||||||
string[] directories = Directory.GetDirectories(path);
|
|
||||||
foreach (var directory in directories)
|
|
||||||
{
|
|
||||||
DeleteDirectoryAndContents(directory); // 递归删除子目录
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除空目录
|
|
||||||
Directory.Delete(path);
|
|
||||||
Console.WriteLine($"目录已删除: {path}");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("目录不存在!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 将一个文件夹中的所有图片文件和 JSON 文件复制到另一个文件夹中
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sourceDirectory"></param>
|
|
||||||
/// <param name="destinationDirectory"></param>
|
|
||||||
public static void CopyImageAndJsonFiles(string sourceDirectory, string destinationDirectory)
|
|
||||||
{
|
|
||||||
// 确保目标文件夹存在,如果不存在则创建它
|
|
||||||
if (!Directory.Exists(destinationDirectory))
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(destinationDirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取源文件夹中的所有图片文件和 JSON 文件
|
|
||||||
string[] imageFiles = Directory.GetFiles(sourceDirectory, "*.*")
|
|
||||||
.Where(file => file.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
file.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
file.EndsWith(".png", StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
file.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
file.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
file.EndsWith(".tiff", StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
file.EndsWith(".webp", StringComparison.OrdinalIgnoreCase))
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
string[] jsonFiles = Directory.GetFiles(sourceDirectory, "*.json");
|
|
||||||
|
|
||||||
// 合并图片文件和 JSON 文件
|
|
||||||
string[] filesToCopy = imageFiles.Concat(jsonFiles).ToArray();
|
|
||||||
|
|
||||||
foreach (string file in filesToCopy)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// 获取文件名
|
|
||||||
string fileName = Path.GetFileName(file);
|
|
||||||
|
|
||||||
// 拼接目标文件的完整路径
|
|
||||||
string destinationFile = Path.Combine(destinationDirectory, fileName);
|
|
||||||
|
|
||||||
// 如果目标文件已存在,可以选择覆盖或跳过(这里我们选择跳过)
|
|
||||||
if (File.Exists(destinationFile))
|
|
||||||
{
|
|
||||||
Console.WriteLine($"文件 {fileName} 已存在,跳过复制.");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 复制文件
|
|
||||||
File.Copy(file, destinationFile);
|
|
||||||
Console.WriteLine($"文件 {fileName} 已成功复制到 {destinationDirectory}");
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"复制文件 {file} 时出错: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 遍历图片文件夹,检查对应的标签文件夹中是否有同名的 .txt 文件。
|
|
||||||
/// 如果没有,则创建一个空的 .txt 文件。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="imagesDirectory">图片文件夹路径</param>
|
|
||||||
/// <param name="labelsDirectory">标签文件夹路径</param>
|
|
||||||
public static void ProcessImageFiles(string imagesDirectory, string labelsDirectory)
|
|
||||||
{
|
|
||||||
// 检查 images 目录是否存在
|
|
||||||
if (!Directory.Exists(imagesDirectory))
|
|
||||||
{
|
|
||||||
throw new DirectoryNotFoundException($"目录 {imagesDirectory} 不存在.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查 labels 目录是否存在,如果不存在则创建
|
|
||||||
if (!Directory.Exists(labelsDirectory))
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(labelsDirectory);
|
|
||||||
Console.WriteLine($"目录 {labelsDirectory} 已创建.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取 images 目录中的所有文件(包括图片文件)
|
|
||||||
string[] imageFiles = Directory.GetFiles(imagesDirectory, "*.*", SearchOption.TopDirectoryOnly);
|
|
||||||
string[] validExtensions = { ".jpg", ".jpeg", ".png", ".bmp", ".gif" }; // 支持的图片格式
|
|
||||||
|
|
||||||
foreach (var imageFile in imageFiles)
|
|
||||||
{
|
|
||||||
// 检查文件扩展名是否为支持的图片格式
|
|
||||||
string extension = Path.GetExtension(imageFile).ToLower();
|
|
||||||
if (Array.Exists(validExtensions, ext => ext == extension))
|
|
||||||
{
|
|
||||||
// 获取图片文件的文件名(不包括扩展名)
|
|
||||||
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(imageFile);
|
|
||||||
|
|
||||||
// 生成对应的 txt 文件路径
|
|
||||||
string labelFilePath = Path.Combine(labelsDirectory, fileNameWithoutExtension + ".txt");
|
|
||||||
|
|
||||||
// 如果该 txt 文件不存在,则创建一个空白 txt 文件
|
|
||||||
if (!File.Exists(labelFilePath))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.WriteAllText(labelFilePath, string.Empty); // 创建空白 txt 文件
|
|
||||||
Console.WriteLine($"创建空白文件: {labelFilePath}");
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"无法创建文件 {labelFilePath}: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 封装的函数:删除没有对应 JSON 文件的图片
|
|
||||||
public static void DeleteUnmatchedImages(string labelsFolderPath, string imagesFolderPath)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// 获取 labels 文件夹中的所有 JSON 文件名(去除扩展名)
|
|
||||||
string[] jsonFiles = Directory.GetFiles(labelsFolderPath, "*.txt");
|
|
||||||
HashSet<string> jsonFileNames = new HashSet<string>();
|
|
||||||
|
|
||||||
foreach (string jsonFile in jsonFiles)
|
|
||||||
{
|
|
||||||
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(jsonFile);
|
|
||||||
jsonFileNames.Add(fileNameWithoutExtension);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取 images 文件夹中的所有图片文件
|
|
||||||
string[] imageFiles = Directory.GetFiles(imagesFolderPath);
|
|
||||||
|
|
||||||
// 遍历图片文件,检查是否有对应的 JSON 文件
|
|
||||||
foreach (string imageFile in imageFiles)
|
|
||||||
{
|
|
||||||
string imageFileNameWithoutExtension = Path.GetFileNameWithoutExtension(imageFile);
|
|
||||||
|
|
||||||
// 如果图片文件名不在 labels 文件夹的 JSON 文件名集合中,则删除该图片
|
|
||||||
if (!jsonFileNames.Contains(imageFileNameWithoutExtension))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.Delete(imageFile); // 删除图片
|
|
||||||
Console.WriteLine($"已删除图片: {Path.GetFileName(imageFile)}");
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"删除文件 {Path.GetFileName(imageFile)} 时出错: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine($"图片 {Path.GetFileName(imageFile)} 有对应的 JSON 文件,不删除。");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"操作失败: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 将 List<string> 保存到指定文件中,格式为 "项,标签"。
|
|
||||||
/// 标签是根据项的索引生成的。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="items">要保存的字符串列表</param>
|
|
||||||
/// <param name="filePath">保存文件的路径</param>
|
|
||||||
public static void SaveItemsToFile(List<string> items, string filePath)
|
|
||||||
{
|
|
||||||
// 使用 StreamWriter 写入文件
|
|
||||||
using (StreamWriter writer = new StreamWriter(filePath))
|
|
||||||
{
|
|
||||||
// 遍历 items 列表
|
|
||||||
for (int i = 0; i < items.Count; i++)
|
|
||||||
{
|
|
||||||
// 写入每一行,格式为 "项, 标签"
|
|
||||||
writer.WriteLine($"{items[i]},{i}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void SaveItemsToFile(HashSet<string> items, string filePath)
|
|
||||||
{
|
|
||||||
// 使用 StreamWriter 写入文件
|
|
||||||
using (StreamWriter writer = new StreamWriter(filePath))
|
|
||||||
{
|
|
||||||
// 遍历 HashSet
|
|
||||||
int i = 0;
|
|
||||||
foreach (string item in items)
|
|
||||||
{
|
|
||||||
// 写入每一行,格式为 "项, 标签"
|
|
||||||
writer.WriteLine($"{item},{i}"); // 假设使用 item 的长度作为标签
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static List<FileInformation> FileList = new List<FileInformation>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 递归获取指定文件夹下所有文件
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="dir"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static List<FileInformation> GetAllFiles(DirectoryInfo dir)
|
|
||||||
{
|
|
||||||
FileInfo[] allFile = dir.GetFiles();
|
|
||||||
foreach (FileInfo fi in allFile)
|
|
||||||
{
|
|
||||||
FileList.Add(new FileInformation { FileName = fi.Name, FilePath = fi.FullName });
|
|
||||||
}
|
|
||||||
DirectoryInfo[] allDir = dir.GetDirectories();
|
|
||||||
foreach (DirectoryInfo d in allDir)
|
|
||||||
{
|
|
||||||
GetAllFiles(d);
|
|
||||||
}
|
|
||||||
return FileList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 判断字符串是否纯字母
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="input"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static bool IsAlphabetOnly(string input)
|
|
||||||
{
|
|
||||||
return Regex.IsMatch(input, "^[a-zA-Z]+$");
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 判断字符串是否仅包含大小写字母和数字
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="input">待判断的字符串</param>
|
|
||||||
/// <returns>如果字符串仅包含字母和数字,返回 true;否则返回 false</returns>
|
|
||||||
public static bool IsAlphaNumericOnly(string input)
|
|
||||||
{
|
|
||||||
return Regex.IsMatch(input, "^[a-zA-Z0-9]+$");
|
|
||||||
}
|
|
||||||
public static string ConvertHanzitoPinyinWithNumbers(string input)
|
|
||||||
{
|
|
||||||
// 正则表达式匹配汉字
|
|
||||||
string pattern = @"[\u4e00-\u9fa5]";
|
|
||||||
Regex regex = new Regex(pattern);
|
|
||||||
|
|
||||||
StringBuilder result = new StringBuilder();
|
|
||||||
int lastIndex = 0;
|
|
||||||
|
|
||||||
foreach (Match match in regex.Matches(input))
|
|
||||||
{
|
|
||||||
// 将非汉字部分保留为原样
|
|
||||||
result.Append(input.Substring(lastIndex, match.Index - lastIndex));
|
|
||||||
|
|
||||||
// 获取汉字并转换为拼音
|
|
||||||
string hanzi = match.Value;
|
|
||||||
string pinyin = ConvertHanziToPinyin(hanzi);
|
|
||||||
|
|
||||||
// 将拼音追加到结果中
|
|
||||||
result.Append(pinyin);
|
|
||||||
|
|
||||||
lastIndex = match.Index + match.Length;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加最后的非汉字部分
|
|
||||||
result.Append(input.Substring(lastIndex));
|
|
||||||
|
|
||||||
return result.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string ConvertHanziToPinyin(string hanzi)
|
|
||||||
{
|
|
||||||
// 设置拼音格式:去掉音调,拼音小写,ü保持为u:
|
|
||||||
PinyinFormat format = PinyinFormat.WITHOUT_TONE | PinyinFormat.LOWERCASE | PinyinFormat.WITH_U_AND_COLON;
|
|
||||||
|
|
||||||
// 获取拼音数组
|
|
||||||
List<PinyinItem> pinyinItems = Pinyin4Net.GetPinyinArray(hanzi, format);
|
|
||||||
|
|
||||||
StringBuilder pinyinBuilder = new StringBuilder();
|
|
||||||
|
|
||||||
foreach (var item in pinyinItems)
|
|
||||||
{
|
|
||||||
// 处理多音字:默认取第一个拼音
|
|
||||||
if (item.Count > 0)
|
|
||||||
{
|
|
||||||
string pinyin = item[0];
|
|
||||||
|
|
||||||
// 特殊处理ü的情况
|
|
||||||
pinyin = pinyin.Replace("u:", "v"); // 将u:转为v,这是常见的拼音表示法
|
|
||||||
|
|
||||||
pinyinBuilder.Append(pinyin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return pinyinBuilder.ToString();
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 汉字拼音转化
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="hanzi"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
//public static string ConvertHanzitoPinyin(string hanzi)
|
|
||||||
//{
|
|
||||||
// PinyinFormat format = PinyinFormat.WITHOUT_TONE | PinyinFormat.LOWERCASE | PinyinFormat.WITH_U_UNICODE;
|
|
||||||
|
|
||||||
// // string hanzi = defectRow.LabelDescription;
|
|
||||||
// List<PinyinItem> pylist = Pinyin4Net.GetPinyinArray(hanzi, format);
|
|
||||||
// // 提取所有拼音并合并为一个字符串
|
|
||||||
// List<string> pinyinStrings = new List<string>();
|
|
||||||
// foreach (var item in pylist)
|
|
||||||
// {
|
|
||||||
// // 将PinyinItem中的每个拼音(List<string>)合并为一个字符串
|
|
||||||
// string joinedPinyin = string.Join("", item); // 这里的item就是一个List<string>,其中存储了拼音
|
|
||||||
// pinyinStrings.Add(joinedPinyin); // 添加合并后的拼音
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 合并所有拼音为一个字符串
|
|
||||||
// string allPinyin = string.Join("", pinyinStrings);
|
|
||||||
// return allPinyin;
|
|
||||||
//}
|
|
||||||
/// <summary>
|
|
||||||
/// 递归获取指定文件夹下所有文件
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="dir"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static List<FileInformation> GetAllFiles(string dir)
|
|
||||||
{
|
|
||||||
DirectoryInfo directoryInfo = new(dir);
|
|
||||||
return GetAllFiles(directoryInfo);
|
|
||||||
}
|
|
||||||
public static string OpenSlectDirDialog(string dirpath = "")
|
|
||||||
{
|
|
||||||
FolderBrowserDialog fbd = new FolderBrowserDialog();
|
|
||||||
fbd.InitialDirectory = dirpath;
|
|
||||||
if (fbd.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
string targetDirPath = fbd.SelectedPath;
|
|
||||||
if (Directory.Exists(targetDirPath))
|
|
||||||
{
|
|
||||||
return targetDirPath;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return string.Empty;
|
|
||||||
//ImportDirImages(targetDirPath);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
public static string OpenSlectfileDialog(string dirpath = "")
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 创建并配置 OpenFileDialog 实例
|
|
||||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
||||||
openFileDialog.Title = "选择文件"; // 对话框标题
|
|
||||||
openFileDialog.Filter = "所有文件 (*.pt)|*.*"; // 允许选择任何类型的文件
|
|
||||||
openFileDialog.InitialDirectory = @"C:\"; // 初始显示目录,可以根据需要修改
|
|
||||||
|
|
||||||
// 显示对话框
|
|
||||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
// 获取选中的文件路径
|
|
||||||
string selectedFilePath = openFileDialog.FileName;
|
|
||||||
Console.WriteLine("您选择的文件路径是: " + selectedFilePath);
|
|
||||||
return selectedFilePath;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("没有选择任何文件。");
|
|
||||||
return string.Empty;
|
|
||||||
MessageBox.Show("没有选择任何文件。");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class FileInformation
|
|
||||||
{
|
|
||||||
public string FileName { get; set; }
|
|
||||||
public string FilePath { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Reflection.Metadata;
|
using System.Reflection.Metadata;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
@@ -10,7 +9,6 @@ using DVPCameraType;
|
|||||||
using OpenCvSharp;
|
using OpenCvSharp;
|
||||||
using OpenCvSharp.Extensions;
|
using OpenCvSharp.Extensions;
|
||||||
using static System.Net.Mime.MediaTypeNames;
|
using static System.Net.Mime.MediaTypeNames;
|
||||||
using static MvCamCtrl.NET.MyCamera;
|
|
||||||
using LogLevel = DH.Commons.Enums.EnumHelper.LogLevel;
|
using LogLevel = DH.Commons.Enums.EnumHelper.LogLevel;
|
||||||
|
|
||||||
|
|
||||||
@@ -24,7 +22,7 @@ namespace DH.Devices.Camera
|
|||||||
private dvpStatus nRet = dvpStatus.DVP_STATUS_OK;
|
private dvpStatus nRet = dvpStatus.DVP_STATUS_OK;
|
||||||
private DVPCamera.dvpEventCallback pCallBackFunc;
|
private DVPCamera.dvpEventCallback pCallBackFunc;
|
||||||
private uint m_handle;
|
private uint m_handle;
|
||||||
public bool Connected=false;
|
|
||||||
public int m_n_dev_count = 0;
|
public int m_n_dev_count = 0;
|
||||||
private DVPCamera.dvpStreamCallback ImageCallback;
|
private DVPCamera.dvpStreamCallback ImageCallback;
|
||||||
public dvpStreamFormat dvpStreamFormat = dvpStreamFormat.S_RGB24;
|
public dvpStreamFormat dvpStreamFormat = dvpStreamFormat.S_RGB24;
|
||||||
@@ -63,7 +61,6 @@ namespace DH.Devices.Camera
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
pCallBackFunc = new DVPCamera.dvpEventCallback(cbExceptiondelegate);
|
|
||||||
nRet = DVPCamera.dvpOpenByUserId(CameraName,
|
nRet = DVPCamera.dvpOpenByUserId(CameraName,
|
||||||
dvpOpenMode.OPEN_NORMAL,
|
dvpOpenMode.OPEN_NORMAL,
|
||||||
ref m_handle);
|
ref m_handle);
|
||||||
@@ -84,13 +81,13 @@ namespace DH.Devices.Camera
|
|||||||
nRet = DVPCamera.dvpGetCameraInfo(m_handle, ref camerainfo);
|
nRet = DVPCamera.dvpGetCameraInfo(m_handle, ref camerainfo);
|
||||||
|
|
||||||
SerialNumber = camerainfo.SerialNumber;
|
SerialNumber = camerainfo.SerialNumber;
|
||||||
//ch: 注册异常回调函数 | en:Register Exception Callback
|
// ch:注册异常回调函数 | en:Register Exception Callback
|
||||||
nRet = DVPCamera.dvpRegisterEventCallback(m_handle, pCallBackFunc, dvpEvent.EVENT_DISCONNECTED, IntPtr.Zero);
|
//nRet = DVPCamera.dvpRegisterEventCallback(m_handle, pCallBackFunc, dvpEvent.EVENT_DISCONNECTED, IntPtr.Zero);
|
||||||
if (nRet != dvpStatus.DVP_STATUS_OK)
|
//if (nRet != dvpStatus.DVP_STATUS_OK)
|
||||||
{
|
//{
|
||||||
throw new Exception($"Register expection callback failed:{nRet}");
|
// throw new Exception($"Register expection callback failed:{nRet}");
|
||||||
}
|
//}
|
||||||
GC.KeepAlive(pCallBackFunc);
|
//GC.KeepAlive(pCallBackFunc);
|
||||||
|
|
||||||
//// ch:设置采集连续模式 | en:Set Continues Aquisition Mode
|
//// ch:设置采集连续模式 | en:Set Continues Aquisition Mode
|
||||||
if (IsContinueMode)
|
if (IsContinueMode)
|
||||||
@@ -155,7 +152,7 @@ namespace DH.Devices.Camera
|
|||||||
SetGain(Gain);
|
SetGain(Gain);
|
||||||
}
|
}
|
||||||
//全画幅
|
//全画幅
|
||||||
if (!IsAllPicEnabled)
|
if(!IsAllPicEnabled)
|
||||||
SetPictureRoi((int)ROIX, (int)ROIY, (int)ROIW, (int)ROIH);
|
SetPictureRoi((int)ROIX, (int)ROIY, (int)ROIW, (int)ROIH);
|
||||||
|
|
||||||
//// 设置 触发延迟
|
//// 设置 触发延迟
|
||||||
@@ -180,40 +177,20 @@ namespace DH.Devices.Camera
|
|||||||
|
|
||||||
//IIConfig.PropertyChanged -= IIConfig_PropertyChanged;
|
//IIConfig.PropertyChanged -= IIConfig_PropertyChanged;
|
||||||
//IIConfig.PropertyChanged += IIConfig_PropertyChanged;
|
//IIConfig.PropertyChanged += IIConfig_PropertyChanged;
|
||||||
Connected = true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
Connected = false;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 回调函数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="handle"></param>
|
|
||||||
/// <param name="_event"></param>
|
|
||||||
/// <param name="pContext"></param>
|
|
||||||
/// <param name="param"></param>
|
|
||||||
/// <param name="refVariant"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int cbExceptiondelegate(uint handle, dvpEvent _event, IntPtr pContext, int param, ref dvpVariant refVariant)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (_event == dvpEvent.EVENT_DISCONNECTED)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return dvpStatus.DVP_STATUS_OK.ToInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void IIConfig_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
private void IIConfig_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
@@ -352,7 +329,7 @@ namespace DH.Devices.Camera
|
|||||||
Mat cvImage = new Mat();
|
Mat cvImage = new Mat();
|
||||||
if (this.CameraName.Equals("Cam1"))
|
if (this.CameraName.Equals("Cam1"))
|
||||||
{
|
{
|
||||||
Console.WriteLine();
|
Console.WriteLine( );
|
||||||
}
|
}
|
||||||
if (this.CameraName.Equals("Cam2"))
|
if (this.CameraName.Equals("Cam2"))
|
||||||
{
|
{
|
||||||
@@ -395,12 +372,10 @@ namespace DH.Devices.Camera
|
|||||||
|
|
||||||
};
|
};
|
||||||
InitialImageSet(imageSet);
|
InitialImageSet(imageSet);
|
||||||
|
OnHImageOutput?.Invoke(DateTime.Now, this, smat);
|
||||||
var outImgSet = CopyImageSet(imageSet);
|
|
||||||
OnHImageOutput?.Invoke(DateTime.Now, this, outImgSet);
|
|
||||||
|
|
||||||
//存图
|
//存图
|
||||||
DisplayAndSaveOriginImage(imageSet.Id, SnapshotCount);
|
DisplayAndSaveOriginImage(imageSet.Id,SnapshotCount);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -416,7 +391,7 @@ namespace DH.Devices.Camera
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
public void InitialImageSet(MatSet set)
|
public void InitialImageSet(MatSet set)
|
||||||
{
|
{
|
||||||
//if (saveOption != null)
|
//if (saveOption != null)
|
||||||
//{
|
//{
|
||||||
@@ -440,25 +415,13 @@ namespace DH.Devices.Camera
|
|||||||
{
|
{
|
||||||
await Task.Run(() =>
|
await Task.Run(() =>
|
||||||
{
|
{
|
||||||
Bitmap? showImage = null;
|
Bitmap showImage = set._mat.ToBitmap();
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
showImage = set._mat.ToBitmap();
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
//释放 himage
|
|
||||||
ClearImageSet(set);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// showImage.Save("D:/test333.bmp");
|
// showImage.Save("D:/test333.bmp");
|
||||||
// Marshal.Copy(pbyteImageBuffer, 0, (IntPtr)lAddrImage, (int)dwBufferSize);
|
// Marshal.Copy(pbyteImageBuffer, 0, (IntPtr)lAddrImage, (int)dwBufferSize);
|
||||||
// Bitmap saveImage = showImage?.CopyBitmap();
|
// Bitmap saveImage = showImage?.CopyBitmap();
|
||||||
// saveImage.Save("d://TEST444.BMP");
|
// saveImage.Save("d://TEST444.BMP");
|
||||||
// OnShowImageUpdated?.Invoke(this, showImage, imgSetId);
|
// OnShowImageUpdated?.Invoke(this, showImage, imgSetId);
|
||||||
if (IsSavePicEnabled && showImage != null)
|
if (IsSavePicEnabled)
|
||||||
{
|
{
|
||||||
string fullname = Path.Combine(ImageSaveDirectory, $"{CameraName}_{_counter:D7}_{set.Id}.{set._imageFormat.ToString().ToLower()}");
|
string fullname = Path.Combine(ImageSaveDirectory, $"{CameraName}_{_counter:D7}_{set.Id}.{set._imageFormat.ToString().ToLower()}");
|
||||||
ImageSaveAsync(fullname, showImage);
|
ImageSaveAsync(fullname, showImage);
|
||||||
@@ -512,39 +475,31 @@ namespace DH.Devices.Camera
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
dvpStreamState StreamState = new dvpStreamState();
|
||||||
// 1. 停止采集(如果正在运行)
|
nRet = DVPCamera.dvpGetStreamState(m_handle, ref StreamState);
|
||||||
dvpStreamState streamState = new dvpStreamState();
|
//Debug.Assert(nRet == dvpStatus.DVP_STATUS_OK);
|
||||||
nRet = DVPCamera.dvpGetStreamState(m_handle, ref streamState);
|
if (StreamState == dvpStreamState.STATE_STARTED)
|
||||||
if (streamState == dvpStreamState.STATE_STARTED)
|
|
||||||
{
|
{
|
||||||
// 先停止采集流
|
// stop camera
|
||||||
nRet = DVPCamera.dvpStop(m_handle);
|
nRet = DVPCamera.dvpStop(m_handle);
|
||||||
|
Debug.Assert(nRet == dvpStatus.DVP_STATUS_OK);
|
||||||
if (nRet != dvpStatus.DVP_STATUS_OK)
|
if (nRet != dvpStatus.DVP_STATUS_OK)
|
||||||
{
|
{
|
||||||
throw new Exception($"停止采集失败,错误码:0x{nRet:X8}");
|
throw new Exception($"Stop grabbing failed{nRet:x8}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 设置触发源为软件触发(此时设备已停止)
|
|
||||||
nRet = DVPCamera.dvpSetTriggerState(m_handle, false);
|
|
||||||
if (nRet != dvpStatus.DVP_STATUS_OK)
|
|
||||||
{
|
|
||||||
throw new Exception($"设置软件触发失败,错误码:0x{nRet:X8}");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. 注销事件回调
|
|
||||||
nRet = DVPCamera.dvpUnregisterEventCallback(m_handle, pCallBackFunc, dvpEvent.EVENT_DISCONNECTED, IntPtr.Zero);
|
nRet = DVPCamera.dvpUnregisterEventCallback(m_handle, pCallBackFunc, dvpEvent.EVENT_DISCONNECTED, IntPtr.Zero);
|
||||||
if (nRet != dvpStatus.DVP_STATUS_OK)
|
if (nRet != dvpStatus.DVP_STATUS_OK)
|
||||||
{
|
{
|
||||||
throw new Exception($"注销事件回调失败,错误码:0x{nRet:X8}");
|
throw new Exception($"Unregister expection callback failed:{nRet}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. 关闭设备
|
// ch:关闭设备 | en:Close device
|
||||||
nRet = DVPCamera.dvpClose(m_handle);
|
nRet = DVPCamera.dvpClose(m_handle);
|
||||||
if (nRet != dvpStatus.DVP_STATUS_OK)
|
if (nRet != dvpStatus.DVP_STATUS_OK)
|
||||||
{
|
{
|
||||||
throw new Exception($"关闭设备失败,错误码:0x{nRet:X8}");
|
throw new Exception($"Close device failed{nRet:x8}");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_handle = 0;
|
m_handle = 0;
|
||||||
@@ -557,12 +512,6 @@ namespace DH.Devices.Camera
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Snapshot()
|
|
||||||
{
|
|
||||||
DVPCamera.dvpTriggerFire(m_handle);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LogAsync(LogMsg msg)
|
public void LogAsync(LogMsg msg)
|
||||||
{
|
{
|
||||||
msg.MsgSource = CameraName;
|
msg.MsgSource = CameraName;
|
||||||
@@ -576,7 +525,7 @@ namespace DH.Devices.Camera
|
|||||||
LoggerHelper.LogAsync(msg);
|
LoggerHelper.LogAsync(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void LogAsync(DateTime dt, LogLevel logLevel, string msg)
|
public void LogAsync(DateTime dt, LogLevel logLevel, string msg)
|
||||||
{
|
{
|
||||||
LogAsync(new LogMsg(dt, logLevel, msg));
|
LogAsync(new LogMsg(dt, logLevel, msg));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -368,7 +368,7 @@ namespace DH.Devices.Camera
|
|||||||
throw new NotSupportedException($"Unsupported pixel type: {pFrameInfo.enPixelType}");
|
throw new NotSupportedException($"Unsupported pixel type: {pFrameInfo.enPixelType}");
|
||||||
}
|
}
|
||||||
|
|
||||||
//OnHImageOutput?.Invoke(DateTime.Now, this, cvImage);
|
OnHImageOutput?.Invoke(DateTime.Now, this, cvImage);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace DH.Devices.PLC
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LoggerHelper.LogPath = "D://PROJECTS//Logs//";
|
LoggerHelper.LogPath = "D://";
|
||||||
LoggerHelper.LogPrefix = "PLC";
|
LoggerHelper.LogPrefix = "PLC";
|
||||||
|
|
||||||
TcpNet.IpAddress = IP;
|
TcpNet.IpAddress = IP;
|
||||||
@@ -76,8 +76,7 @@ namespace DH.Devices.PLC
|
|||||||
{
|
{
|
||||||
Connected = false;
|
Connected = false;
|
||||||
LogAsync(DateTime.Now, LogLevel.Error, $"PLC初始化失败");
|
LogAsync(DateTime.Now, LogLevel.Error, $"PLC初始化失败");
|
||||||
return false;
|
throw new Exception($"{IP}:{Port}PLC连接失败!");
|
||||||
//throw new Exception($"{IP}:{Port}PLC连接失败!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -86,8 +85,7 @@ namespace DH.Devices.PLC
|
|||||||
{
|
{
|
||||||
Connected = false;
|
Connected = false;
|
||||||
LogAsync(DateTime.Now, LogLevel.Error, $"{IP}:{Port}PLC连接失败!失败原因:{ex.ToString()}");
|
LogAsync(DateTime.Now, LogLevel.Error, $"{IP}:{Port}PLC连接失败!失败原因:{ex.ToString()}");
|
||||||
return false;
|
throw new Exception($"{IP}:{Port}PLC连接失败!失败原因:{ex.ToString()}");
|
||||||
//throw new Exception($"{IP}:{Port}PLC连接失败!失败原因:{ex.ToString()}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -817,30 +815,6 @@ namespace DH.Devices.PLC
|
|||||||
WriteBool(pLCItem.Address, b);
|
WriteBool(pLCItem.Address, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 转盘方向
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="b"></param>
|
|
||||||
public void TurnDirection(bool b)
|
|
||||||
{
|
|
||||||
PLCItem? pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘方向");
|
|
||||||
if (pLCItem == null)
|
|
||||||
return;
|
|
||||||
WriteBool(pLCItem.Address, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 转盘速度
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="b"></param>
|
|
||||||
public void TurnSpeed(int speed)
|
|
||||||
{
|
|
||||||
PLCItem? pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘速度");
|
|
||||||
if (pLCItem == null)
|
|
||||||
return;
|
|
||||||
WriteUInt16(pLCItem.Address, (ushort)speed);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 转盘启停
|
/// 转盘启停
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1052,16 +1026,6 @@ namespace DH.Devices.PLC
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int ReadVisionPos()
|
|
||||||
{
|
|
||||||
PLCItem? pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "定位完成脉冲值");
|
|
||||||
if (pLCItem == null)
|
|
||||||
return 0;
|
|
||||||
int value = ReadInt32(pLCItem.Address);
|
|
||||||
Thread.Sleep(10);
|
|
||||||
return Math.Abs(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LogAsync(LogMsg msg)
|
public void LogAsync(LogMsg msg)
|
||||||
{
|
{
|
||||||
msg.MsgSource = "PLC";
|
msg.MsgSource = "PLC";
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ namespace DH.Devices.Vision
|
|||||||
//{
|
//{
|
||||||
// LogAsync(new LogMsg(dt, LogLevel.Error, msg));
|
// LogAsync(new LogMsg(dt, LogLevel.Error, msg));
|
||||||
//}
|
//}
|
||||||
public override DetectStationResult RunInference(MatSet originImgSet, string detectionId = null)
|
public override DetectStationResult RunInference(Mat originImgSet, string detectionId = null)
|
||||||
{
|
{
|
||||||
DetectStationResult detectResult = new DetectStationResult();
|
DetectStationResult detectResult = new DetectStationResult();
|
||||||
DetectionConfig detectConfig = null;
|
DetectionConfig detectConfig = null;
|
||||||
@@ -78,20 +78,19 @@ namespace DH.Devices.Vision
|
|||||||
//未能获得检测配置
|
//未能获得检测配置
|
||||||
return detectResult;
|
return detectResult;
|
||||||
}
|
}
|
||||||
detectResult.Id = originImgSet.Id;
|
|
||||||
detectResult.DetectName = detectConfig.Name;
|
detectResult.DetectName = detectConfig.Name;
|
||||||
detectResult.ImageSaveDirectory=detectConfig.ImageSaveDirectory;
|
detectResult.ImageSaveDirectory=detectConfig.ImageSaveDirectory;
|
||||||
detectResult.SaveNGDetect=detectConfig.SaveNGDetect;
|
detectResult.SaveNGDetect=detectConfig.SaveNGDetect;
|
||||||
detectResult.SaveNGOriginal=detectConfig.SaveNGOriginal;
|
detectResult.SaveNGOriginal=detectConfig.SaveNGOriginal;
|
||||||
detectResult.SaveOKDetect=detectConfig.SaveOKDetect;
|
detectResult.SaveOKDetect=detectConfig.SaveOKDetect;
|
||||||
detectResult.SaveOKOriginal=detectConfig.SaveOKOriginal;
|
detectResult.SaveOKOriginal=detectConfig.SaveOKOriginal;
|
||||||
Mat OriginImage = originImgSet._mat.Clone();
|
Mat OriginImage = originImgSet.Clone();
|
||||||
detectResult.DetectionOriginImage = CopyBitmapWithLockBits(OriginImage.ToBitmap());
|
detectResult.DetectionOriginImage = CopyBitmapWithLockBits(OriginImage.ToBitmap());
|
||||||
//detectResult.DetectionOriginImage = originImgSet.Clone().ToBitmap();
|
//detectResult.DetectionOriginImage = originImgSet.Clone().ToBitmap();
|
||||||
Stopwatch sw = new Stopwatch();
|
Stopwatch sw = new Stopwatch();
|
||||||
#region 1.预处理
|
#region 1.预处理
|
||||||
sw.Start();
|
sw.Start();
|
||||||
using (Mat PreTMat = originImgSet._mat.Clone())
|
using (Mat PreTMat = originImgSet.Clone())
|
||||||
{
|
{
|
||||||
PreTreated(detectConfig, detectResult, PreTMat);
|
PreTreated(detectConfig, detectResult, PreTMat);
|
||||||
PreTreated2(detectConfig, detectResult, PreTMat);
|
PreTreated2(detectConfig, detectResult, PreTMat);
|
||||||
@@ -143,7 +142,7 @@ namespace DH.Devices.Vision
|
|||||||
req.ResizeHeight = (int)detectConfig.ModelHeight;
|
req.ResizeHeight = (int)detectConfig.ModelHeight;
|
||||||
// req.LabelNames = detectConfig.GetLabelNames();
|
// req.LabelNames = detectConfig.GetLabelNames();
|
||||||
// req.Score = IIConfig.Score;
|
// req.Score = IIConfig.Score;
|
||||||
req.mImage = originImgSet._mat.Clone();
|
req.mImage = originImgSet.Clone();
|
||||||
|
|
||||||
req.in_lable_path = detectConfig.In_lable_path;
|
req.in_lable_path = detectConfig.In_lable_path;
|
||||||
|
|
||||||
@@ -171,10 +170,41 @@ namespace DH.Devices.Vision
|
|||||||
|
|
||||||
// LogAsync(DateTime.Now, LogLevel.Information, $"{detectConfig.Name} 产品{detectResult.TempPid} RunInference BEGIN");
|
// LogAsync(DateTime.Now, LogLevel.Information, $"{detectConfig.Name} 产品{detectResult.TempPid} RunInference BEGIN");
|
||||||
mlWatch.Start();
|
mlWatch.Start();
|
||||||
|
//20230802改成多线程推理 RunInferenceFixed
|
||||||
|
// MLResult result = new MLResult();
|
||||||
var result = mlSet.StationMLEngine.RunInference(req);
|
var result = mlSet.StationMLEngine.RunInference(req);
|
||||||
|
// var result = mlSet.StationMLEngine.RunInferenceFixed(req);
|
||||||
mlWatch.Stop();
|
mlWatch.Stop();
|
||||||
|
// LogAsync(DateTime.Now, LogLevel.Information, $"{detectConfig.Name} 产品{detectResult.TempPid} RunInference END");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// var req = new MLRequest();
|
||||||
|
|
||||||
|
//req.mImage = inferenceImage;
|
||||||
|
|
||||||
|
//req.ResizeWidth = detectConfig.ModelWidth;
|
||||||
|
//req.ResizeHeight = detectConfig.ModelHeight;
|
||||||
|
//req.confThreshold = detectConfig.ModelconfThreshold;
|
||||||
|
//req.iouThreshold = 0.3f;
|
||||||
|
//req.out_node_name = "output0";
|
||||||
|
//req.in_lable_path = detectConfig.in_lable_path;
|
||||||
|
|
||||||
|
//Stopwatch sw = Stopwatch.StartNew();
|
||||||
|
//var result = Dectection[detectionId].RunInference(req);
|
||||||
|
//sw.Stop();
|
||||||
|
//LogAsync(DateTime.Now, LogLevel.Information, $"{camera.Name} 推理进度1.1,产品{productNumber},耗时{sw.ElapsedMilliseconds}ms");
|
||||||
|
|
||||||
|
//this.BeginInvoke(new MethodInvoker(delegate ()
|
||||||
|
//{
|
||||||
|
// // pictureBox1.Image?.Dispose(); // 释放旧图像
|
||||||
|
// // pictureBox1.Image = result.ResultMap;
|
||||||
|
// richTextBox1.AppendText($"推理成功 {productNumber}, {result.IsSuccess}相机名字{camera.CameraName} 耗时 {mlWatch.ElapsedMilliseconds}ms\n");
|
||||||
|
//}));
|
||||||
|
//req.mImage?.Dispose();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -238,22 +268,22 @@ namespace DH.Devices.Vision
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
foreach (IGrouping<ResultState, DetectionLable> group in conditionList)
|
//foreach (IGrouping<ResultState, DetectionFilter> group in conditionList)
|
||||||
{
|
//{
|
||||||
bool b = group.ToList().Any(f =>
|
// bool b = group.ToList().Any(f =>
|
||||||
{
|
// {
|
||||||
return f.FilterOperation(d);
|
// return f.FilterOperation(d);
|
||||||
});
|
// });
|
||||||
|
|
||||||
|
|
||||||
if (b)
|
// if (b)
|
||||||
{
|
// {
|
||||||
d.FinalResult = group.Key;
|
// d.FinalResult = group.Key;
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
//}
|
||||||
});
|
});
|
||||||
#endregion
|
#endregion
|
||||||
#region 5.统计缺陷过滤结果或预处理直接NG
|
#region 5.统计缺陷过滤结果或预处理直接NG
|
||||||
@@ -278,7 +308,7 @@ namespace DH.Devices.Vision
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DisplayDetectionResult(detectResult, originImgSet._mat.Clone(), detectionId);
|
DisplayDetectionResult(detectResult, originImgSet.Clone(), detectionId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -425,7 +455,7 @@ namespace DH.Devices.Vision
|
|||||||
{
|
{
|
||||||
// throw new ProcessException("异常:模型加载异常", null);
|
// throw new ProcessException("异常:模型加载异常", null);
|
||||||
}
|
}
|
||||||
LogAsync(DateTime.Now, LogLevel.Action, $"模型加载成功;是否GPU:{isGPU} CoreInx:{coreInx} - {dc.Name}" + $" {dc.ModelType.GetEnumDescription()}:{dc.ModelPath}");
|
LogAsync(DateTime.Now, LogLevel.Information, $"模型加载成功;是否GPU:{isGPU} CoreInx:{coreInx} - {dc.Name}" + $" {dc.ModelType.GetEnumDescription()}:{dc.ModelPath}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
879
DH.RBAC/AccountForm.Designer.cs
generated
@@ -1,879 +0,0 @@
|
|||||||
namespace DH.RBAC
|
|
||||||
{
|
|
||||||
partial class AccountForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AccountForm));
|
|
||||||
this.uiPanel1 = new Sunny.UI.UIPanel();
|
|
||||||
this.titlePanel = new System.Windows.Forms.Panel();
|
|
||||||
this.uiLabel15 = new Sunny.UI.UILabel();
|
|
||||||
this.btnClose = new Sunny.UI.UISymbolLabel();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.lblCurrentUser = new System.Windows.Forms.Label();
|
|
||||||
this.imageAvator = new System.Windows.Forms.PictureBox();
|
|
||||||
this.uiTabControl1 = new Sunny.UI.UITabControl();
|
|
||||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
|
||||||
this.txtBirthday = new Sunny.UI.UIDatePicker();
|
|
||||||
this.btnSave = new Sunny.UI.UIButton();
|
|
||||||
this.txtSignature = new Sunny.UI.UITextBox();
|
|
||||||
this.lblSignature = new Sunny.UI.UILabel();
|
|
||||||
this.txtAddress = new Sunny.UI.UITextBox();
|
|
||||||
this.lblAddress = new Sunny.UI.UILabel();
|
|
||||||
this.txtTel = new Sunny.UI.UITextBox();
|
|
||||||
this.lblTel = new Sunny.UI.UILabel();
|
|
||||||
this.txtEmail = new Sunny.UI.UITextBox();
|
|
||||||
this.lblEmail = new Sunny.UI.UILabel();
|
|
||||||
this.lblBirthday = new Sunny.UI.UILabel();
|
|
||||||
this.rdFemale = new Sunny.UI.UIRadioButton();
|
|
||||||
this.rdMale = new Sunny.UI.UIRadioButton();
|
|
||||||
this.txtNickName = new Sunny.UI.UITextBox();
|
|
||||||
this.lblGender = new Sunny.UI.UILabel();
|
|
||||||
this.lblNickName = new Sunny.UI.UILabel();
|
|
||||||
this.txtName = new Sunny.UI.UITextBox();
|
|
||||||
this.lblName = new Sunny.UI.UILabel();
|
|
||||||
this.txtAccount = new Sunny.UI.UITextBox();
|
|
||||||
this.lblAccount = new Sunny.UI.UILabel();
|
|
||||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
|
||||||
this.btnSelectAvator = new Sunny.UI.UIButton();
|
|
||||||
this.uiLabel10 = new Sunny.UI.UILabel();
|
|
||||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
|
||||||
this.btnReset = new Sunny.UI.UIButton();
|
|
||||||
this.btnChangePassword = new Sunny.UI.UIButton();
|
|
||||||
this.txtComfirmPassword = new Sunny.UI.UITextBox();
|
|
||||||
this.txtNewPassword = new Sunny.UI.UITextBox();
|
|
||||||
this.lblComfirmPassword = new Sunny.UI.UILabel();
|
|
||||||
this.lblNewPassword = new Sunny.UI.UILabel();
|
|
||||||
this.txtOldPassword = new Sunny.UI.UITextBox();
|
|
||||||
this.lblOldPassword = new Sunny.UI.UILabel();
|
|
||||||
this.uiLabel11 = new Sunny.UI.UILabel();
|
|
||||||
this.uiPanel1.SuspendLayout();
|
|
||||||
this.titlePanel.SuspendLayout();
|
|
||||||
this.panel1.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.imageAvator)).BeginInit();
|
|
||||||
this.uiTabControl1.SuspendLayout();
|
|
||||||
this.tabPage1.SuspendLayout();
|
|
||||||
this.tabPage2.SuspendLayout();
|
|
||||||
this.tabPage3.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// uiPanel1
|
|
||||||
//
|
|
||||||
this.uiPanel1.Controls.Add(this.titlePanel);
|
|
||||||
this.uiPanel1.Controls.Add(this.panel1);
|
|
||||||
this.uiPanel1.Controls.Add(this.uiTabControl1);
|
|
||||||
this.uiPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.uiPanel1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(241)))), ((int)(((byte)(243)))));
|
|
||||||
this.uiPanel1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.uiPanel1.Location = new System.Drawing.Point(0, 0);
|
|
||||||
this.uiPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.uiPanel1.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.uiPanel1.Name = "uiPanel1";
|
|
||||||
this.uiPanel1.RectColor = System.Drawing.Color.Silver;
|
|
||||||
this.uiPanel1.Size = new System.Drawing.Size(1031, 558);
|
|
||||||
this.uiPanel1.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.uiPanel1.StyleCustomMode = true;
|
|
||||||
this.uiPanel1.TabIndex = 6;
|
|
||||||
this.uiPanel1.Text = null;
|
|
||||||
this.uiPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
|
|
||||||
//
|
|
||||||
// titlePanel
|
|
||||||
//
|
|
||||||
this.titlePanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.titlePanel.Controls.Add(this.uiLabel15);
|
|
||||||
this.titlePanel.Controls.Add(this.btnClose);
|
|
||||||
this.titlePanel.Location = new System.Drawing.Point(0, -1);
|
|
||||||
this.titlePanel.Name = "titlePanel";
|
|
||||||
this.titlePanel.Size = new System.Drawing.Size(1031, 43);
|
|
||||||
this.titlePanel.TabIndex = 7;
|
|
||||||
this.titlePanel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.titlePanel_MouseDown);
|
|
||||||
this.titlePanel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.titlePanel_MouseMove);
|
|
||||||
//
|
|
||||||
// uiLabel15
|
|
||||||
//
|
|
||||||
this.uiLabel15.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.uiLabel15.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.uiLabel15.Location = new System.Drawing.Point(0, 0);
|
|
||||||
this.uiLabel15.Name = "uiLabel15";
|
|
||||||
this.uiLabel15.Size = new System.Drawing.Size(986, 43);
|
|
||||||
this.uiLabel15.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.uiLabel15.TabIndex = 1;
|
|
||||||
this.uiLabel15.Text = "用户账号管理";
|
|
||||||
this.uiLabel15.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
this.uiLabel15.MouseDown += new System.Windows.Forms.MouseEventHandler(this.titlePanel_MouseDown);
|
|
||||||
this.uiLabel15.MouseMove += new System.Windows.Forms.MouseEventHandler(this.titlePanel_MouseMove);
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.Dock = System.Windows.Forms.DockStyle.Right;
|
|
||||||
this.btnClose.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.btnClose.Location = new System.Drawing.Point(986, 0);
|
|
||||||
this.btnClose.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.Padding = new System.Windows.Forms.Padding(64, 0, 0, 0);
|
|
||||||
this.btnClose.Size = new System.Drawing.Size(45, 43);
|
|
||||||
this.btnClose.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.btnClose.Symbol = 77;
|
|
||||||
this.btnClose.SymbolSize = 60;
|
|
||||||
this.btnClose.TabIndex = 0;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
this.btnClose.MouseEnter += new System.EventHandler(this.btnClose_MouseEnter);
|
|
||||||
this.btnClose.MouseLeave += new System.EventHandler(this.btnClose_MouseLeave);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
this.panel1.BackColor = System.Drawing.Color.White;
|
|
||||||
this.panel1.Controls.Add(this.lblCurrentUser);
|
|
||||||
this.panel1.Controls.Add(this.imageAvator);
|
|
||||||
this.panel1.Location = new System.Drawing.Point(12, 56);
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
this.panel1.Size = new System.Drawing.Size(241, 218);
|
|
||||||
this.panel1.TabIndex = 6;
|
|
||||||
//
|
|
||||||
// lblCurrentUser
|
|
||||||
//
|
|
||||||
this.lblCurrentUser.Location = new System.Drawing.Point(3, 176);
|
|
||||||
this.lblCurrentUser.Name = "lblCurrentUser";
|
|
||||||
this.lblCurrentUser.Size = new System.Drawing.Size(235, 27);
|
|
||||||
this.lblCurrentUser.TabIndex = 4;
|
|
||||||
this.lblCurrentUser.Text = "admin@管理员";
|
|
||||||
this.lblCurrentUser.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
|
||||||
//
|
|
||||||
// imageAvator
|
|
||||||
//
|
|
||||||
this.imageAvator.Image = global:: DH.RBAC.Properties.Resources.avatar;
|
|
||||||
this.imageAvator.Location = new System.Drawing.Point(49, 27);
|
|
||||||
this.imageAvator.Name = "imageAvator";
|
|
||||||
this.imageAvator.Size = new System.Drawing.Size(139, 136);
|
|
||||||
this.imageAvator.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
|
||||||
this.imageAvator.TabIndex = 3;
|
|
||||||
this.imageAvator.TabStop = false;
|
|
||||||
//
|
|
||||||
// uiTabControl1
|
|
||||||
//
|
|
||||||
this.uiTabControl1.Controls.Add(this.tabPage1);
|
|
||||||
this.uiTabControl1.Controls.Add(this.tabPage2);
|
|
||||||
this.uiTabControl1.Controls.Add(this.tabPage3);
|
|
||||||
this.uiTabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
|
|
||||||
this.uiTabControl1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.uiTabControl1.ItemSize = new System.Drawing.Size(150, 40);
|
|
||||||
this.uiTabControl1.Location = new System.Drawing.Point(275, 56);
|
|
||||||
this.uiTabControl1.MainPage = "";
|
|
||||||
this.uiTabControl1.MenuStyle = Sunny.UI.UIMenuStyle.Custom;
|
|
||||||
this.uiTabControl1.Name = "uiTabControl1";
|
|
||||||
this.uiTabControl1.SelectedIndex = 0;
|
|
||||||
this.uiTabControl1.Size = new System.Drawing.Size(734, 490);
|
|
||||||
this.uiTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
|
|
||||||
this.uiTabControl1.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.uiTabControl1.TabBackColor = System.Drawing.Color.White;
|
|
||||||
this.uiTabControl1.TabIndex = 5;
|
|
||||||
this.uiTabControl1.TabSelectedColor = System.Drawing.Color.White;
|
|
||||||
this.uiTabControl1.TabUnSelectedForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(73)))), ((int)(((byte)(82)))), ((int)(((byte)(91)))));
|
|
||||||
//
|
|
||||||
// tabPage1
|
|
||||||
//
|
|
||||||
this.tabPage1.BackColor = System.Drawing.Color.White;
|
|
||||||
this.tabPage1.Controls.Add(this.txtBirthday);
|
|
||||||
this.tabPage1.Controls.Add(this.btnSave);
|
|
||||||
this.tabPage1.Controls.Add(this.txtSignature);
|
|
||||||
this.tabPage1.Controls.Add(this.lblSignature);
|
|
||||||
this.tabPage1.Controls.Add(this.txtAddress);
|
|
||||||
this.tabPage1.Controls.Add(this.lblAddress);
|
|
||||||
this.tabPage1.Controls.Add(this.txtTel);
|
|
||||||
this.tabPage1.Controls.Add(this.lblTel);
|
|
||||||
this.tabPage1.Controls.Add(this.txtEmail);
|
|
||||||
this.tabPage1.Controls.Add(this.lblEmail);
|
|
||||||
this.tabPage1.Controls.Add(this.lblBirthday);
|
|
||||||
this.tabPage1.Controls.Add(this.rdFemale);
|
|
||||||
this.tabPage1.Controls.Add(this.rdMale);
|
|
||||||
this.tabPage1.Controls.Add(this.txtNickName);
|
|
||||||
this.tabPage1.Controls.Add(this.lblGender);
|
|
||||||
this.tabPage1.Controls.Add(this.lblNickName);
|
|
||||||
this.tabPage1.Controls.Add(this.txtName);
|
|
||||||
this.tabPage1.Controls.Add(this.lblName);
|
|
||||||
this.tabPage1.Controls.Add(this.txtAccount);
|
|
||||||
this.tabPage1.Controls.Add(this.lblAccount);
|
|
||||||
this.tabPage1.Location = new System.Drawing.Point(0, 40);
|
|
||||||
this.tabPage1.Name = "tabPage1";
|
|
||||||
this.tabPage1.Size = new System.Drawing.Size(734, 450);
|
|
||||||
this.tabPage1.TabIndex = 0;
|
|
||||||
this.tabPage1.Text = "资料";
|
|
||||||
//
|
|
||||||
// txtBirthday
|
|
||||||
//
|
|
||||||
this.txtBirthday.FillColor = System.Drawing.Color.White;
|
|
||||||
this.txtBirthday.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtBirthday.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtBirthday.Location = new System.Drawing.Point(117, 139);
|
|
||||||
this.txtBirthday.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtBirthday.MaxLength = 10;
|
|
||||||
this.txtBirthday.MinimumSize = new System.Drawing.Size(63, 0);
|
|
||||||
this.txtBirthday.Name = "txtBirthday";
|
|
||||||
this.txtBirthday.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
|
|
||||||
this.txtBirthday.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtBirthday.Size = new System.Drawing.Size(188, 36);
|
|
||||||
|
|
||||||
this.txtBirthday.StyleCustomMode = true;
|
|
||||||
this.txtBirthday.SymbolDropDown = 61555;
|
|
||||||
this.txtBirthday.SymbolNormal = 61555;
|
|
||||||
this.txtBirthday.TabIndex = 20;
|
|
||||||
this.txtBirthday.Text = "2021-12-29";
|
|
||||||
this.txtBirthday.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
this.txtBirthday.Value = new System.DateTime(2021, 12, 29, 0, 0, 0, 0);
|
|
||||||
//
|
|
||||||
// btnSave
|
|
||||||
//
|
|
||||||
this.btnSave.Cursor = System.Windows.Forms.Cursors.Hand;
|
|
||||||
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.btnSave.Location = new System.Drawing.Point(117, 379);
|
|
||||||
this.btnSave.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.btnSave.Name = "btnSave";
|
|
||||||
this.btnSave.Size = new System.Drawing.Size(125, 44);
|
|
||||||
this.btnSave.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.btnSave.TabIndex = 19;
|
|
||||||
this.btnSave.Text = "保存";
|
|
||||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
|
|
||||||
//
|
|
||||||
// txtSignature
|
|
||||||
//
|
|
||||||
this.txtSignature.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtSignature.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtSignature.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtSignature.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtSignature.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtSignature.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtSignature.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtSignature.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtSignature.ButtonSymbol = 61761;
|
|
||||||
this.txtSignature.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtSignature.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtSignature.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtSignature.Location = new System.Drawing.Point(117, 252);
|
|
||||||
this.txtSignature.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtSignature.Maximum = 2147483647D;
|
|
||||||
this.txtSignature.MaxLength = 128;
|
|
||||||
this.txtSignature.Minimum = -2147483648D;
|
|
||||||
this.txtSignature.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtSignature.Multiline = true;
|
|
||||||
this.txtSignature.Name = "txtSignature";
|
|
||||||
this.txtSignature.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtSignature.Size = new System.Drawing.Size(581, 103);
|
|
||||||
|
|
||||||
this.txtSignature.StyleCustomMode = true;
|
|
||||||
this.txtSignature.TabIndex = 18;
|
|
||||||
this.txtSignature.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblSignature
|
|
||||||
//
|
|
||||||
this.lblSignature.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblSignature.Location = new System.Drawing.Point(3, 252);
|
|
||||||
this.lblSignature.Name = "lblSignature";
|
|
||||||
this.lblSignature.Size = new System.Drawing.Size(107, 29);
|
|
||||||
this.lblSignature.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblSignature.TabIndex = 17;
|
|
||||||
this.lblSignature.Text = "个性签名";
|
|
||||||
this.lblSignature.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// txtAddress
|
|
||||||
//
|
|
||||||
this.txtAddress.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtAddress.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtAddress.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtAddress.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtAddress.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtAddress.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtAddress.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtAddress.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtAddress.ButtonSymbol = 61761;
|
|
||||||
this.txtAddress.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtAddress.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtAddress.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtAddress.Location = new System.Drawing.Point(429, 191);
|
|
||||||
this.txtAddress.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtAddress.Maximum = 2147483647D;
|
|
||||||
this.txtAddress.MaxLength = 128;
|
|
||||||
this.txtAddress.Minimum = -2147483648D;
|
|
||||||
this.txtAddress.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtAddress.Name = "txtAddress";
|
|
||||||
this.txtAddress.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtAddress.Size = new System.Drawing.Size(269, 42);
|
|
||||||
|
|
||||||
this.txtAddress.StyleCustomMode = true;
|
|
||||||
this.txtAddress.TabIndex = 16;
|
|
||||||
this.txtAddress.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblAddress
|
|
||||||
//
|
|
||||||
this.lblAddress.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblAddress.Location = new System.Drawing.Point(312, 198);
|
|
||||||
this.lblAddress.Name = "lblAddress";
|
|
||||||
this.lblAddress.Size = new System.Drawing.Size(110, 29);
|
|
||||||
this.lblAddress.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblAddress.TabIndex = 15;
|
|
||||||
this.lblAddress.Text = "联系地址";
|
|
||||||
this.lblAddress.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// txtTel
|
|
||||||
//
|
|
||||||
this.txtTel.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtTel.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtTel.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtTel.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtTel.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtTel.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtTel.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtTel.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtTel.ButtonSymbol = 61761;
|
|
||||||
this.txtTel.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtTel.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtTel.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtTel.Location = new System.Drawing.Point(117, 191);
|
|
||||||
this.txtTel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtTel.Maximum = 2147483647D;
|
|
||||||
this.txtTel.MaxLength = 20;
|
|
||||||
this.txtTel.Minimum = -2147483648D;
|
|
||||||
this.txtTel.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtTel.Name = "txtTel";
|
|
||||||
this.txtTel.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtTel.Size = new System.Drawing.Size(188, 42);
|
|
||||||
|
|
||||||
this.txtTel.StyleCustomMode = true;
|
|
||||||
this.txtTel.TabIndex = 14;
|
|
||||||
this.txtTel.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblTel
|
|
||||||
//
|
|
||||||
this.lblTel.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblTel.Location = new System.Drawing.Point(3, 198);
|
|
||||||
this.lblTel.Name = "lblTel";
|
|
||||||
this.lblTel.Size = new System.Drawing.Size(107, 29);
|
|
||||||
this.lblTel.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblTel.TabIndex = 13;
|
|
||||||
this.lblTel.Text = "移动电话";
|
|
||||||
this.lblTel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// txtEmail
|
|
||||||
//
|
|
||||||
this.txtEmail.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtEmail.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtEmail.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtEmail.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtEmail.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtEmail.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtEmail.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtEmail.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtEmail.ButtonSymbol = 61761;
|
|
||||||
this.txtEmail.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtEmail.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtEmail.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtEmail.Location = new System.Drawing.Point(429, 136);
|
|
||||||
this.txtEmail.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtEmail.Maximum = 2147483647D;
|
|
||||||
this.txtEmail.MaxLength = 60;
|
|
||||||
this.txtEmail.Minimum = -2147483648D;
|
|
||||||
this.txtEmail.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtEmail.Name = "txtEmail";
|
|
||||||
this.txtEmail.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtEmail.Size = new System.Drawing.Size(269, 42);
|
|
||||||
|
|
||||||
this.txtEmail.StyleCustomMode = true;
|
|
||||||
this.txtEmail.TabIndex = 12;
|
|
||||||
this.txtEmail.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblEmail
|
|
||||||
//
|
|
||||||
this.lblEmail.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblEmail.Location = new System.Drawing.Point(357, 143);
|
|
||||||
this.lblEmail.Name = "lblEmail";
|
|
||||||
this.lblEmail.Size = new System.Drawing.Size(65, 29);
|
|
||||||
this.lblEmail.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblEmail.TabIndex = 11;
|
|
||||||
this.lblEmail.Text = "邮箱";
|
|
||||||
this.lblEmail.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// lblBirthday
|
|
||||||
//
|
|
||||||
this.lblBirthday.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblBirthday.Location = new System.Drawing.Point(3, 143);
|
|
||||||
this.lblBirthday.Name = "lblBirthday";
|
|
||||||
this.lblBirthday.Size = new System.Drawing.Size(107, 29);
|
|
||||||
this.lblBirthday.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblBirthday.TabIndex = 9;
|
|
||||||
this.lblBirthday.Text = "出生日期";
|
|
||||||
this.lblBirthday.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// rdFemale
|
|
||||||
//
|
|
||||||
this.rdFemale.Cursor = System.Windows.Forms.Cursors.Hand;
|
|
||||||
this.rdFemale.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.rdFemale.Location = new System.Drawing.Point(501, 88);
|
|
||||||
this.rdFemale.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.rdFemale.Name = "rdFemale";
|
|
||||||
this.rdFemale.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
|
|
||||||
this.rdFemale.Size = new System.Drawing.Size(57, 36);
|
|
||||||
this.rdFemale.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.rdFemale.TabIndex = 8;
|
|
||||||
this.rdFemale.Text = "女";
|
|
||||||
//
|
|
||||||
// rdMale
|
|
||||||
//
|
|
||||||
this.rdMale.Checked = true;
|
|
||||||
this.rdMale.Cursor = System.Windows.Forms.Cursors.Hand;
|
|
||||||
this.rdMale.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.rdMale.Location = new System.Drawing.Point(433, 88);
|
|
||||||
this.rdMale.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.rdMale.Name = "rdMale";
|
|
||||||
this.rdMale.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
|
|
||||||
this.rdMale.Size = new System.Drawing.Size(57, 36);
|
|
||||||
this.rdMale.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.rdMale.TabIndex = 7;
|
|
||||||
this.rdMale.Text = "男";
|
|
||||||
//
|
|
||||||
// txtNickName
|
|
||||||
//
|
|
||||||
this.txtNickName.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtNickName.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtNickName.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtNickName.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtNickName.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtNickName.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtNickName.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtNickName.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtNickName.ButtonSymbol = 61761;
|
|
||||||
this.txtNickName.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtNickName.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtNickName.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtNickName.Location = new System.Drawing.Point(429, 32);
|
|
||||||
this.txtNickName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtNickName.Maximum = 2147483647D;
|
|
||||||
this.txtNickName.MaxLength = 20;
|
|
||||||
this.txtNickName.Minimum = -2147483648D;
|
|
||||||
this.txtNickName.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtNickName.Name = "txtNickName";
|
|
||||||
this.txtNickName.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtNickName.Size = new System.Drawing.Size(269, 42);
|
|
||||||
|
|
||||||
this.txtNickName.StyleCustomMode = true;
|
|
||||||
this.txtNickName.TabIndex = 3;
|
|
||||||
this.txtNickName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblGender
|
|
||||||
//
|
|
||||||
this.lblGender.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblGender.Location = new System.Drawing.Point(357, 91);
|
|
||||||
this.lblGender.Name = "lblGender";
|
|
||||||
this.lblGender.Size = new System.Drawing.Size(65, 29);
|
|
||||||
this.lblGender.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblGender.TabIndex = 6;
|
|
||||||
this.lblGender.Text = "性别";
|
|
||||||
this.lblGender.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// lblNickName
|
|
||||||
//
|
|
||||||
this.lblNickName.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblNickName.Location = new System.Drawing.Point(357, 39);
|
|
||||||
this.lblNickName.Name = "lblNickName";
|
|
||||||
this.lblNickName.Size = new System.Drawing.Size(65, 29);
|
|
||||||
this.lblNickName.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblNickName.TabIndex = 2;
|
|
||||||
this.lblNickName.Text = "昵称";
|
|
||||||
this.lblNickName.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// txtName
|
|
||||||
//
|
|
||||||
this.txtName.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtName.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtName.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtName.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtName.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtName.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtName.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtName.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtName.ButtonSymbol = 61761;
|
|
||||||
this.txtName.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtName.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtName.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtName.Location = new System.Drawing.Point(117, 84);
|
|
||||||
this.txtName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtName.Maximum = 2147483647D;
|
|
||||||
this.txtName.MaxLength = 20;
|
|
||||||
this.txtName.Minimum = -2147483648D;
|
|
||||||
this.txtName.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtName.Name = "txtName";
|
|
||||||
this.txtName.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtName.Size = new System.Drawing.Size(188, 42);
|
|
||||||
|
|
||||||
this.txtName.StyleCustomMode = true;
|
|
||||||
this.txtName.TabIndex = 5;
|
|
||||||
this.txtName.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblName
|
|
||||||
//
|
|
||||||
this.lblName.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblName.Location = new System.Drawing.Point(45, 91);
|
|
||||||
this.lblName.Name = "lblName";
|
|
||||||
this.lblName.Size = new System.Drawing.Size(65, 29);
|
|
||||||
this.lblName.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblName.TabIndex = 4;
|
|
||||||
this.lblName.Text = "姓名";
|
|
||||||
this.lblName.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// txtAccount
|
|
||||||
//
|
|
||||||
this.txtAccount.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtAccount.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtAccount.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtAccount.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtAccount.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtAccount.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtAccount.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtAccount.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtAccount.ButtonSymbol = 61761;
|
|
||||||
this.txtAccount.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtAccount.Enabled = false;
|
|
||||||
this.txtAccount.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtAccount.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtAccount.Location = new System.Drawing.Point(117, 32);
|
|
||||||
this.txtAccount.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtAccount.Maximum = 2147483647D;
|
|
||||||
this.txtAccount.MaxLength = 20;
|
|
||||||
this.txtAccount.Minimum = -2147483648D;
|
|
||||||
this.txtAccount.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtAccount.Name = "txtAccount";
|
|
||||||
this.txtAccount.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtAccount.Size = new System.Drawing.Size(188, 42);
|
|
||||||
|
|
||||||
this.txtAccount.StyleCustomMode = true;
|
|
||||||
this.txtAccount.TabIndex = 1;
|
|
||||||
this.txtAccount.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblAccount
|
|
||||||
//
|
|
||||||
this.lblAccount.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblAccount.Location = new System.Drawing.Point(45, 39);
|
|
||||||
this.lblAccount.Name = "lblAccount";
|
|
||||||
this.lblAccount.Size = new System.Drawing.Size(65, 29);
|
|
||||||
this.lblAccount.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblAccount.TabIndex = 0;
|
|
||||||
this.lblAccount.Text = "账号";
|
|
||||||
this.lblAccount.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// tabPage2
|
|
||||||
//
|
|
||||||
this.tabPage2.BackColor = System.Drawing.Color.White;
|
|
||||||
this.tabPage2.Controls.Add(this.btnSelectAvator);
|
|
||||||
this.tabPage2.Controls.Add(this.uiLabel10);
|
|
||||||
this.tabPage2.Location = new System.Drawing.Point(0, 40);
|
|
||||||
this.tabPage2.Name = "tabPage2";
|
|
||||||
this.tabPage2.Size = new System.Drawing.Size(200, 60);
|
|
||||||
this.tabPage2.TabIndex = 1;
|
|
||||||
this.tabPage2.Text = "头像";
|
|
||||||
//
|
|
||||||
// btnSelectAvator
|
|
||||||
//
|
|
||||||
this.btnSelectAvator.Cursor = System.Windows.Forms.Cursors.Hand;
|
|
||||||
this.btnSelectAvator.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.btnSelectAvator.Location = new System.Drawing.Point(258, 127);
|
|
||||||
this.btnSelectAvator.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.btnSelectAvator.Name = "btnSelectAvator";
|
|
||||||
this.btnSelectAvator.Size = new System.Drawing.Size(137, 48);
|
|
||||||
this.btnSelectAvator.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.btnSelectAvator.TabIndex = 1;
|
|
||||||
this.btnSelectAvator.Text = "上传头像";
|
|
||||||
this.btnSelectAvator.Click += new System.EventHandler(this.btnSelectAvator_Click);
|
|
||||||
//
|
|
||||||
// uiLabel10
|
|
||||||
//
|
|
||||||
this.uiLabel10.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.uiLabel10.Location = new System.Drawing.Point(111, 47);
|
|
||||||
this.uiLabel10.Name = "uiLabel10";
|
|
||||||
this.uiLabel10.Size = new System.Drawing.Size(538, 29);
|
|
||||||
this.uiLabel10.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.uiLabel10.TabIndex = 0;
|
|
||||||
this.uiLabel10.Text = "建议尺寸168*168,支持jpg,bmp,png,不能超过200kb";
|
|
||||||
this.uiLabel10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// tabPage3
|
|
||||||
//
|
|
||||||
this.tabPage3.BackColor = System.Drawing.Color.White;
|
|
||||||
this.tabPage3.Controls.Add(this.btnReset);
|
|
||||||
this.tabPage3.Controls.Add(this.btnChangePassword);
|
|
||||||
this.tabPage3.Controls.Add(this.txtComfirmPassword);
|
|
||||||
this.tabPage3.Controls.Add(this.txtNewPassword);
|
|
||||||
this.tabPage3.Controls.Add(this.lblComfirmPassword);
|
|
||||||
this.tabPage3.Controls.Add(this.lblNewPassword);
|
|
||||||
this.tabPage3.Controls.Add(this.txtOldPassword);
|
|
||||||
this.tabPage3.Controls.Add(this.lblOldPassword);
|
|
||||||
this.tabPage3.Controls.Add(this.uiLabel11);
|
|
||||||
this.tabPage3.Location = new System.Drawing.Point(0, 40);
|
|
||||||
this.tabPage3.Name = "tabPage3";
|
|
||||||
this.tabPage3.Size = new System.Drawing.Size(200, 60);
|
|
||||||
this.tabPage3.TabIndex = 2;
|
|
||||||
this.tabPage3.Text = "账号";
|
|
||||||
//
|
|
||||||
// btnReset
|
|
||||||
//
|
|
||||||
this.btnReset.Cursor = System.Windows.Forms.Cursors.Hand;
|
|
||||||
this.btnReset.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
|
|
||||||
this.btnReset.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
|
|
||||||
this.btnReset.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(174)))), ((int)(((byte)(86)))));
|
|
||||||
this.btnReset.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
|
|
||||||
this.btnReset.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
|
|
||||||
this.btnReset.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.btnReset.Location = new System.Drawing.Point(268, 261);
|
|
||||||
this.btnReset.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.btnReset.Name = "btnReset";
|
|
||||||
this.btnReset.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
|
|
||||||
this.btnReset.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(174)))), ((int)(((byte)(86)))));
|
|
||||||
this.btnReset.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
|
|
||||||
this.btnReset.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
|
|
||||||
this.btnReset.Size = new System.Drawing.Size(125, 44);
|
|
||||||
this.btnReset.Style = Sunny.UI.UIStyle.Orange;
|
|
||||||
this.btnReset.StyleCustomMode = true;
|
|
||||||
this.btnReset.TabIndex = 21;
|
|
||||||
this.btnReset.Text = "重置";
|
|
||||||
this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
|
|
||||||
//
|
|
||||||
// btnChangePassword
|
|
||||||
//
|
|
||||||
this.btnChangePassword.Cursor = System.Windows.Forms.Cursors.Hand;
|
|
||||||
this.btnChangePassword.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.btnChangePassword.Location = new System.Drawing.Point(114, 261);
|
|
||||||
this.btnChangePassword.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.btnChangePassword.Name = "btnChangePassword";
|
|
||||||
this.btnChangePassword.Size = new System.Drawing.Size(125, 44);
|
|
||||||
this.btnChangePassword.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.btnChangePassword.TabIndex = 20;
|
|
||||||
this.btnChangePassword.Text = "保存";
|
|
||||||
this.btnChangePassword.Click += new System.EventHandler(this.btnChangePassword_Click);
|
|
||||||
//
|
|
||||||
// txtComfirmPassword
|
|
||||||
//
|
|
||||||
this.txtComfirmPassword.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtComfirmPassword.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtComfirmPassword.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtComfirmPassword.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtComfirmPassword.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtComfirmPassword.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtComfirmPassword.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtComfirmPassword.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtComfirmPassword.ButtonSymbol = 61761;
|
|
||||||
this.txtComfirmPassword.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtComfirmPassword.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtComfirmPassword.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtComfirmPassword.Location = new System.Drawing.Point(205, 178);
|
|
||||||
this.txtComfirmPassword.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtComfirmPassword.Maximum = 2147483647D;
|
|
||||||
this.txtComfirmPassword.Minimum = -2147483648D;
|
|
||||||
this.txtComfirmPassword.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtComfirmPassword.Name = "txtComfirmPassword";
|
|
||||||
this.txtComfirmPassword.PasswordChar = '*';
|
|
||||||
this.txtComfirmPassword.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtComfirmPassword.Size = new System.Drawing.Size(188, 42);
|
|
||||||
|
|
||||||
this.txtComfirmPassword.StyleCustomMode = true;
|
|
||||||
this.txtComfirmPassword.TabIndex = 11;
|
|
||||||
this.txtComfirmPassword.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// txtNewPassword
|
|
||||||
//
|
|
||||||
this.txtNewPassword.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtNewPassword.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtNewPassword.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtNewPassword.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtNewPassword.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtNewPassword.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtNewPassword.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtNewPassword.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtNewPassword.ButtonSymbol = 61761;
|
|
||||||
this.txtNewPassword.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtNewPassword.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtNewPassword.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtNewPassword.Location = new System.Drawing.Point(205, 123);
|
|
||||||
this.txtNewPassword.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtNewPassword.Maximum = 2147483647D;
|
|
||||||
this.txtNewPassword.Minimum = -2147483648D;
|
|
||||||
this.txtNewPassword.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtNewPassword.Name = "txtNewPassword";
|
|
||||||
this.txtNewPassword.PasswordChar = '*';
|
|
||||||
this.txtNewPassword.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtNewPassword.Size = new System.Drawing.Size(188, 42);
|
|
||||||
|
|
||||||
this.txtNewPassword.StyleCustomMode = true;
|
|
||||||
this.txtNewPassword.TabIndex = 9;
|
|
||||||
this.txtNewPassword.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblComfirmPassword
|
|
||||||
//
|
|
||||||
this.lblComfirmPassword.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblComfirmPassword.Location = new System.Drawing.Point(88, 185);
|
|
||||||
this.lblComfirmPassword.Name = "lblComfirmPassword";
|
|
||||||
this.lblComfirmPassword.Size = new System.Drawing.Size(110, 29);
|
|
||||||
this.lblComfirmPassword.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblComfirmPassword.TabIndex = 10;
|
|
||||||
this.lblComfirmPassword.Text = "确认密码";
|
|
||||||
this.lblComfirmPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// lblNewPassword
|
|
||||||
//
|
|
||||||
this.lblNewPassword.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblNewPassword.Location = new System.Drawing.Point(114, 130);
|
|
||||||
this.lblNewPassword.Name = "lblNewPassword";
|
|
||||||
this.lblNewPassword.Size = new System.Drawing.Size(84, 29);
|
|
||||||
this.lblNewPassword.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblNewPassword.TabIndex = 8;
|
|
||||||
this.lblNewPassword.Text = "新密码";
|
|
||||||
this.lblNewPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// txtOldPassword
|
|
||||||
//
|
|
||||||
this.txtOldPassword.ButtonFillColor = System.Drawing.Color.White;
|
|
||||||
this.txtOldPassword.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtOldPassword.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtOldPassword.ButtonForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(96)))), ((int)(((byte)(98)))), ((int)(((byte)(102)))));
|
|
||||||
this.txtOldPassword.ButtonForeHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtOldPassword.ButtonForePressColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(131)))), ((int)(((byte)(229)))));
|
|
||||||
this.txtOldPassword.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtOldPassword.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(222)))), ((int)(((byte)(255)))));
|
|
||||||
this.txtOldPassword.ButtonSymbol = 61761;
|
|
||||||
this.txtOldPassword.Cursor = System.Windows.Forms.Cursors.IBeam;
|
|
||||||
this.txtOldPassword.FillColor2 = System.Drawing.Color.White;
|
|
||||||
this.txtOldPassword.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.txtOldPassword.Location = new System.Drawing.Point(205, 71);
|
|
||||||
this.txtOldPassword.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
|
||||||
this.txtOldPassword.Maximum = 2147483647D;
|
|
||||||
this.txtOldPassword.Minimum = -2147483648D;
|
|
||||||
this.txtOldPassword.MinimumSize = new System.Drawing.Size(1, 16);
|
|
||||||
this.txtOldPassword.Name = "txtOldPassword";
|
|
||||||
this.txtOldPassword.PasswordChar = '*';
|
|
||||||
this.txtOldPassword.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(216)))), ((int)(((byte)(219)))), ((int)(((byte)(227)))));
|
|
||||||
this.txtOldPassword.Size = new System.Drawing.Size(188, 42);
|
|
||||||
|
|
||||||
this.txtOldPassword.StyleCustomMode = true;
|
|
||||||
this.txtOldPassword.TabIndex = 7;
|
|
||||||
this.txtOldPassword.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// lblOldPassword
|
|
||||||
//
|
|
||||||
this.lblOldPassword.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.lblOldPassword.Location = new System.Drawing.Point(114, 78);
|
|
||||||
this.lblOldPassword.Name = "lblOldPassword";
|
|
||||||
this.lblOldPassword.Size = new System.Drawing.Size(84, 29);
|
|
||||||
this.lblOldPassword.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblOldPassword.TabIndex = 6;
|
|
||||||
this.lblOldPassword.Text = "旧密码";
|
|
||||||
this.lblOldPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// uiLabel11
|
|
||||||
//
|
|
||||||
this.uiLabel11.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.uiLabel11.Location = new System.Drawing.Point(45, 23);
|
|
||||||
this.uiLabel11.Name = "uiLabel11";
|
|
||||||
this.uiLabel11.Size = new System.Drawing.Size(125, 29);
|
|
||||||
this.uiLabel11.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.uiLabel11.TabIndex = 0;
|
|
||||||
this.uiLabel11.Text = "修改密码";
|
|
||||||
this.uiLabel11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// AccountForm
|
|
||||||
//
|
|
||||||
this.AllowShowTitle = false;
|
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 27F);
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.ClientSize = new System.Drawing.Size(1031, 558);
|
|
||||||
this.Controls.Add(this.uiPanel1);
|
|
||||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
|
||||||
this.MaximizeBox = false;
|
|
||||||
this.MinimizeBox = false;
|
|
||||||
this.Name = "AccountForm";
|
|
||||||
this.Padding = new System.Windows.Forms.Padding(0);
|
|
||||||
this.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(248)))));
|
|
||||||
this.ShowTitle = false;
|
|
||||||
this.ShowTitleIcon = true;
|
|
||||||
this.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.Text = "账户管理";
|
|
||||||
this.TitleColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(248)))));
|
|
||||||
this.TitleForeColor = System.Drawing.Color.DimGray;
|
|
||||||
this.TopMost = true;
|
|
||||||
this.Load += new System.EventHandler(this.AccountForm_Load);
|
|
||||||
this.uiPanel1.ResumeLayout(false);
|
|
||||||
this.titlePanel.ResumeLayout(false);
|
|
||||||
this.panel1.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.imageAvator)).EndInit();
|
|
||||||
this.uiTabControl1.ResumeLayout(false);
|
|
||||||
this.tabPage1.ResumeLayout(false);
|
|
||||||
this.tabPage2.ResumeLayout(false);
|
|
||||||
this.tabPage3.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private Sunny.UI.UIPanel uiPanel1;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.Label lblCurrentUser;
|
|
||||||
private System.Windows.Forms.PictureBox imageAvator;
|
|
||||||
private Sunny.UI.UITabControl uiTabControl1;
|
|
||||||
private System.Windows.Forms.TabPage tabPage1;
|
|
||||||
private Sunny.UI.UIButton btnSave;
|
|
||||||
private Sunny.UI.UITextBox txtSignature;
|
|
||||||
private Sunny.UI.UILabel lblSignature;
|
|
||||||
private Sunny.UI.UITextBox txtAddress;
|
|
||||||
private Sunny.UI.UILabel lblAddress;
|
|
||||||
private Sunny.UI.UITextBox txtTel;
|
|
||||||
private Sunny.UI.UILabel lblTel;
|
|
||||||
private Sunny.UI.UITextBox txtEmail;
|
|
||||||
private Sunny.UI.UILabel lblEmail;
|
|
||||||
private Sunny.UI.UILabel lblBirthday;
|
|
||||||
private Sunny.UI.UIRadioButton rdFemale;
|
|
||||||
private Sunny.UI.UIRadioButton rdMale;
|
|
||||||
private Sunny.UI.UILabel lblGender;
|
|
||||||
private Sunny.UI.UILabel lblNickName;
|
|
||||||
private Sunny.UI.UITextBox txtName;
|
|
||||||
private Sunny.UI.UILabel lblName;
|
|
||||||
private Sunny.UI.UITextBox txtAccount;
|
|
||||||
private Sunny.UI.UILabel lblAccount;
|
|
||||||
private System.Windows.Forms.TabPage tabPage2;
|
|
||||||
private Sunny.UI.UIButton btnSelectAvator;
|
|
||||||
private Sunny.UI.UILabel uiLabel10;
|
|
||||||
private System.Windows.Forms.TabPage tabPage3;
|
|
||||||
private Sunny.UI.UIButton btnReset;
|
|
||||||
private Sunny.UI.UIButton btnChangePassword;
|
|
||||||
private Sunny.UI.UITextBox txtComfirmPassword;
|
|
||||||
private Sunny.UI.UITextBox txtNewPassword;
|
|
||||||
private Sunny.UI.UILabel lblComfirmPassword;
|
|
||||||
private Sunny.UI.UILabel lblNewPassword;
|
|
||||||
private Sunny.UI.UITextBox txtOldPassword;
|
|
||||||
private Sunny.UI.UILabel lblOldPassword;
|
|
||||||
private Sunny.UI.UILabel uiLabel11;
|
|
||||||
private System.Windows.Forms.Panel titlePanel;
|
|
||||||
private Sunny.UI.UILabel uiLabel15;
|
|
||||||
private Sunny.UI.UISymbolLabel btnClose;
|
|
||||||
private Sunny.UI.UITextBox txtNickName;
|
|
||||||
private Sunny.UI.UIDatePicker txtBirthday;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,304 +0,0 @@
|
|||||||
using Sunny.UI;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.IO;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Common;
|
|
||||||
using DH.RBAC.Properties;
|
|
||||||
using DH.RBAC.Logic.Sys;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
|
||||||
|
|
||||||
namespace DH.RBAC
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 用户账户界面
|
|
||||||
/// </summary>
|
|
||||||
public partial class AccountForm : UIForm
|
|
||||||
{
|
|
||||||
private SysUserLogic userlogic;
|
|
||||||
private SysUserLogOnLogic userLogOnLogic;
|
|
||||||
/// <summary>
|
|
||||||
/// 构造方法
|
|
||||||
/// </summary>
|
|
||||||
public AccountForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
userlogic = new SysUserLogic();
|
|
||||||
userLogOnLogic = new SysUserLogOnLogic();
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 标题栏 处理
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
FormHelper.subForm = null;
|
|
||||||
this.Close();
|
|
||||||
}
|
|
||||||
private Point mPoint;
|
|
||||||
private void titlePanel_MouseDown(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
mPoint = new Point(e.X, e.Y);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void titlePanel_MouseMove(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Button == MouseButtons.Left)
|
|
||||||
{
|
|
||||||
this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_MouseEnter(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
btnClose.BackColor = Color.FromArgb(231, 231, 231);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_MouseLeave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
btnClose.BackColor = Color.Transparent;
|
|
||||||
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private string Avatar;
|
|
||||||
/// <summary>
|
|
||||||
/// 画面加载,读取用户信息,显示在界面上
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void AccountForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SysUser user = userlogic.Get(GlobalConfig.CurrentUser.Id);
|
|
||||||
if (user == null)
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "网络或服务器异常,请稍后重试!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Avatar = user.Avatar;
|
|
||||||
txtAccount.Text = user.Account;
|
|
||||||
txtNickName.Text = user.NickName;
|
|
||||||
txtName.Text = user.RealName;
|
|
||||||
if (user.Gender == "1")
|
|
||||||
rdMale.Checked = true;
|
|
||||||
else
|
|
||||||
rdFemale.Checked = true;
|
|
||||||
txtBirthday.Value = user.Birthday.Value;
|
|
||||||
txtEmail.Text = user.Email;
|
|
||||||
txtTel.Text = user.MobilePhone;
|
|
||||||
txtAddress.Text = user.Address;
|
|
||||||
txtSignature.Text = user.Signature;
|
|
||||||
|
|
||||||
//头像显示
|
|
||||||
if (StringHelper.IsNullOrEmpty(user.AvatarBase64))
|
|
||||||
{
|
|
||||||
imageAvator.Image = Resources.avatar;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
MemoryStream ms = new MemoryStream(Convert.FromBase64String(user.AvatarBase64));
|
|
||||||
imageAvator.Image = Image.FromStream(ms);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
imageAvator.Image = Resources.avatar;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lblCurrentUser.Text = $"{user.Account}@{user.NickName}";
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存修改
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void btnSave_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//非空检测
|
|
||||||
if (StringHelper.IsNullOrEmpty(txtNickName.Text))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "昵称不能为空!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (StringHelper.IsNullOrEmpty(txtName.Text))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "姓名不能为空!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (StringHelper.IsNullOrEmpty(txtBirthday.Text))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "请选择生日!", autoClose: 3);
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (StringHelper.IsNullOrEmpty(txtEmail.Text))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "邮箱不能为空!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (StringHelper.IsNullOrEmpty(txtTel.Text))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "手机不能为空!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//获得目前信息,提交给服务端处理,返回结果
|
|
||||||
SysUser model = new SysUser();
|
|
||||||
model.Id = GlobalConfig.CurrentUser.Id;
|
|
||||||
model.Account = txtAccount.Text;
|
|
||||||
model.NickName = txtNickName.Text;
|
|
||||||
model.RealName = txtName.Text;
|
|
||||||
model.Avatar = Avatar;
|
|
||||||
model.Gender = rdMale.Checked ? "1" : "0";
|
|
||||||
model.StrBirthday = txtBirthday.Text;
|
|
||||||
model.Email = txtEmail.Text;
|
|
||||||
model.MobilePhone = txtTel.Text;
|
|
||||||
model.Address = txtAddress.Text;
|
|
||||||
model.Signature = txtSignature.Text;
|
|
||||||
|
|
||||||
DateTime defaultDt = DateTime.Today;
|
|
||||||
DateTime.TryParse(model.StrBirthday, out defaultDt);
|
|
||||||
model.Birthday = defaultDt;
|
|
||||||
int row = userlogic.AppUpdateBasicInfo(model);
|
|
||||||
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "对不起,操作失败!", autoClose: 3);
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
AntdUI.Message.success(this, "恭喜你,操作成功!", autoClose: 3);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 选择图片上传
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void btnSelectAvator_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//OpenFileDialog dialog = new OpenFileDialog();
|
|
||||||
//dialog.Filter = "Image Files(*.BMP;*.JPG;*.png)|*.BMP;*.JPG;*.png";
|
|
||||||
//if (dialog.ShowDialog() == DialogResult.OK)
|
|
||||||
//{
|
|
||||||
// string fileName = dialog.FileName;
|
|
||||||
// Image image = Image.FromFile(fileName);
|
|
||||||
// //上传到服务器
|
|
||||||
// AjaxResult result = null;
|
|
||||||
|
|
||||||
// string url = GlobalConfig.Config.Url + "account/uploadImage";
|
|
||||||
// string str = HttpUtils.PostFile(url, fileName, 2000);
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// result = str.ToObject<AjaxResult>();
|
|
||||||
// }
|
|
||||||
// catch
|
|
||||||
// {
|
|
||||||
// result = null;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
// if (result == null)
|
|
||||||
// {
|
|
||||||
// this.ShowWarningDialog("网络或服务器异常,请稍后重试", UIStyle.White);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// if (result.state != ResultType.Success)
|
|
||||||
// {
|
|
||||||
// this.ShowWarningDialog(result.message, UIStyle.White);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// //上传成功,修改界面头像,以及服务器头像地址
|
|
||||||
// Avatar = result.data.ToString();
|
|
||||||
// imageAvator.Image = image;
|
|
||||||
// this.ShowSuccessDialog("上传成功,点击保存后生效", UIStyle.White);
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnReset_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtOldPassword.Text = string.Empty;
|
|
||||||
txtNewPassword.Text = string.Empty;
|
|
||||||
txtComfirmPassword.Text = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnChangePassword_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//非空检测
|
|
||||||
if (StringHelper.IsNullOrEmpty(txtOldPassword.Text))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "旧密码不能为空!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (StringHelper.IsNullOrEmpty(txtNewPassword.Text))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "新密码不能为空!", autoClose: 3);
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (StringHelper.IsNullOrEmpty(txtComfirmPassword.Text))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "确认密码不能为空!", autoClose: 3);
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (txtNewPassword.Text != txtComfirmPassword.Text)
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "两次密码不一致!", autoClose: 3);
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary<string, string> parm = new Dictionary<string, string>();
|
|
||||||
string userId = GlobalConfig.CurrentUser.Id;
|
|
||||||
string oldPassword = txtOldPassword.Text;
|
|
||||||
string newPassword = txtNewPassword.Text;
|
|
||||||
string confirmPassword = txtComfirmPassword.Text;
|
|
||||||
|
|
||||||
|
|
||||||
if (!newPassword.Equals(confirmPassword))
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "两次密码输入不一致,请重新确认!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
oldPassword = oldPassword.MD5Encrypt();
|
|
||||||
newPassword = newPassword.MD5Encrypt();
|
|
||||||
confirmPassword = confirmPassword.MD5Encrypt();
|
|
||||||
|
|
||||||
var userLoginEntity = userLogOnLogic.GetByAccount(userId);
|
|
||||||
if (oldPassword.DESEncrypt(userLoginEntity.SecretKey).MD5Encrypt() != userLoginEntity.Password)
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "旧密码验证失败!", autoClose: 3);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
userLoginEntity.Password = newPassword.DESEncrypt(userLoginEntity.SecretKey).MD5Encrypt();
|
|
||||||
int isSuccess = userLogOnLogic.ModifyPwd(userLoginEntity);
|
|
||||||
if (isSuccess == 0)
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "对不起,操作失败!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
AntdUI.Message.success(this, "修改成功!", autoClose: 3);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
|
||||||
using DH.RBAC.Model.Sys;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Common
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 全局数据存放
|
|
||||||
/// </summary>
|
|
||||||
public class GlobalConfig
|
|
||||||
{
|
|
||||||
public static MyConfig Config { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 当前登录的用户
|
|
||||||
/// </summary>
|
|
||||||
public static SysUser CurrentUser;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 当前用户头像
|
|
||||||
/// </summary>
|
|
||||||
public static Image Avatar;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 当前选的哪个菜单
|
|
||||||
/// </summary>
|
|
||||||
public static string CurrentMenuText;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 当前用户权限
|
|
||||||
/// </summary>
|
|
||||||
public static List<SysPermission> PermissionList;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,719 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Common
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 图标字典
|
|
||||||
/// </summary>
|
|
||||||
public class IconDict
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 全局存放图标字典
|
|
||||||
/// </summary>
|
|
||||||
public static Dictionary<string, int> MyIconDict = Init();
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化字典
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static Dictionary<string, int> Init()
|
|
||||||
{
|
|
||||||
Dictionary<string, int> dict = new Dictionary<string, int>();
|
|
||||||
dict.Add("fa fa-bluetooth", 62099);
|
|
||||||
dict.Add("fa fa-bluetooth-b", 62100);
|
|
||||||
dict.Add("fa fa-codiepie", 62084);
|
|
||||||
dict.Add("fa fa-credit-card-alt", 62083);
|
|
||||||
dict.Add("fa fa-edge", 62082);
|
|
||||||
dict.Add("fa fa-fort-awesome", 62086);
|
|
||||||
dict.Add("fa fa-hashtag", 62098);
|
|
||||||
dict.Add("fa fa-mixcloud", 62089);
|
|
||||||
dict.Add("fa fa-modx", 62085);
|
|
||||||
dict.Add("fa fa-pause-circle", 62091);
|
|
||||||
dict.Add("fa fa-pause-circle-o", 62092);
|
|
||||||
dict.Add("fa fa-percent", 62101);
|
|
||||||
dict.Add("fa fa-product-hunt", 62088);
|
|
||||||
dict.Add("fa fa-reddit-alien", 62081);
|
|
||||||
dict.Add("fa fa-scribd", 62090);
|
|
||||||
dict.Add("fa fa-shopping-bag", 62096);
|
|
||||||
dict.Add("fa fa-shopping-basket", 62097);
|
|
||||||
dict.Add("fa fa-stop-circle", 62093);
|
|
||||||
dict.Add("fa fa-stop-circle-o", 62094);
|
|
||||||
dict.Add("fa fa-usb", 62087);
|
|
||||||
dict.Add("fa fa-adjust", 61506);
|
|
||||||
dict.Add("fa fa-anchor", 61757);
|
|
||||||
dict.Add("fa fa-archive", 61831);
|
|
||||||
dict.Add("fa fa-area-chart", 61950);
|
|
||||||
dict.Add("fa fa-arrows", 61511);
|
|
||||||
dict.Add("fa fa-arrows-h", 61566);
|
|
||||||
dict.Add("fa fa-arrows-v", 61565);
|
|
||||||
dict.Add("fa fa-asterisk", 61545);
|
|
||||||
dict.Add("fa fa-at", 61946);
|
|
||||||
dict.Add("fa fa-automobile", 61881);
|
|
||||||
dict.Add("fa fa-balance-scale", 62030);
|
|
||||||
dict.Add("fa fa-ban", 61534);
|
|
||||||
dict.Add("fa fa-bank", 61852);
|
|
||||||
dict.Add("fa fa-bar-chart", 61568);
|
|
||||||
dict.Add("fa fa-bar-chart-o", 61568);
|
|
||||||
dict.Add("fa fa-barcode", 61482);
|
|
||||||
dict.Add("fa fa-bars", 61641);
|
|
||||||
dict.Add("fa fa-battery-0", 62020);
|
|
||||||
dict.Add("fa fa-battery-1", 62019);
|
|
||||||
dict.Add("fa fa-battery-2", 62018);
|
|
||||||
dict.Add("fa fa-battery-3", 62017);
|
|
||||||
dict.Add("fa fa-battery-4", 62016);
|
|
||||||
dict.Add("fa fa-battery-empty", 62020);
|
|
||||||
dict.Add("fa fa-battery-full", 62016);
|
|
||||||
dict.Add("fa fa-battery-half", 62018);
|
|
||||||
dict.Add("fa fa-battery-quarter", 62019);
|
|
||||||
dict.Add("fa fa-battery-three-quarters", 62017);
|
|
||||||
dict.Add("fa fa-bed", 62006);
|
|
||||||
dict.Add("fa fa-beer", 61692);
|
|
||||||
dict.Add("fa fa-bell", 61683);
|
|
||||||
dict.Add("fa fa-bell-o", 61602);
|
|
||||||
dict.Add("fa fa-bell-slash", 61942);
|
|
||||||
dict.Add("fa fa-bell-slash-o", 61943);
|
|
||||||
dict.Add("fa fa-bicycle", 61958);
|
|
||||||
dict.Add("fa fa-binoculars", 61925);
|
|
||||||
dict.Add("fa fa-birthday-cake", 61949);
|
|
||||||
dict.Add("fa fa-bolt", 61671);
|
|
||||||
dict.Add("fa fa-bomb", 61922);
|
|
||||||
dict.Add("fa fa-book", 61485);
|
|
||||||
dict.Add("fa fa-bookmark", 61486);
|
|
||||||
dict.Add("fa fa-bookmark-o", 61591);
|
|
||||||
dict.Add("fa fa-briefcase", 61617);
|
|
||||||
dict.Add("fa fa-bug", 61832);
|
|
||||||
dict.Add("fa fa-building", 61869);
|
|
||||||
dict.Add("fa fa-building-o", 61687);
|
|
||||||
dict.Add("fa fa-bullhorn", 61601);
|
|
||||||
dict.Add("fa fa-bullseye", 61760);
|
|
||||||
dict.Add("fa fa-bus", 61959);
|
|
||||||
dict.Add("fa fa-cab", 61882);
|
|
||||||
dict.Add("fa fa-calculator", 61932);
|
|
||||||
dict.Add("fa fa-calendar", 61555);
|
|
||||||
dict.Add("fa fa-calendar-check-o", 62068);
|
|
||||||
dict.Add("fa fa-calendar-minus-o", 62066);
|
|
||||||
dict.Add("fa fa-calendar-o", 61747);
|
|
||||||
dict.Add("fa fa-calendar-plus-o", 62065);
|
|
||||||
dict.Add("fa fa-calendar-times-o", 62067);
|
|
||||||
dict.Add("fa fa-camera", 61488);
|
|
||||||
dict.Add("fa fa-camera-retro", 61571);
|
|
||||||
dict.Add("fa fa-car", 61881);
|
|
||||||
dict.Add("fa fa-caret-square-o-down", 61776);
|
|
||||||
dict.Add("fa fa-caret-square-o-left", 61841);
|
|
||||||
dict.Add("fa fa-caret-square-o-right", 61778);
|
|
||||||
dict.Add("fa fa-caret-square-o-up", 61777);
|
|
||||||
dict.Add("fa fa-cart-arrow-down", 61976);
|
|
||||||
dict.Add("fa fa-cart-plus", 61975);
|
|
||||||
dict.Add("fa fa-cc", 61962);
|
|
||||||
dict.Add("fa fa-certificate", 61603);
|
|
||||||
dict.Add("fa fa-check", 61452);
|
|
||||||
dict.Add("fa fa-check-circle", 61528);
|
|
||||||
dict.Add("fa fa-check-circle-o", 61533);
|
|
||||||
dict.Add("fa fa-check-square", 61770);
|
|
||||||
dict.Add("fa fa-check-square-o", 61510);
|
|
||||||
dict.Add("fa fa-child", 61870);
|
|
||||||
dict.Add("fa fa-circle", 61713);
|
|
||||||
dict.Add("fa fa-circle-o", 61708);
|
|
||||||
dict.Add("fa fa-circle-o-notch", 61902);
|
|
||||||
dict.Add("fa fa-circle-thin", 61915);
|
|
||||||
dict.Add("fa fa-clock-o", 61463);
|
|
||||||
dict.Add("fa fa-clone", 62029);
|
|
||||||
dict.Add("fa fa-close", 61453);
|
|
||||||
dict.Add("fa fa-cloud", 61634);
|
|
||||||
dict.Add("fa fa-cloud-download", 61677);
|
|
||||||
dict.Add("fa fa-cloud-upload", 61678);
|
|
||||||
dict.Add("fa fa-code", 61729);
|
|
||||||
dict.Add("fa fa-code-fork", 61734);
|
|
||||||
dict.Add("fa fa-coffee", 61684);
|
|
||||||
dict.Add("fa fa-cog", 61459);
|
|
||||||
dict.Add("fa fa-cogs", 61573);
|
|
||||||
dict.Add("fa fa-comment", 61557);
|
|
||||||
dict.Add("fa fa-comment-o", 61669);
|
|
||||||
dict.Add("fa fa-commenting", 62074);
|
|
||||||
dict.Add("fa fa-commenting-o", 62075);
|
|
||||||
dict.Add("fa fa-comments", 61574);
|
|
||||||
dict.Add("fa fa-comments-o", 61670);
|
|
||||||
dict.Add("fa fa-compass", 61774);
|
|
||||||
dict.Add("fa fa-copyright", 61945);
|
|
||||||
dict.Add("fa fa-creative-commons", 62046);
|
|
||||||
dict.Add("fa fa-credit-card", 61597);
|
|
||||||
dict.Add("fa fa-crop", 61733);
|
|
||||||
dict.Add("fa fa-crosshairs", 61531);
|
|
||||||
dict.Add("fa fa-cube", 61874);
|
|
||||||
dict.Add("fa fa-cubes", 61875);
|
|
||||||
dict.Add("fa fa-cutlery", 61685);
|
|
||||||
dict.Add("fa fa-dashboard", 61668);
|
|
||||||
dict.Add("fa fa-database", 61888);
|
|
||||||
dict.Add("fa fa-desktop", 61704);
|
|
||||||
dict.Add("fa fa-diamond", 61977);
|
|
||||||
dict.Add("fa fa-dot-circle-o", 61842);
|
|
||||||
dict.Add("fa fa-download", 61465);
|
|
||||||
dict.Add("fa fa-edit", 61508);
|
|
||||||
dict.Add("fa fa-ellipsis-h", 61761);
|
|
||||||
dict.Add("fa fa-ellipsis-v", 61762);
|
|
||||||
dict.Add("fa fa-envelope", 61664);
|
|
||||||
dict.Add("fa fa-envelope-o", 61443);
|
|
||||||
dict.Add("fa fa-envelope-square", 61849);
|
|
||||||
dict.Add("fa fa-eraser", 61741);
|
|
||||||
dict.Add("fa fa-exchange", 61676);
|
|
||||||
dict.Add("fa fa-exclamation", 61738);
|
|
||||||
dict.Add("fa fa-exclamation-circle", 61546);
|
|
||||||
dict.Add("fa fa-exclamation-triangle", 61553);
|
|
||||||
dict.Add("fa fa-external-link", 61582);
|
|
||||||
dict.Add("fa fa-external-link-square", 61772);
|
|
||||||
dict.Add("fa fa-eye", 61550);
|
|
||||||
dict.Add("fa fa-eye-slash", 61552);
|
|
||||||
dict.Add("fa fa-eyedropper", 61947);
|
|
||||||
dict.Add("fa fa-fax", 61868);
|
|
||||||
dict.Add("fa fa-feed", 61598);
|
|
||||||
dict.Add("fa fa-female", 61826);
|
|
||||||
dict.Add("fa fa-fighter-jet", 61691);
|
|
||||||
dict.Add("fa fa-file-archive-o", 61894);
|
|
||||||
dict.Add("fa fa-file-audio-o", 61895);
|
|
||||||
dict.Add("fa fa-file-code-o", 61897);
|
|
||||||
dict.Add("fa fa-file-excel-o", 61891);
|
|
||||||
dict.Add("fa fa-file-image-o", 61893);
|
|
||||||
dict.Add("fa fa-file-movie-o", 61896);
|
|
||||||
dict.Add("fa fa-file-pdf-o", 61889);
|
|
||||||
dict.Add("fa fa-file-photo-o", 61893);
|
|
||||||
dict.Add("fa fa-file-picture-o", 61893);
|
|
||||||
dict.Add("fa fa-file-powerpoint-o", 61892);
|
|
||||||
dict.Add("fa fa-file-sound-o", 61895);
|
|
||||||
dict.Add("fa fa-file-video-o", 61896);
|
|
||||||
dict.Add("fa fa-file-word-o", 61890);
|
|
||||||
dict.Add("fa fa-file-zip-o", 61894);
|
|
||||||
dict.Add("fa fa-film", 61448);
|
|
||||||
dict.Add("fa fa-filter", 61616);
|
|
||||||
dict.Add("fa fa-fire", 61549);
|
|
||||||
dict.Add("fa fa-fire-extinguisher", 61748);
|
|
||||||
dict.Add("fa fa-flag", 61476);
|
|
||||||
dict.Add("fa fa-flag-checkered", 61726);
|
|
||||||
dict.Add("fa fa-flag-o", 61725);
|
|
||||||
dict.Add("fa fa-flash", 61671);
|
|
||||||
dict.Add("fa fa-flask", 61635);
|
|
||||||
dict.Add("fa fa-folder", 61563);
|
|
||||||
dict.Add("fa fa-folder-o", 61716);
|
|
||||||
dict.Add("fa fa-folder-open", 61564);
|
|
||||||
dict.Add("fa fa-folder-open-o", 61717);
|
|
||||||
dict.Add("fa fa-frown-o", 61721);
|
|
||||||
dict.Add("fa fa-futbol-o", 61923);
|
|
||||||
dict.Add("fa fa-gamepad", 61723);
|
|
||||||
dict.Add("fa fa-gavel", 61667);
|
|
||||||
dict.Add("fa fa-gear", 61459);
|
|
||||||
dict.Add("fa fa-gears", 61573);
|
|
||||||
dict.Add("fa fa-gift", 61547);
|
|
||||||
dict.Add("fa fa-glass", 61440);
|
|
||||||
dict.Add("fa fa-globe", 61612);
|
|
||||||
dict.Add("fa fa-graduation-cap", 61853);
|
|
||||||
dict.Add("fa fa-group", 61632);
|
|
||||||
dict.Add("fa fa-hand-grab-o", 62037);
|
|
||||||
dict.Add("fa fa-hand-lizard-o", 62040);
|
|
||||||
dict.Add("fa fa-hand-paper-o", 62038);
|
|
||||||
dict.Add("fa fa-hand-peace-o", 62043);
|
|
||||||
dict.Add("fa fa-hand-pointer-o", 62042);
|
|
||||||
dict.Add("fa fa-hand-rock-o", 62037);
|
|
||||||
dict.Add("fa fa-hand-scissors-o", 62039);
|
|
||||||
dict.Add("fa fa-hand-spock-o", 62041);
|
|
||||||
dict.Add("fa fa-hand-stop-o", 62038);
|
|
||||||
dict.Add("fa fa-hdd-o", 61600);
|
|
||||||
dict.Add("fa fa-headphones", 61477);
|
|
||||||
dict.Add("fa fa-heart", 61444);
|
|
||||||
dict.Add("fa fa-heart-o", 61578);
|
|
||||||
dict.Add("fa fa-heartbeat", 61982);
|
|
||||||
dict.Add("fa fa-history", 61914);
|
|
||||||
dict.Add("fa fa-home", 61461);
|
|
||||||
dict.Add("fa fa-hotel", 62006);
|
|
||||||
dict.Add("fa fa-hourglass", 62036);
|
|
||||||
dict.Add("fa fa-hourglass-1", 62033);
|
|
||||||
dict.Add("fa fa-hourglass-2", 62034);
|
|
||||||
dict.Add("fa fa-hourglass-3", 62035);
|
|
||||||
dict.Add("fa fa-hourglass-end", 62035);
|
|
||||||
dict.Add("fa fa-hourglass-half", 62034);
|
|
||||||
dict.Add("fa fa-hourglass-o", 62032);
|
|
||||||
dict.Add("fa fa-hourglass-start", 62033);
|
|
||||||
dict.Add("fa fa-i-cursor", 62022);
|
|
||||||
dict.Add("fa fa-image", 61502);
|
|
||||||
dict.Add("fa fa-inbox", 61468);
|
|
||||||
dict.Add("fa fa-industry", 62069);
|
|
||||||
dict.Add("fa fa-info", 61737);
|
|
||||||
dict.Add("fa fa-info-circle", 61530);
|
|
||||||
dict.Add("fa fa-institution", 61852);
|
|
||||||
dict.Add("fa fa-key", 61572);
|
|
||||||
dict.Add("fa fa-keyboard-o", 61724);
|
|
||||||
dict.Add("fa fa-language", 61867);
|
|
||||||
dict.Add("fa fa-laptop", 61705);
|
|
||||||
dict.Add("fa fa-leaf", 61548);
|
|
||||||
dict.Add("fa fa-legal", 61667);
|
|
||||||
dict.Add("fa fa-lemon-o", 61588);
|
|
||||||
dict.Add("fa fa-level-down", 61769);
|
|
||||||
dict.Add("fa fa-level-up", 61768);
|
|
||||||
dict.Add("fa fa-life-bouy", 61901);
|
|
||||||
dict.Add("fa fa-life-buoy", 61901);
|
|
||||||
dict.Add("fa fa-life-ring", 61901);
|
|
||||||
dict.Add("fa fa-life-saver", 61901);
|
|
||||||
dict.Add("fa fa-lightbulb-o", 61675);
|
|
||||||
dict.Add("fa fa-line-chart", 61953);
|
|
||||||
dict.Add("fa fa-location-arrow", 61732);
|
|
||||||
dict.Add("fa fa-lock", 61475);
|
|
||||||
dict.Add("fa fa-magic", 61648);
|
|
||||||
dict.Add("fa fa-magnet", 61558);
|
|
||||||
dict.Add("fa fa-mail-forward", 61540);
|
|
||||||
dict.Add("fa fa-mail-reply", 61714);
|
|
||||||
dict.Add("fa fa-mail-reply-all", 61730);
|
|
||||||
dict.Add("fa fa-male", 61827);
|
|
||||||
dict.Add("fa fa-map", 62073);
|
|
||||||
dict.Add("fa fa-map-marker", 61505);
|
|
||||||
dict.Add("fa fa-map-o", 62072);
|
|
||||||
dict.Add("fa fa-map-pin", 62070);
|
|
||||||
dict.Add("fa fa-map-signs", 62071);
|
|
||||||
dict.Add("fa fa-meh-o", 61722);
|
|
||||||
dict.Add("fa fa-microphone", 61744);
|
|
||||||
dict.Add("fa fa-microphone-slash", 61745);
|
|
||||||
dict.Add("fa fa-minus", 61544);
|
|
||||||
dict.Add("fa fa-minus-circle", 61526);
|
|
||||||
dict.Add("fa fa-minus-square", 61766);
|
|
||||||
dict.Add("fa fa-minus-square-o", 61767);
|
|
||||||
dict.Add("fa fa-mobile", 61707);
|
|
||||||
dict.Add("fa fa-mobile-phone", 61707);
|
|
||||||
dict.Add("fa fa-money", 61654);
|
|
||||||
dict.Add("fa fa-moon-o", 61830);
|
|
||||||
dict.Add("fa fa-mortar-board", 61853);
|
|
||||||
dict.Add("fa fa-motorcycle", 61980);
|
|
||||||
dict.Add("fa fa-mouse-pointer", 62021);
|
|
||||||
dict.Add("fa fa-music", 61441);
|
|
||||||
dict.Add("fa fa-navicon", 61641);
|
|
||||||
dict.Add("fa fa-newspaper-o", 61930);
|
|
||||||
dict.Add("fa fa-object-group", 62023);
|
|
||||||
dict.Add("fa fa-object-ungroup", 62024);
|
|
||||||
dict.Add("fa fa-paint-brush", 61948);
|
|
||||||
dict.Add("fa fa-paper-plane", 61912);
|
|
||||||
dict.Add("fa fa-paper-plane-o", 61913);
|
|
||||||
dict.Add("fa fa-paw", 61872);
|
|
||||||
dict.Add("fa fa-pencil", 61504);
|
|
||||||
dict.Add("fa fa-pencil-square", 61771);
|
|
||||||
dict.Add("fa fa-pencil-square-o", 61508);
|
|
||||||
dict.Add("fa fa-phone", 61589);
|
|
||||||
dict.Add("fa fa-phone-square", 61592);
|
|
||||||
dict.Add("fa fa-photo", 61502);
|
|
||||||
dict.Add("fa fa-picture-o", 61502);
|
|
||||||
dict.Add("fa fa-pie-chart", 61952);
|
|
||||||
dict.Add("fa fa-plane", 61554);
|
|
||||||
dict.Add("fa fa-plug", 61926);
|
|
||||||
dict.Add("fa fa-plus", 61543);
|
|
||||||
dict.Add("fa fa-plus-circle", 61525);
|
|
||||||
dict.Add("fa fa-plus-square", 61694);
|
|
||||||
dict.Add("fa fa-plus-square-o", 61846);
|
|
||||||
dict.Add("fa fa-power-off", 61457);
|
|
||||||
dict.Add("fa fa-print", 61487);
|
|
||||||
dict.Add("fa fa-puzzle-piece", 61742);
|
|
||||||
dict.Add("fa fa-qrcode", 61481);
|
|
||||||
dict.Add("fa fa-question", 61736);
|
|
||||||
dict.Add("fa fa-question-circle", 61529);
|
|
||||||
dict.Add("fa fa-quote-left", 61709);
|
|
||||||
dict.Add("fa fa-quote-right", 61710);
|
|
||||||
dict.Add("fa fa-random", 61556);
|
|
||||||
dict.Add("fa fa-recycle", 61880);
|
|
||||||
dict.Add("fa fa-refresh", 61473);
|
|
||||||
dict.Add("fa fa-registered", 62045);
|
|
||||||
dict.Add("fa fa-remove", 61453);
|
|
||||||
dict.Add("fa fa-reorder", 61641);
|
|
||||||
dict.Add("fa fa-reply", 61714);
|
|
||||||
dict.Add("fa fa-reply-all", 61730);
|
|
||||||
dict.Add("fa fa-retweet", 61561);
|
|
||||||
dict.Add("fa fa-road", 61464);
|
|
||||||
dict.Add("fa fa-rocket", 61749);
|
|
||||||
dict.Add("fa fa-rss", 61598);
|
|
||||||
dict.Add("fa fa-rss-square", 61763);
|
|
||||||
dict.Add("fa fa-search", 61442);
|
|
||||||
dict.Add("fa fa-search-minus", 61456);
|
|
||||||
dict.Add("fa fa-search-plus", 61454);
|
|
||||||
dict.Add("fa fa-send", 61912);
|
|
||||||
dict.Add("fa fa-send-o", 61913);
|
|
||||||
dict.Add("fa fa-server", 62003);
|
|
||||||
dict.Add("fa fa-share", 61540);
|
|
||||||
dict.Add("fa fa-share-alt", 61920);
|
|
||||||
dict.Add("fa fa-share-alt-square", 61921);
|
|
||||||
dict.Add("fa fa-share-square", 61773);
|
|
||||||
dict.Add("fa fa-share-square-o", 61509);
|
|
||||||
dict.Add("fa fa-shield", 61746);
|
|
||||||
dict.Add("fa fa-ship", 61978);
|
|
||||||
dict.Add("fa fa-shopping-cart", 61562);
|
|
||||||
dict.Add("fa fa-sign-in", 61584);
|
|
||||||
dict.Add("fa fa-sign-out", 61579);
|
|
||||||
dict.Add("fa fa-signal", 61458);
|
|
||||||
dict.Add("fa fa-sitemap", 61672);
|
|
||||||
dict.Add("fa fa-sliders", 61918);
|
|
||||||
dict.Add("fa fa-smile-o", 61720);
|
|
||||||
dict.Add("fa fa-soccer-ball-o", 61923);
|
|
||||||
dict.Add("fa fa-sort", 61660);
|
|
||||||
dict.Add("fa fa-sort-alpha-asc", 61789);
|
|
||||||
dict.Add("fa fa-sort-alpha-desc", 61790);
|
|
||||||
dict.Add("fa fa-sort-amount-asc", 61792);
|
|
||||||
dict.Add("fa fa-sort-amount-desc", 61793);
|
|
||||||
dict.Add("fa fa-sort-asc", 61662);
|
|
||||||
dict.Add("fa fa-sort-desc", 61661);
|
|
||||||
dict.Add("fa fa-sort-down", 61661);
|
|
||||||
dict.Add("fa fa-sort-numeric-asc", 61794);
|
|
||||||
dict.Add("fa fa-sort-numeric-desc", 61795);
|
|
||||||
dict.Add("fa fa-sort-up", 61662);
|
|
||||||
dict.Add("fa fa-space-shuttle", 61847);
|
|
||||||
dict.Add("fa fa-spoon", 61873);
|
|
||||||
dict.Add("fa fa-square", 61640);
|
|
||||||
dict.Add("fa fa-square-o", 61590);
|
|
||||||
dict.Add("fa fa-star", 61445);
|
|
||||||
dict.Add("fa fa-star-half", 61577);
|
|
||||||
dict.Add("fa fa-star-half-empty", 61731);
|
|
||||||
dict.Add("fa fa-star-half-full", 61731);
|
|
||||||
dict.Add("fa fa-star-half-o", 61731);
|
|
||||||
dict.Add("fa fa-star-o", 61446);
|
|
||||||
dict.Add("fa fa-sticky-note", 62025);
|
|
||||||
dict.Add("fa fa-sticky-note-o", 62026);
|
|
||||||
dict.Add("fa fa-street-view", 61981);
|
|
||||||
dict.Add("fa fa-suitcase", 61682);
|
|
||||||
dict.Add("fa fa-sun-o", 61829);
|
|
||||||
dict.Add("fa fa-support", 61901);
|
|
||||||
dict.Add("fa fa-tablet", 61706);
|
|
||||||
dict.Add("fa fa-tachometer", 61668);
|
|
||||||
dict.Add("fa fa-tag", 61483);
|
|
||||||
dict.Add("fa fa-tags", 61484);
|
|
||||||
dict.Add("fa fa-tasks", 61614);
|
|
||||||
dict.Add("fa fa-taxi", 61882);
|
|
||||||
dict.Add("fa fa-television", 62060);
|
|
||||||
dict.Add("fa fa-terminal", 61728);
|
|
||||||
dict.Add("fa fa-thumb-tack", 61581);
|
|
||||||
dict.Add("fa fa-thumbs-down", 61797);
|
|
||||||
dict.Add("fa fa-thumbs-o-down", 61576);
|
|
||||||
dict.Add("fa fa-thumbs-o-up", 61575);
|
|
||||||
dict.Add("fa fa-thumbs-up", 61796);
|
|
||||||
dict.Add("fa fa-ticket", 61765);
|
|
||||||
dict.Add("fa fa-times", 61453);
|
|
||||||
dict.Add("fa fa-times-circle", 61527);
|
|
||||||
dict.Add("fa fa-times-circle-o", 61532);
|
|
||||||
dict.Add("fa fa-tint", 61507);
|
|
||||||
dict.Add("fa fa-toggle-down", 61776);
|
|
||||||
dict.Add("fa fa-toggle-left", 61841);
|
|
||||||
dict.Add("fa fa-toggle-off", 61956);
|
|
||||||
dict.Add("fa fa-toggle-on", 61957);
|
|
||||||
dict.Add("fa fa-toggle-right", 61778);
|
|
||||||
dict.Add("fa fa-toggle-up", 61777);
|
|
||||||
dict.Add("fa fa-trademark", 62044);
|
|
||||||
dict.Add("fa fa-trash", 61944);
|
|
||||||
dict.Add("fa fa-trash-o", 61460);
|
|
||||||
dict.Add("fa fa-tree", 61883);
|
|
||||||
dict.Add("fa fa-trophy", 61585);
|
|
||||||
dict.Add("fa fa-truck", 61649);
|
|
||||||
dict.Add("fa fa-tty", 61924);
|
|
||||||
dict.Add("fa fa-tv", 62060);
|
|
||||||
dict.Add("fa fa-umbrella", 61673);
|
|
||||||
dict.Add("fa fa-university", 61852);
|
|
||||||
dict.Add("fa fa-unlock", 61596);
|
|
||||||
dict.Add("fa fa-unlock-alt", 61758);
|
|
||||||
dict.Add("fa fa-unsorted", 61660);
|
|
||||||
dict.Add("fa fa-upload", 61587);
|
|
||||||
dict.Add("fa fa-user", 61447);
|
|
||||||
dict.Add("fa fa-user-plus", 62004);
|
|
||||||
dict.Add("fa fa-user-secret", 61979);
|
|
||||||
dict.Add("fa fa-user-times", 62005);
|
|
||||||
dict.Add("fa fa-users", 61632);
|
|
||||||
dict.Add("fa fa-video-camera", 61501);
|
|
||||||
dict.Add("fa fa-volume-down", 61479);
|
|
||||||
dict.Add("fa fa-volume-off", 61478);
|
|
||||||
dict.Add("fa fa-volume-up", 61480);
|
|
||||||
dict.Add("fa fa-warning", 61553);
|
|
||||||
dict.Add("fa fa-wheelchair", 61843);
|
|
||||||
dict.Add("fa fa-wifi", 61931);
|
|
||||||
dict.Add("fa fa-wrench", 61613);
|
|
||||||
dict.Add("fa fa-hand-o-down", 61607);
|
|
||||||
dict.Add("fa fa-hand-o-left", 61605);
|
|
||||||
dict.Add("fa fa-hand-o-right", 61604);
|
|
||||||
dict.Add("fa fa-hand-o-up", 61606);
|
|
||||||
dict.Add("fa fa-ambulance", 61689);
|
|
||||||
dict.Add("fa fa-subway", 62009);
|
|
||||||
dict.Add("fa fa-train", 62008);
|
|
||||||
dict.Add("fa fa-genderless", 61997);
|
|
||||||
dict.Add("fa fa-intersex", 61988);
|
|
||||||
dict.Add("fa fa-mars", 61986);
|
|
||||||
dict.Add("fa fa-mars-double", 61991);
|
|
||||||
dict.Add("fa fa-mars-stroke", 61993);
|
|
||||||
dict.Add("fa fa-mars-stroke-h", 61995);
|
|
||||||
dict.Add("fa fa-mars-stroke-v", 61994);
|
|
||||||
dict.Add("fa fa-mercury", 61987);
|
|
||||||
dict.Add("fa fa-neuter", 61996);
|
|
||||||
dict.Add("fa fa-transgender", 61988);
|
|
||||||
dict.Add("fa fa-transgender-alt", 61989);
|
|
||||||
dict.Add("fa fa-venus", 61985);
|
|
||||||
dict.Add("fa fa-venus-double", 61990);
|
|
||||||
dict.Add("fa fa-venus-mars", 61992);
|
|
||||||
dict.Add("fa fa-file", 61787);
|
|
||||||
dict.Add("fa fa-file-o", 61462);
|
|
||||||
dict.Add("fa fa-file-text", 61788);
|
|
||||||
dict.Add("fa fa-file-text-o", 61686);
|
|
||||||
dict.Add("fa fa-cc-amex", 61939);
|
|
||||||
dict.Add("fa fa-cc-diners-club", 62028);
|
|
||||||
dict.Add("fa fa-cc-discover", 61938);
|
|
||||||
dict.Add("fa fa-cc-jcb", 62027);
|
|
||||||
dict.Add("fa fa-cc-mastercard", 61937);
|
|
||||||
dict.Add("fa fa-cc-paypal", 61940);
|
|
||||||
dict.Add("fa fa-cc-stripe", 61941);
|
|
||||||
dict.Add("fa fa-cc-visa", 61936);
|
|
||||||
dict.Add("fa fa-google-wallet", 61934);
|
|
||||||
dict.Add("fa fa-paypal", 61933);
|
|
||||||
dict.Add("fa fa-bitcoin", 61786);
|
|
||||||
dict.Add("fa fa-btc", 61786);
|
|
||||||
dict.Add("fa fa-cny", 61783);
|
|
||||||
dict.Add("fa fa-dollar", 61781);
|
|
||||||
dict.Add("fa fa-eur", 61779);
|
|
||||||
dict.Add("fa fa-euro", 61779);
|
|
||||||
dict.Add("fa fa-gbp", 61780);
|
|
||||||
dict.Add("fa fa-gg", 62048);
|
|
||||||
dict.Add("fa fa-gg-circle", 62049);
|
|
||||||
dict.Add("fa fa-ils", 61963);
|
|
||||||
dict.Add("fa fa-inr", 61782);
|
|
||||||
dict.Add("fa fa-jpy", 61783);
|
|
||||||
dict.Add("fa fa-krw", 61785);
|
|
||||||
dict.Add("fa fa-rmb", 61783);
|
|
||||||
dict.Add("fa fa-rouble", 61784);
|
|
||||||
dict.Add("fa fa-rub", 61784);
|
|
||||||
dict.Add("fa fa-ruble", 61784);
|
|
||||||
dict.Add("fa fa-rupee", 61782);
|
|
||||||
dict.Add("fa fa-shekel", 61963);
|
|
||||||
dict.Add("fa fa-sheqel", 61963);
|
|
||||||
dict.Add("fa fa-try", 61845);
|
|
||||||
dict.Add("fa fa-turkish-lira", 61845);
|
|
||||||
dict.Add("fa fa-usd", 61781);
|
|
||||||
dict.Add("fa fa-won", 61785);
|
|
||||||
dict.Add("fa fa-yen", 61783);
|
|
||||||
dict.Add("fa fa-align-center", 61495);
|
|
||||||
dict.Add("fa fa-align-justify", 61497);
|
|
||||||
dict.Add("fa fa-align-left", 61494);
|
|
||||||
dict.Add("fa fa-align-right", 61496);
|
|
||||||
dict.Add("fa fa-bold", 61490);
|
|
||||||
dict.Add("fa fa-chain", 61633);
|
|
||||||
dict.Add("fa fa-chain-broken", 61735);
|
|
||||||
dict.Add("fa fa-clipboard", 61674);
|
|
||||||
dict.Add("fa fa-columns", 61659);
|
|
||||||
dict.Add("fa fa-copy", 61637);
|
|
||||||
dict.Add("fa fa-cut", 61636);
|
|
||||||
dict.Add("fa fa-dedent", 61499);
|
|
||||||
dict.Add("fa fa-files-o", 61637);
|
|
||||||
dict.Add("fa fa-floppy-o", 61639);
|
|
||||||
dict.Add("fa fa-font", 61489);
|
|
||||||
dict.Add("fa fa-header", 61916);
|
|
||||||
dict.Add("fa fa-indent", 61500);
|
|
||||||
dict.Add("fa fa-italic", 61491);
|
|
||||||
dict.Add("fa fa-link", 61633);
|
|
||||||
dict.Add("fa fa-list", 61498);
|
|
||||||
dict.Add("fa fa-list-alt", 61474);
|
|
||||||
dict.Add("fa fa-list-ol", 61643);
|
|
||||||
dict.Add("fa fa-list-ul", 61642);
|
|
||||||
dict.Add("fa fa-outdent", 61499);
|
|
||||||
dict.Add("fa fa-paperclip", 61638);
|
|
||||||
dict.Add("fa fa-paragraph", 61917);
|
|
||||||
dict.Add("fa fa-paste", 61674);
|
|
||||||
dict.Add("fa fa-repeat", 61470);
|
|
||||||
dict.Add("fa fa-rotate-left", 61666);
|
|
||||||
dict.Add("fa fa-rotate-right", 61470);
|
|
||||||
dict.Add("fa fa-save", 61639);
|
|
||||||
dict.Add("fa fa-scissors", 61636);
|
|
||||||
dict.Add("fa fa-strikethrough", 61644);
|
|
||||||
dict.Add("fa fa-subscript", 61740);
|
|
||||||
dict.Add("fa fa-superscript", 61739);
|
|
||||||
dict.Add("fa fa-table", 61646);
|
|
||||||
dict.Add("fa fa-text-height", 61492);
|
|
||||||
dict.Add("fa fa-text-width", 61493);
|
|
||||||
dict.Add("fa fa-th", 61450);
|
|
||||||
dict.Add("fa fa-th-large", 61449);
|
|
||||||
dict.Add("fa fa-th-list", 61451);
|
|
||||||
dict.Add("fa fa-underline", 61645);
|
|
||||||
dict.Add("fa fa-undo", 61666);
|
|
||||||
dict.Add("fa fa-unlink", 61735);
|
|
||||||
dict.Add("fa fa-angle-double-down", 61699);
|
|
||||||
dict.Add("fa fa-angle-double-left", 61696);
|
|
||||||
dict.Add("fa fa-angle-double-right", 61697);
|
|
||||||
dict.Add("fa fa-angle-double-up", 61698);
|
|
||||||
dict.Add("fa fa-angle-down", 61703);
|
|
||||||
dict.Add("fa fa-angle-left", 61700);
|
|
||||||
dict.Add("fa fa-angle-right", 61701);
|
|
||||||
dict.Add("fa fa-angle-up", 61702);
|
|
||||||
dict.Add("fa fa-arrow-circle-down", 61611);
|
|
||||||
dict.Add("fa fa-arrow-circle-left", 61608);
|
|
||||||
dict.Add("fa fa-arrow-circle-o-down", 61466);
|
|
||||||
dict.Add("fa fa-arrow-circle-o-left", 61840);
|
|
||||||
dict.Add("fa fa-arrow-circle-o-right", 61838);
|
|
||||||
dict.Add("fa fa-arrow-circle-o-up", 61467);
|
|
||||||
dict.Add("fa fa-arrow-circle-right", 61609);
|
|
||||||
dict.Add("fa fa-arrow-circle-up", 61610);
|
|
||||||
dict.Add("fa fa-arrow-down", 61539);
|
|
||||||
dict.Add("fa fa-arrow-left", 61536);
|
|
||||||
dict.Add("fa fa-arrow-right", 61537);
|
|
||||||
dict.Add("fa fa-arrow-up", 61538);
|
|
||||||
dict.Add("fa fa-arrows-alt", 61618);
|
|
||||||
dict.Add("fa fa-caret-down", 61655);
|
|
||||||
dict.Add("fa fa-caret-left", 61657);
|
|
||||||
dict.Add("fa fa-caret-right", 61658);
|
|
||||||
dict.Add("fa fa-caret-up", 61656);
|
|
||||||
dict.Add("fa fa-chevron-circle-down", 61754);
|
|
||||||
dict.Add("fa fa-chevron-circle-left", 61751);
|
|
||||||
dict.Add("fa fa-chevron-circle-right", 61752);
|
|
||||||
dict.Add("fa fa-chevron-circle-up", 61753);
|
|
||||||
dict.Add("fa fa-chevron-down", 61560);
|
|
||||||
dict.Add("fa fa-chevron-left", 61523);
|
|
||||||
dict.Add("fa fa-chevron-right", 61524);
|
|
||||||
dict.Add("fa fa-chevron-up", 61559);
|
|
||||||
dict.Add("fa fa-long-arrow-down", 61813);
|
|
||||||
dict.Add("fa fa-long-arrow-left", 61815);
|
|
||||||
dict.Add("fa fa-long-arrow-right", 61816);
|
|
||||||
dict.Add("fa fa-long-arrow-up", 61814);
|
|
||||||
dict.Add("fa fa-backward", 61514);
|
|
||||||
dict.Add("fa fa-compress", 61542);
|
|
||||||
dict.Add("fa fa-eject", 61522);
|
|
||||||
dict.Add("fa fa-expand", 61541);
|
|
||||||
dict.Add("fa fa-fast-backward", 61513);
|
|
||||||
dict.Add("fa fa-fast-forward", 61520);
|
|
||||||
dict.Add("fa fa-forward", 61518);
|
|
||||||
dict.Add("fa fa-pause", 61516);
|
|
||||||
dict.Add("fa fa-play", 61515);
|
|
||||||
dict.Add("fa fa-play-circle", 61764);
|
|
||||||
dict.Add("fa fa-play-circle-o", 61469);
|
|
||||||
dict.Add("fa fa-step-backward", 61512);
|
|
||||||
dict.Add("fa fa-step-forward", 61521);
|
|
||||||
dict.Add("fa fa-stop", 61517);
|
|
||||||
dict.Add("fa fa-youtube-play", 61802);
|
|
||||||
dict.Add("fa fa-500px", 62062);
|
|
||||||
dict.Add("fa fa-adn", 61808);
|
|
||||||
dict.Add("fa fa-amazon", 62064);
|
|
||||||
dict.Add("fa fa-android", 61819);
|
|
||||||
dict.Add("fa fa-angellist", 61961);
|
|
||||||
dict.Add("fa fa-apple", 61817);
|
|
||||||
dict.Add("fa fa-behance", 61876);
|
|
||||||
dict.Add("fa fa-behance-square", 61877);
|
|
||||||
dict.Add("fa fa-bitbucket", 61809);
|
|
||||||
dict.Add("fa fa-bitbucket-square", 61810);
|
|
||||||
dict.Add("fa fa-black-tie", 62078);
|
|
||||||
dict.Add("fa fa-buysellads", 61965);
|
|
||||||
dict.Add("fa fa-chrome", 62056);
|
|
||||||
dict.Add("fa fa-codepen", 61899);
|
|
||||||
dict.Add("fa fa-connectdevelop", 61966);
|
|
||||||
dict.Add("fa fa-contao", 62061);
|
|
||||||
dict.Add("fa fa-css3", 61756);
|
|
||||||
dict.Add("fa fa-dashcube", 61968);
|
|
||||||
dict.Add("fa fa-delicious", 61861);
|
|
||||||
dict.Add("fa fa-deviantart", 61885);
|
|
||||||
dict.Add("fa fa-digg", 61862);
|
|
||||||
dict.Add("fa fa-dribbble", 61821);
|
|
||||||
dict.Add("fa fa-dropbox", 61803);
|
|
||||||
dict.Add("fa fa-drupal", 61865);
|
|
||||||
dict.Add("fa fa-empire", 61905);
|
|
||||||
dict.Add("fa fa-expeditedssl", 62014);
|
|
||||||
dict.Add("fa fa-facebook", 61594);
|
|
||||||
dict.Add("fa fa-facebook-f", 61594);
|
|
||||||
dict.Add("fa fa-facebook-official", 62000);
|
|
||||||
dict.Add("fa fa-facebook-square", 61570);
|
|
||||||
dict.Add("fa fa-firefox", 62057);
|
|
||||||
dict.Add("fa fa-flickr", 61806);
|
|
||||||
dict.Add("fa fa-fonticons", 62080);
|
|
||||||
dict.Add("fa fa-forumbee", 61969);
|
|
||||||
dict.Add("fa fa-foursquare", 61824);
|
|
||||||
dict.Add("fa fa-ge", 61905);
|
|
||||||
dict.Add("fa fa-get-pocket", 62053);
|
|
||||||
dict.Add("fa fa-git", 61907);
|
|
||||||
dict.Add("fa fa-git-square", 61906);
|
|
||||||
dict.Add("fa fa-github", 61595);
|
|
||||||
dict.Add("fa fa-github-alt", 61715);
|
|
||||||
dict.Add("fa fa-github-square", 61586);
|
|
||||||
dict.Add("fa fa-gittip", 61828);
|
|
||||||
dict.Add("fa fa-google", 61856);
|
|
||||||
dict.Add("fa fa-google-plus", 61653);
|
|
||||||
dict.Add("fa fa-google-plus-square", 61652);
|
|
||||||
dict.Add("fa fa-gratipay", 61828);
|
|
||||||
dict.Add("fa fa-hacker-news", 61908);
|
|
||||||
dict.Add("fa fa-houzz", 62076);
|
|
||||||
dict.Add("fa fa-html5", 61755);
|
|
||||||
dict.Add("fa fa-instagram", 61805);
|
|
||||||
dict.Add("fa fa-internet-explorer", 62059);
|
|
||||||
dict.Add("fa fa-ioxhost", 61960);
|
|
||||||
dict.Add("fa fa-joomla", 61866);
|
|
||||||
dict.Add("fa fa-jsfiddle", 61900);
|
|
||||||
dict.Add("fa fa-lastfm", 61954);
|
|
||||||
dict.Add("fa fa-lastfm-square", 61955);
|
|
||||||
dict.Add("fa fa-leanpub", 61970);
|
|
||||||
dict.Add("fa fa-linkedin", 61665);
|
|
||||||
dict.Add("fa fa-linkedin-square", 61580);
|
|
||||||
dict.Add("fa fa-linux", 61820);
|
|
||||||
dict.Add("fa fa-maxcdn", 61750);
|
|
||||||
dict.Add("fa fa-meanpath", 61964);
|
|
||||||
dict.Add("fa fa-medium", 62010);
|
|
||||||
dict.Add("fa fa-odnoklassniki", 62051);
|
|
||||||
dict.Add("fa fa-odnoklassniki-square", 62052);
|
|
||||||
dict.Add("fa fa-opencart", 62013);
|
|
||||||
dict.Add("fa fa-openid", 61851);
|
|
||||||
dict.Add("fa fa-opera", 62058);
|
|
||||||
dict.Add("fa fa-optin-monster", 62012);
|
|
||||||
dict.Add("fa fa-pagelines", 61836);
|
|
||||||
dict.Add("fa fa-pied-piper", 62126);
|
|
||||||
dict.Add("fa fa-pied-piper-alt", 61864);
|
|
||||||
dict.Add("fa fa-pinterest", 61650);
|
|
||||||
dict.Add("fa fa-pinterest-p", 62001);
|
|
||||||
dict.Add("fa fa-pinterest-square", 61651);
|
|
||||||
dict.Add("fa fa-qq", 61910);
|
|
||||||
dict.Add("fa fa-ra", 61904);
|
|
||||||
dict.Add("fa fa-rebel", 61904);
|
|
||||||
dict.Add("fa fa-reddit", 61857);
|
|
||||||
dict.Add("fa fa-reddit-square", 61858);
|
|
||||||
dict.Add("fa fa-renren", 61835);
|
|
||||||
dict.Add("fa fa-safari", 62055);
|
|
||||||
dict.Add("fa fa-sellsy", 61971);
|
|
||||||
dict.Add("fa fa-shirtsinbulk", 61972);
|
|
||||||
dict.Add("fa fa-simplybuilt", 61973);
|
|
||||||
dict.Add("fa fa-skyatlas", 61974);
|
|
||||||
dict.Add("fa fa-skype", 61822);
|
|
||||||
dict.Add("fa fa-slack", 61848);
|
|
||||||
dict.Add("fa fa-slideshare", 61927);
|
|
||||||
dict.Add("fa fa-soundcloud", 61886);
|
|
||||||
dict.Add("fa fa-spotify", 61884);
|
|
||||||
dict.Add("fa fa-stack-exchange", 61837);
|
|
||||||
dict.Add("fa fa-stack-overflow", 61804);
|
|
||||||
dict.Add("fa fa-steam", 61878);
|
|
||||||
dict.Add("fa fa-steam-square", 61879);
|
|
||||||
dict.Add("fa fa-stumbleupon", 61860);
|
|
||||||
dict.Add("fa fa-stumbleupon-circle", 61859);
|
|
||||||
dict.Add("fa fa-tencent-weibo", 61909);
|
|
||||||
dict.Add("fa fa-trello", 61825);
|
|
||||||
dict.Add("fa fa-tripadvisor", 62050);
|
|
||||||
dict.Add("fa fa-tumblr", 61811);
|
|
||||||
dict.Add("fa fa-tumblr-square", 61812);
|
|
||||||
dict.Add("fa fa-twitch", 61928);
|
|
||||||
dict.Add("fa fa-twitter", 61593);
|
|
||||||
dict.Add("fa fa-twitter-square", 61569);
|
|
||||||
dict.Add("fa fa-viacoin", 62007);
|
|
||||||
dict.Add("fa fa-vimeo", 62077);
|
|
||||||
dict.Add("fa fa-vimeo-square", 61844);
|
|
||||||
dict.Add("fa fa-vine", 61898);
|
|
||||||
dict.Add("fa fa-vk", 61833);
|
|
||||||
dict.Add("fa fa-wechat", 61911);
|
|
||||||
dict.Add("fa fa-weibo", 61834);
|
|
||||||
dict.Add("fa fa-weixin", 61911);
|
|
||||||
dict.Add("fa fa-whatsapp", 62002);
|
|
||||||
dict.Add("fa fa-wikipedia-w", 62054);
|
|
||||||
dict.Add("fa fa-windows", 61818);
|
|
||||||
dict.Add("fa fa-wordpress", 61850);
|
|
||||||
dict.Add("fa fa-xing", 61800);
|
|
||||||
dict.Add("fa fa-xing-square", 61801);
|
|
||||||
dict.Add("fa fa-y-combinator", 62011);
|
|
||||||
dict.Add("fa fa-y-combinator-square", 61908);
|
|
||||||
dict.Add("fa fa-yahoo", 61854);
|
|
||||||
dict.Add("fa fa-yc", 62011);
|
|
||||||
dict.Add("fa fa-yc-square", 61908);
|
|
||||||
dict.Add("fa fa-yelp", 61929);
|
|
||||||
dict.Add("fa fa-youtube", 61799);
|
|
||||||
dict.Add("fa fa-youtube-square", 61798);
|
|
||||||
dict.Add("fa fa-h-square", 61693);
|
|
||||||
dict.Add("fa fa-hospital-o", 61688);
|
|
||||||
dict.Add("fa fa-medkit", 61690);
|
|
||||||
dict.Add("fa fa-stethoscope", 61681);
|
|
||||||
dict.Add("fa fa-user-md", 61680);
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Common
|
|
||||||
{
|
|
||||||
public class MyConfig
|
|
||||||
{
|
|
||||||
public int EveryPageDataCount { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 数据库类型
|
|
||||||
/// </summary>
|
|
||||||
public string DbType { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 数据库主机IP
|
|
||||||
/// </summary>
|
|
||||||
public string DbHost { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 数据库名
|
|
||||||
/// </summary>
|
|
||||||
public string DbName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 数据库用户名
|
|
||||||
/// </summary>
|
|
||||||
public string DbUserName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 数据库密码
|
|
||||||
/// </summary>
|
|
||||||
public string DbPassword { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
private bool _debug = false;
|
|
||||||
/// <summary>
|
|
||||||
/// 是否调试模式,调试模式将会输出日志
|
|
||||||
/// </summary>
|
|
||||||
public bool Debug { get { return _debug; } set { _debug = value; } }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net8.0-windows</TargetFramework>
|
|
||||||
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
<BaseOutputPath>..\</BaseOutputPath>
|
|
||||||
<AppendTargetFrameworkToOutputPath>output</AppendTargetFrameworkToOutputPath>
|
|
||||||
<UseWindowsForms>true</UseWindowsForms>
|
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="AccountForm.cs" />
|
|
||||||
<Compile Include="AccountForm.Designer.cs" />
|
|
||||||
<Compile Include="Common\GlobalConfig.cs" />
|
|
||||||
<Compile Include="Common\IconDict.cs" />
|
|
||||||
<Compile Include="Common\MyConfig.cs" />
|
|
||||||
<Compile Include="Logic\BaseLogic.cs" />
|
|
||||||
<Compile Include="Logic\Logger.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysItemLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysItemsDetailLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysLogLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysOrganizeLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysPermissionLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysRoleAuthorizeLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysRoleLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysUserLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysUserLogOnLogic.cs" />
|
|
||||||
<Compile Include="Logic\Sys\SysUserRoleRelationLogic.cs" />
|
|
||||||
<Compile Include="Models\Base\BaseModelEntity.cs" />
|
|
||||||
<Compile Include="Models\Base\CodeGenerator.cs" />
|
|
||||||
<Compile Include="Models\Base\MenuControlAttribute.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\AuthorParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\FileUploadParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\ItemDetailIndexParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\KeyValue.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\LogDeleteParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\LogIndexParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\LongPrimaryKeyParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\ModifyPasswordParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\RoleDeleteParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\SearchParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\StrPrimaryKeyParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\UserDeleteParms.cs" />
|
|
||||||
<Compile Include="Models\DTO\Parms\UserLoginParms.cs" />
|
|
||||||
<Compile Include="Models\Enum\ModuleType.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysItem.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysItemDetail.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysLog.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysOrganize.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysPermission.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysRole.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysRoleAuthorize.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysUser.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysUserLogOn.cs" />
|
|
||||||
<Compile Include="Models\Sys\SysUserRoleRelation.cs" />
|
|
||||||
<Compile Include="Properties\Resources.Designer.cs" />
|
|
||||||
<Compile Include="RBACWindow.cs" />
|
|
||||||
<Compile Include="RBACWindow.Designer.cs" />
|
|
||||||
<Compile Include="UserControls\AccountControl.cs" />
|
|
||||||
<Compile Include="UserControls\AccountControl.Designer.cs" />
|
|
||||||
<Compile Include="UserControls\Menus\UserMenuPanel.cs" />
|
|
||||||
<Compile Include="UserControls\ProgressForm.cs" />
|
|
||||||
<Compile Include="UserControls\ProgressForm.Designer.cs" />
|
|
||||||
<Compile Include="Utility\Extension\ExtMethods.cs" />
|
|
||||||
<Compile Include="Utility\Extension\MyEnvironment.cs" />
|
|
||||||
<Compile Include="Utility\Other\DESHelper.cs" />
|
|
||||||
<Compile Include="Utility\Other\FormHelper.cs" />
|
|
||||||
<Compile Include="Utility\Other\JsonHelper.cs" />
|
|
||||||
<Compile Include="Utility\Other\MD5Helper.cs" />
|
|
||||||
<Compile Include="Utility\Other\PanelScrollHelper.cs" />
|
|
||||||
<Compile Include="Utility\Other\ScreenUtils.cs" />
|
|
||||||
<Compile Include="Utility\Other\SnowFlakeHelper.cs" />
|
|
||||||
<Compile Include="Utility\Other\StringHelper.cs" />
|
|
||||||
<Compile Include="Utility\Other\TreeSelect.cs" />
|
|
||||||
<Compile Include="Utility\Other\UIUtils.cs" />
|
|
||||||
<Compile Include="Utility\Other\UUID.cs" />
|
|
||||||
<Compile Include="Utility\Other\ZTreeNode.cs" />
|
|
||||||
<Compile Include="Utility\PopupTool\GripBounds.cs" />
|
|
||||||
<Compile Include="Utility\PopupTool\Popup.cs" />
|
|
||||||
<Compile Include="Utility\PopupTool\UnsafeMethods.cs" />
|
|
||||||
<Compile Include="Views\DefaultPage.cs" />
|
|
||||||
<Compile Include="Views\DefaultPage.Designer.cs" />
|
|
||||||
<Compile Include="Views\EmptyPage.cs" />
|
|
||||||
<Compile Include="Views\EmptyPage.Designer.cs" />
|
|
||||||
<Compile Include="Views\MyPage.cs" />
|
|
||||||
<Compile Include="Views\Sys\BaseSubForm.cs" />
|
|
||||||
<Compile Include="Views\Sys\BaseSubForm.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\Organize\AddOrganizeForm.cs" />
|
|
||||||
<Compile Include="Views\Sys\Organize\AddOrganizeForm.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\Organize\OrganizePage.cs" />
|
|
||||||
<Compile Include="Views\Sys\Organize\OrganizePage.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\Permission\AddPermissionForm.cs" />
|
|
||||||
<Compile Include="Views\Sys\Permission\AddPermissionForm.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\Permission\IconForm.cs" />
|
|
||||||
<Compile Include="Views\Sys\Permission\IconForm.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\Permission\PermissionPage.cs" />
|
|
||||||
<Compile Include="Views\Sys\Permission\PermissionPage.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\Role\AddRoleForm.cs" />
|
|
||||||
<Compile Include="Views\Sys\Role\AddRoleForm.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\Role\RoleAuthorizeForm.cs" />
|
|
||||||
<Compile Include="Views\Sys\Role\RoleAuthorizeForm.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\Role\RolePage.cs" />
|
|
||||||
<Compile Include="Views\Sys\Role\RolePage.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\User\AddUserForm.cs" />
|
|
||||||
<Compile Include="Views\Sys\User\AddUserForm.Designer.cs" />
|
|
||||||
<Compile Include="Views\Sys\User\UserPage.cs" />
|
|
||||||
<Compile Include="Views\Sys\User\UserPage.Designer.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="favicon.ico" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="AntdUI" Version="1.8.9" />
|
|
||||||
<PackageReference Include="JinianNet.JNTemplate" Version="2.4.2" />
|
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
|
||||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.185" />
|
|
||||||
<PackageReference Include="SunnyUI" Version="3.8.2" />
|
|
||||||
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
|
|
||||||
<PackageReference Include="System.Data.SQLite" Version="1.0.119" />
|
|
||||||
<PackageReference Include="System.Drawing.Common" Version="9.0.3" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 自动生成 -->
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Update="Page\DefaultPage.cs" />
|
|
||||||
<Compile Update="Properties\Resources.Designer.cs">
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Update="Properties\Resources.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<ProjectExtensions>
|
|
||||||
<VisualStudio>
|
|
||||||
<UserProperties configs_4config_1json__JsonSchema="" />
|
|
||||||
</VisualStudio>
|
|
||||||
</ProjectExtensions>
|
|
||||||
</Project>
|
|
||||||
@@ -1,303 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
using System.Data;
|
|
||||||
|
|
||||||
using DH.RBAC.Model.Base;
|
|
||||||
using JinianNet.JNTemplate;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
using DH.RBAC.Utility.Extension;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Base
|
|
||||||
{
|
|
||||||
public class BaseLogic
|
|
||||||
{
|
|
||||||
private static string ConnectionString;
|
|
||||||
private static SqlSugar.DbType DbType;
|
|
||||||
private static string DbName;
|
|
||||||
private static bool DebugMode;
|
|
||||||
|
|
||||||
public static bool InitDB(string dbType, string host, string dbName, string userName, string pasword, ref string message, bool debug = false)
|
|
||||||
{
|
|
||||||
DebugMode = debug;
|
|
||||||
DbName = dbName;
|
|
||||||
if (dbType.ToLower() == "SqlServer".ToLower())
|
|
||||||
{
|
|
||||||
DbType = SqlSugar.DbType.SqlServer;
|
|
||||||
ConnectionString = $"Data Source={host};Initial Catalog={dbName};User ID={userName};Password={pasword};";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (dbType.ToLower() == "MySql".ToLower())
|
|
||||||
{
|
|
||||||
DbType = SqlSugar.DbType.MySql;
|
|
||||||
ConnectionString = $"server={host};Database={dbName};Uid={userName};Pwd={pasword};";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (dbType.ToLower() == "Oracle".ToLower())
|
|
||||||
{
|
|
||||||
DbType = SqlSugar.DbType.Oracle;
|
|
||||||
ConnectionString = $"Data Source={host}/{dbName};User ID={userName};Password={pasword};";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (dbType.ToLower() == "PostgreSql".ToLower())
|
|
||||||
{
|
|
||||||
DbType = SqlSugar.DbType.PostgreSQL;
|
|
||||||
ConnectionString = $"Server={host};Port=5432;Database={dbName};User Id={userName};Password={pasword};";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (dbType.ToLower() == "Sqlite".ToLower())
|
|
||||||
{
|
|
||||||
DbType = SqlSugar.DbType.Sqlite;
|
|
||||||
|
|
||||||
var template = Engine.CreateTemplate(dbName);
|
|
||||||
template.Set("BaseDirectory", MyEnvironment.RootPath(""));
|
|
||||||
var result = template.Render();
|
|
||||||
|
|
||||||
ConnectionString = $"DataSource={result};";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
message = "不支持的数据库";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SqlSugarClient GetInstance()
|
|
||||||
{
|
|
||||||
#if !NETFRAMEWORK && !WINDOWS
|
|
||||||
SqlSugarScope client = (SqlSugar.SqlSugarScope)Utility.MiddleWare.AutofacContainerModule.GetService<ISqlSugarClient>();
|
|
||||||
if (client != null)
|
|
||||||
return client.ScopedContext;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
|
|
||||||
{
|
|
||||||
ConnectionString = ConnectionString,
|
|
||||||
DbType = DbType,
|
|
||||||
IsAutoCloseConnection = true,
|
|
||||||
ConfigureExternalServices = new ConfigureExternalServices()
|
|
||||||
{
|
|
||||||
SqlFuncServices = ExtMethods.GetExpMethods
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//用来打印Sql方便你调式
|
|
||||||
db.Aop.OnLogExecuting = (sql, pars) =>
|
|
||||||
{
|
|
||||||
if (DebugMode)
|
|
||||||
{
|
|
||||||
Console.WriteLine(sql + "\r\n" +
|
|
||||||
db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
|
|
||||||
Console.WriteLine();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return db;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DataTable GetTableColumnInfo(string tableName)
|
|
||||||
{
|
|
||||||
if (DbType == SqlSugar.DbType.SqlServer)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
StringBuilder strSql = new StringBuilder();
|
|
||||||
strSql.Append(" SELECT ").AppendLine();
|
|
||||||
strSql.Append(" A.Name AS TableName, ").AppendLine();
|
|
||||||
strSql.Append(" B.Name AS ColumnName, ").AppendLine();
|
|
||||||
strSql.Append(" D.Name AS TypeName, ").AppendLine();
|
|
||||||
strSql.Append(" B.Max_Length AS TypeLength, ").AppendLine();
|
|
||||||
strSql.Append(" CASE WHEN ").AppendLine();
|
|
||||||
strSql.Append(" ( ").AppendLine();
|
|
||||||
strSql.Append(" SELECT ").AppendLine();
|
|
||||||
strSql.Append(" F.Name ").AppendLine();
|
|
||||||
strSql.Append(" FROM ").AppendLine();
|
|
||||||
strSql.Append(" information_schema.key_column_usage E,sys.indexes F ").AppendLine();
|
|
||||||
strSql.Append(" WHERE ").AppendLine();
|
|
||||||
strSql.Append(" F.object_id=B.object_id ").AppendLine();
|
|
||||||
strSql.Append(" AND F.name=E.constraint_name ").AppendLine();
|
|
||||||
strSql.Append(" AND F.is_primary_key=1 ").AppendLine();
|
|
||||||
strSql.Append(" AND E.table_name=A.Name ").AppendLine();
|
|
||||||
strSql.Append(" AND E.column_name =B.Name ").AppendLine();
|
|
||||||
strSql.Append(" ) IS NULL THEN 0 ELSE 1 END AS IsPrimaryKey, ").AppendLine();
|
|
||||||
strSql.Append(" '' AS ClassName, ").AppendLine();
|
|
||||||
strSql.Append(" '' AS PropertyName, ").AppendLine();
|
|
||||||
strSql.Append(" '' AS CSType, ").AppendLine();
|
|
||||||
strSql.Append(" C.VALUE AS Other ").AppendLine();
|
|
||||||
strSql.Append(" FROM sys.tables A ").AppendLine();
|
|
||||||
strSql.Append(" LEFT JOIN sys.columns B ").AppendLine();
|
|
||||||
strSql.Append(" ON B.object_id = A.object_id ").AppendLine();
|
|
||||||
strSql.Append(" LEFT JOIN sys.extended_properties C ").AppendLine();
|
|
||||||
strSql.Append(" ON C.major_id = B.object_id AND C.minor_id = B.column_id ").AppendLine();
|
|
||||||
strSql.Append(" LEFT JOIN sys.types D ON D.system_type_id=B.system_type_id ").AppendLine();
|
|
||||||
strSql.Append(" WHERE A.Name = '" + tableName + "' ").AppendLine();
|
|
||||||
DataTable dt = db.Ado.GetDataTable(strSql.ToString());
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (DbType == SqlSugar.DbType.MySql)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
StringBuilder strSql = new StringBuilder();
|
|
||||||
strSql.Append(" SELECT ").AppendLine();
|
|
||||||
strSql.Append(" '" + tableName + "' AS TableName, ").AppendLine();
|
|
||||||
strSql.Append(" COLUMN_NAME AS ColumnName, ").AppendLine();
|
|
||||||
strSql.Append(" DATA_TYPE AS TypeName, ").AppendLine();
|
|
||||||
strSql.Append(" CHARACTER_MAXIMUM_LENGTH AS TypeLength, ").AppendLine();
|
|
||||||
strSql.Append(" case when COLUMN_KEY = 'PRI' THEN 1 ELSE 0 END AS IsPrimaryKey, ").AppendLine();
|
|
||||||
strSql.Append(" '' AS ClassName, ").AppendLine();
|
|
||||||
strSql.Append(" '' PropertyName, ").AppendLine();
|
|
||||||
strSql.Append(" '' CSType , ").AppendLine();
|
|
||||||
strSql.Append(" COLUMN_COMMENT AS Other ").AppendLine();
|
|
||||||
strSql.Append(" FROM ").AppendLine();
|
|
||||||
strSql.Append(" INFORMATION_SCHEMA.COLUMNS ").AppendLine();
|
|
||||||
strSql.Append(" WHERE ").AppendLine();
|
|
||||||
strSql.Append(" table_schema ='" + DbName + "' AND table_name = '" + tableName + "' ").AppendLine();
|
|
||||||
strSql.Append(" ORDER BY ORDINAL_POSITION ").AppendLine();
|
|
||||||
DataTable dt = db.Ado.GetDataTable(strSql.ToString());
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (DbType == SqlSugar.DbType.Sqlite)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
|
|
||||||
string sql = "SELECT * from sqlite_master where type = 'table' AND tbl_name='" + tableName + "'";
|
|
||||||
DataTable dt = db.Ado.GetDataTable(sql);
|
|
||||||
//创建个新的DataTable,把dt中的数据放进去
|
|
||||||
DataTable newDt = new DataTable();
|
|
||||||
newDt.Columns.Add("TableName");
|
|
||||||
newDt.Columns.Add("ColumnName");
|
|
||||||
newDt.Columns.Add("TypeName");
|
|
||||||
newDt.Columns.Add("TypeLength");
|
|
||||||
newDt.Columns.Add("IsPrimaryKey");
|
|
||||||
newDt.Columns.Add("ClassName");
|
|
||||||
newDt.Columns.Add("PropertyName");
|
|
||||||
newDt.Columns.Add("CSType");
|
|
||||||
newDt.Columns.Add("Other");
|
|
||||||
if (dt == null || dt.Rows.Count == 0)
|
|
||||||
return newDt;
|
|
||||||
string sql1 = dt.Rows[0]["sql"].ToString().Replace("\"", "");
|
|
||||||
|
|
||||||
List<CodeGenerator> list = new List<CodeGenerator>();
|
|
||||||
//第一个(
|
|
||||||
int index1 = sql1.IndexOf("(");
|
|
||||||
int index2 = sql1.LastIndexOf(")");
|
|
||||||
string content = sql1.Substring(index1 + 1, index2 - index1 - 1);
|
|
||||||
List<string> array = content.Split('\n').Select(it => it.Trim()).ToList();
|
|
||||||
List<string> primaryKey = new List<string>();
|
|
||||||
foreach (string item in array)
|
|
||||||
{
|
|
||||||
if (item.Trim() == "")
|
|
||||||
continue;
|
|
||||||
if (item.ToUpper().StartsWith("PRIMARY KEY"))
|
|
||||||
{
|
|
||||||
int index3 = item.IndexOf("(");
|
|
||||||
int index4 = item.IndexOf(")");
|
|
||||||
string[] keyArray = item.Substring(index3 + 1, index4 - index3 - 1).Split(',');
|
|
||||||
foreach (string key in keyArray)
|
|
||||||
primaryKey.Add(key.Trim());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
string[] itemText = item.Trim().Split(' ');
|
|
||||||
CodeGenerator codeGenerator = new CodeGenerator();
|
|
||||||
codeGenerator.TableName = tableName;
|
|
||||||
codeGenerator.ColumnName = itemText[0];
|
|
||||||
string type = itemText[1];
|
|
||||||
int index5 = type.IndexOf("(");
|
|
||||||
int index6 = type.IndexOf(")");
|
|
||||||
codeGenerator.TypeName = index5 == -1 ? type : type.Substring(0, index5);
|
|
||||||
codeGenerator.TypeLength = index5 == -1 ? "0" : type.Substring(index5 + 1, index6 - index5 - 1);
|
|
||||||
codeGenerator.IsPrimaryKey = "0";
|
|
||||||
codeGenerator.ClassName = "";
|
|
||||||
codeGenerator.PropertyName = "";
|
|
||||||
codeGenerator.CSType = "";
|
|
||||||
codeGenerator.Other = "";
|
|
||||||
list.Add(codeGenerator);
|
|
||||||
}
|
|
||||||
foreach (CodeGenerator code in list)
|
|
||||||
{
|
|
||||||
if (primaryKey.Contains(code.ColumnName))
|
|
||||||
code.IsPrimaryKey = "1";
|
|
||||||
}
|
|
||||||
return list.ToJson().ToDataTable();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<string> GetTableList()
|
|
||||||
{
|
|
||||||
if (DbType == SqlSugar.DbType.SqlServer)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
StringBuilder strSql = new StringBuilder();
|
|
||||||
strSql.Append(" SELECT ").AppendLine();
|
|
||||||
strSql.Append(" A.Name ").AppendLine();
|
|
||||||
strSql.Append(" FROM ").AppendLine();
|
|
||||||
strSql.Append(" sysobjects A ").AppendLine();
|
|
||||||
strSql.Append(" WHERE ").AppendLine();
|
|
||||||
strSql.Append(" A.xtype = 'U' ").AppendLine();
|
|
||||||
DataTable dt = db.Ado.GetDataTable(strSql.ToString());
|
|
||||||
if (dt == null)
|
|
||||||
return new List<string>();
|
|
||||||
List<string> list = new List<string>();
|
|
||||||
foreach (DataRow row in dt.Rows)
|
|
||||||
{
|
|
||||||
list.Add(row["Name"].ToString());
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (DbType == SqlSugar.DbType.MySql)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
StringBuilder strSql = new StringBuilder();
|
|
||||||
strSql.Append(" SELECT ").AppendLine();
|
|
||||||
strSql.Append(" TABLE_NAME AS Name ").AppendLine();
|
|
||||||
strSql.Append(" FROM ").AppendLine();
|
|
||||||
strSql.Append(" information_schema.TABLES ").AppendLine();
|
|
||||||
strSql.Append(" WHERE ").AppendLine();
|
|
||||||
strSql.Append(" TABLE_SCHEMA = '" + DbName + "' ").AppendLine();
|
|
||||||
DataTable dt = db.Ado.GetDataTable(strSql.ToString());
|
|
||||||
if (dt == null)
|
|
||||||
return new List<string>();
|
|
||||||
List<string> list = new List<string>();
|
|
||||||
foreach (DataRow row in dt.Rows)
|
|
||||||
{
|
|
||||||
list.Add(row["Name"].ToString());
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (DbType == SqlSugar.DbType.Sqlite)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
string sql = "SELECT name from sqlite_master where type='table'";
|
|
||||||
DataTable dt = db.Ado.GetDataTable(sql);
|
|
||||||
if (dt == null)
|
|
||||||
return new List<string>();
|
|
||||||
List<string> list = new List<string>();
|
|
||||||
foreach (DataRow row in dt.Rows)
|
|
||||||
{
|
|
||||||
list.Add(row["name"].ToString());
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new List<string>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 日志
|
|
||||||
/// </summary>
|
|
||||||
public class Logger
|
|
||||||
{
|
|
||||||
private static object _lock = new object();
|
|
||||||
private static void Log(string type, string message)
|
|
||||||
{
|
|
||||||
lock (_lock)
|
|
||||||
{
|
|
||||||
SimpleClient<SysLog> client = new SimpleClient<SysLog>(BaseLogic.GetInstance());
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SysLog log = new SysLog();
|
|
||||||
log.Id = UUID.SnowId;
|
|
||||||
log.Type = type;
|
|
||||||
#if !NETFRAMEWORK
|
|
||||||
log.ThreadId = Thread.GetCurrentProcessorId();
|
|
||||||
#else
|
|
||||||
log.ThreadId = Thread.CurrentThread.ManagedThreadId;
|
|
||||||
#endif
|
|
||||||
log.Message = message;
|
|
||||||
log.EnableFlag = "Y";
|
|
||||||
log.DeleteFlag = "N";
|
|
||||||
log.CreateTime = DateTime.Now;
|
|
||||||
log.CreateUserId = "1";
|
|
||||||
log.ModifyUserId = "1";
|
|
||||||
log.ModifyTime = log.CreateTime;
|
|
||||||
client.Insert(log);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 操作日志写入
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="message"></param>
|
|
||||||
public static void OperateInfo(string message)
|
|
||||||
{
|
|
||||||
Log("Operate", message);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 运行日志写入
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="message"></param>
|
|
||||||
public static void RunningInfo(string message)
|
|
||||||
{
|
|
||||||
Log("Running", message);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 错误日志写入
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="message"></param>
|
|
||||||
public static void ErrorInfo(string message)
|
|
||||||
{
|
|
||||||
Log("Error", message);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,167 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using SqlSugar;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysItemLogic : BaseLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
public List<SysItem> GetList()
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysItem>().Where(it => it.DeleteFlag == "N")
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.OrderBy(it => it.SortCode)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysItem> GetAppList(int pageIndex, int pageSize, ref int totalCount)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysItem>().Where(it => it.ParentId != "0" && it.DeleteFlag == "N")
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.OrderBy(it => it.SortCode)
|
|
||||||
.ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public List<SysItem> GetList(int pageIndex, int pageSize, string keyWord, ref int totalCount)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
ISugarQueryable<SysItem> queryable = db.Queryable<SysItem>().Where(it => it.DeleteFlag == "N");
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(keyWord))
|
|
||||||
{
|
|
||||||
queryable = queryable.Where(it => (it.Name.Contains(keyWord) || it.EnCode.Contains(keyWord)));
|
|
||||||
}
|
|
||||||
return queryable
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.OrderBy(it => it.SortCode)
|
|
||||||
.ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int GetChildCount(string parentId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysItem>()
|
|
||||||
.Where(it => it.ParentId == parentId && it.DeleteFlag == "N")
|
|
||||||
.ToList().Count();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public SysItem Get(string primaryKey)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysItem>().Where(it => it.DeleteFlag == "N")
|
|
||||||
.Where(it => it.Id == primaryKey)
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int AppInsert(SysItem model, string operateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
SysItem s = db.Queryable<SysItem>().Where(it => it.ParentId == "0").First();
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.Layer = s.Layer + 1;
|
|
||||||
model.ParentId = s.Id;
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = operateUser;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUser.Id;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysItem>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Insert(SysItem model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.Layer = Get(model.ParentId).Layer += 1;
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = account;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysItem>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Delete(string primaryKey)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
SysItem item = db.Queryable<SysItem>().Where(it => it.Id == primaryKey).First();
|
|
||||||
if (item == null)
|
|
||||||
return 0;
|
|
||||||
item.DeleteFlag = "Y";
|
|
||||||
return db.Updateable<SysItem>(item).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int Update(SysItem model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Layer = Get(model.ParentId).Layer += 1;
|
|
||||||
model.ModifyUserId = account;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysItem>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.ParentId,
|
|
||||||
it.Layer,
|
|
||||||
it.EnCode,
|
|
||||||
it.Name,
|
|
||||||
it.SortCode,
|
|
||||||
it.EnableFlag,
|
|
||||||
it.Remark,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int AppUpdate(SysItem model, string operateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyUserId = operateUser;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysItem>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.EnCode,
|
|
||||||
it.Name,
|
|
||||||
it.SortCode,
|
|
||||||
it.Remark,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,182 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysItemsDetailLogic : BaseLogic
|
|
||||||
{
|
|
||||||
public List<SysItemDetail> GetItemDetailList(string strItemCode)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
|
|
||||||
SysItem item = db.Queryable<SysItem>().Where(it => it.EnCode == strItemCode && it.DeleteFlag == "N").First();
|
|
||||||
if (null == item)
|
|
||||||
return null;
|
|
||||||
return db.Queryable<SysItemDetail>().Where(it => it.ItemId == item.Id && it.DeleteFlag == "N")
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.OrderBy(it => it.SortCode)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysItemDetail> GetList(int pageIndex, int pageSize, string itemId, string keyWord, ref int totalCount)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
ISugarQueryable<SysItemDetail> queryable = db.Queryable<SysItemDetail>().Where(it => it.DeleteFlag == "N" && it.ItemId == itemId);
|
|
||||||
if (!keyWord.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
queryable = queryable.Where(it => (it.Name.Contains(keyWord) || it.EnCode.Contains(keyWord)));
|
|
||||||
}
|
|
||||||
return queryable
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.OrderBy(it => it.SortCode)
|
|
||||||
.ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysItemDetail> GetListByItemId(string itemId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysItemDetail>()
|
|
||||||
.Where(it => it.ItemId == itemId && it.DeleteFlag == "N")
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InsertItemDetail(string itemId, List<SysItemDetail> list)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.BeginTran();
|
|
||||||
List<SysItemDetail> list2 = db.Queryable<SysItemDetail>().Where(it => it.ItemId == itemId && it.DeleteFlag == "N").ToList();
|
|
||||||
list2.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
db.Updateable<SysItemDetail>(list2).ExecuteCommand();
|
|
||||||
db.Insertable<SysItemDetail>(list).ExecuteCommand();
|
|
||||||
db.CommitTran();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public SysItemDetail Get(string primaryKey)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysItemDetail>()
|
|
||||||
.Where(it => it.DeleteFlag == "N" && it.Id == primaryKey)
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Insert(SysItemDetail model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.IsDefault = model.IsDefault == null ? "0" : "1";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = account;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysItemDetail>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int AppInsert(SysItemDetail model, string operateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.IsDefault = "0";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = operateUser;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysItemDetail>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int AppUpdate(SysItemDetail model, string operateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyUserId = operateUser;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysItemDetail>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.EnCode,
|
|
||||||
it.Name,
|
|
||||||
it.SortCode,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Delete(string itemId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
SysItemDetail itemDetail = db.Queryable<SysItemDetail>().Where(it => it.Id == itemId).First();
|
|
||||||
if (itemDetail == null)
|
|
||||||
return 0;
|
|
||||||
itemDetail.DeleteFlag = "Y";
|
|
||||||
return db.Updateable<SysItemDetail>(itemDetail).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Update(SysItemDetail model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.IsDefault = model.IsDefault == null ? "0" : "1";
|
|
||||||
model.ModifyUserId = account;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysItemDetail>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.ItemId,
|
|
||||||
it.EnCode,
|
|
||||||
it.Name,
|
|
||||||
it.IsDefault,
|
|
||||||
it.SortCode,
|
|
||||||
it.EnableFlag,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public SysItemDetail GetSoftwareName()
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysItemDetail>().Where(it => it.EnCode == "SoftwareName").First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,123 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 系统日志表数据访问
|
|
||||||
/// </summary>
|
|
||||||
public class SysLogLogic : BaseLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 根据日志类型获得日志
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="pageIndex"></param>
|
|
||||||
/// <param name="pageSize"></param>
|
|
||||||
/// <param name="type"></param>
|
|
||||||
/// <param name="index"></param>
|
|
||||||
/// <param name="keyWord"></param>
|
|
||||||
/// <param name="totalCount"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SysLog> GetList(int pageIndex, int pageSize, string type, string index, string keyWord, ref int totalCount)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
ISugarQueryable<SysLog> query = db.Queryable<SysLog>().Where(it => it.Type == type);
|
|
||||||
if (!keyWord.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
query = query.Where(it => it.Message.Contains(keyWord));
|
|
||||||
}
|
|
||||||
//查询当日
|
|
||||||
if (index == "1")
|
|
||||||
{
|
|
||||||
DateTime today = DateTime.Today;
|
|
||||||
DateTime startTime = today;
|
|
||||||
DateTime endTime = today.AddDays(1);
|
|
||||||
query = query.Where(it => it.CreateTime >= startTime && it.CreateTime < endTime);
|
|
||||||
}
|
|
||||||
//近7天
|
|
||||||
else if (index == "2")
|
|
||||||
{
|
|
||||||
DateTime today = DateTime.Today;
|
|
||||||
DateTime startTime = today.AddDays(-6);
|
|
||||||
DateTime endTime = today.AddDays(1);
|
|
||||||
query = query.Where(it => it.CreateTime >= startTime && it.CreateTime < endTime);
|
|
||||||
}
|
|
||||||
//近1月
|
|
||||||
else if (index == "3")
|
|
||||||
{
|
|
||||||
DateTime today = DateTime.Today;
|
|
||||||
DateTime startTime = today.AddDays(-29);
|
|
||||||
DateTime endTime = today.AddDays(1);
|
|
||||||
query = query.Where(it => it.CreateTime >= startTime && it.CreateTime < endTime);
|
|
||||||
}
|
|
||||||
//近3月
|
|
||||||
else if (index == "4")
|
|
||||||
{
|
|
||||||
DateTime today = DateTime.Today;
|
|
||||||
DateTime startTime = today.AddDays(-91);
|
|
||||||
DateTime endTime = today.AddDays(1);
|
|
||||||
query = query.Where(it => it.CreateTime >= startTime && it.CreateTime < endTime);
|
|
||||||
}
|
|
||||||
return query.OrderBy(it => it.Id, OrderByType.Desc).ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 删除日志
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="type"></param>
|
|
||||||
/// <param name="index"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Delete(string type, string index)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
IDeleteable<SysLog> query = db.Deleteable<SysLog>().Where(it => it.Type == type);
|
|
||||||
//保留一个月
|
|
||||||
if (index == "1")
|
|
||||||
{
|
|
||||||
DateTime today = DateTime.Today;
|
|
||||||
DateTime startTime = today;
|
|
||||||
DateTime endTime = today.AddDays(-29);
|
|
||||||
query = query.Where(it => it.CreateTime < endTime);
|
|
||||||
return query.ExecuteCommand();
|
|
||||||
}
|
|
||||||
//保留7天
|
|
||||||
else if (index == "2")
|
|
||||||
{
|
|
||||||
DateTime today = DateTime.Today;
|
|
||||||
DateTime startTime = today.AddDays(-6);
|
|
||||||
query = query.Where(it => it.CreateTime < startTime);
|
|
||||||
return query.ExecuteCommand();
|
|
||||||
}
|
|
||||||
//保留近3个月
|
|
||||||
else if (index == "3")
|
|
||||||
{
|
|
||||||
DateTime today = DateTime.Today;
|
|
||||||
DateTime startTime = today.AddDays(-92);
|
|
||||||
query = query.Where(it => it.CreateTime < startTime);
|
|
||||||
return query.ExecuteCommand();
|
|
||||||
}
|
|
||||||
//全部
|
|
||||||
else if (index == "4")
|
|
||||||
{
|
|
||||||
return query.ExecuteCommand();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysOrganizeLogic : BaseLogic
|
|
||||||
{
|
|
||||||
public List<SysOrganize> GetList()
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysOrganize>().Where(it => it.DeleteFlag == "N").ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysOrganize> GetList(int pageIndex, int pageSize, string keyWord, ref int totalCount)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
ISugarQueryable<SysOrganize> queryable = db.Queryable<SysOrganize>().Where(it => it.ParentId != "0" && it.DeleteFlag == "N");
|
|
||||||
|
|
||||||
if (!keyWord.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
queryable = queryable.Where(it => (it.FullName.Contains(keyWord) || it.EnCode.Contains(keyWord)));
|
|
||||||
}
|
|
||||||
return queryable
|
|
||||||
.OrderBy(it => it.SortCode)
|
|
||||||
.ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public int GetChildCount(string parentId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysOrganize>().Where(it => it.ParentId == parentId && it.DeleteFlag == "N").Count();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int AppUpdate(SysOrganize model, string opreaterUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyUserId = opreaterUser;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysOrganize>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.EnCode,
|
|
||||||
it.FullName,
|
|
||||||
it.Type,
|
|
||||||
it.ManagerId,
|
|
||||||
it.TelePhone,
|
|
||||||
it.WeChat,
|
|
||||||
it.Fax,
|
|
||||||
it.Email,
|
|
||||||
it.Address,
|
|
||||||
it.SortCode,
|
|
||||||
it.Remark,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int AppInsert(SysOrganize model, string opreaterUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
SysOrganize s = db.Queryable<SysOrganize>().Where(it => it.ParentId == "0").First();
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.Layer = s.Layer + 1;
|
|
||||||
model.ParentId = s.Id;
|
|
||||||
|
|
||||||
model.EnableFlag = "Y";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = opreaterUser;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysOrganize>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int Insert(SysOrganize model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.Layer = Get(model.ParentId).Layer += 1;
|
|
||||||
model.EnableFlag = "Y";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = account;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysOrganize>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Delete(string primaryKey)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
SysOrganize organize = db.Queryable<SysOrganize>().Where(it => it.Id == primaryKey).First();
|
|
||||||
if (organize == null)
|
|
||||||
return 0;
|
|
||||||
organize.DeleteFlag = "Y";
|
|
||||||
return db.Updateable<SysOrganize>(organize).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public SysOrganize Get(string primaryKey)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysOrganize>().Where(it => it.Id == primaryKey).Includes(it => it.CreateUser).Includes(it => it.ModifyUser).First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int Update(SysOrganize model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyUserId = account;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysOrganize>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.ParentId,
|
|
||||||
it.Layer,
|
|
||||||
it.EnCode,
|
|
||||||
it.FullName,
|
|
||||||
it.Type,
|
|
||||||
it.ManagerId,
|
|
||||||
it.TelePhone,
|
|
||||||
it.WeChat,
|
|
||||||
it.Fax,
|
|
||||||
it.Email,
|
|
||||||
it.Address,
|
|
||||||
it.SortCode,
|
|
||||||
it.EnableFlag,
|
|
||||||
it.Remark,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,238 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysPermissionLogic : BaseLogic
|
|
||||||
{
|
|
||||||
public bool ActionValidate(string userId, string action)
|
|
||||||
{
|
|
||||||
List<SysPermission> authorizeModules;
|
|
||||||
if (new SysUserLogic().ContainsUser("admin", userId))
|
|
||||||
{
|
|
||||||
authorizeModules = GetList();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
authorizeModules = GetList(userId);
|
|
||||||
}
|
|
||||||
foreach (var item in authorizeModules)
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(item.Url))
|
|
||||||
{
|
|
||||||
string[] url = item.Url.Split('?');
|
|
||||||
if (url[0].ToLower() == action.ToLower())
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public List<SysPermission> GetList(string userId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
List<string> permissionIdList = db.Queryable<SysUserRoleRelation, SysRoleAuthorize, SysPermission>((A, B, C) => new object[] {
|
|
||||||
JoinType.Left,A.RoleId == B.RoleId,
|
|
||||||
JoinType.Left,C.Id == B.ModuleId,
|
|
||||||
})
|
|
||||||
.Where((A, B, C) => A.UserId == userId && C.EnableFlag == "Y" && B.DeleteFlag == "N")
|
|
||||||
.Select((A, B, C) => C.Id).ToList();
|
|
||||||
return db.Queryable<SysPermission>().Where(it => permissionIdList.Contains(it.Id)).OrderBy(it => it.SortCode).ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public List<SysPermission> GetList(int pageIndex, int pageSize, string keyWord, ref int totalCount)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
if (keyWord.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysPermission>().Where(it => it.DeleteFlag == "N").OrderBy(it => it.SortCode).ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
return db.Queryable<SysPermission>().Where(it => it.DeleteFlag == "N" && (it.Name.Contains(keyWord) || it.EnCode.Contains(keyWord))).OrderBy(it => it.SortCode).ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Delete(params string[] primaryKeys)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.BeginTran();
|
|
||||||
//删除权限与角色的对应关系。
|
|
||||||
List<SysPermission> list = db.Queryable<SysPermission>().Where(it => primaryKeys.Contains(it.Id) && it.DeleteFlag == "N").ToList();
|
|
||||||
List<string> ids = list.Select(it => it.Id).ToList();
|
|
||||||
list.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
db.Updateable<SysPermission>(list).ExecuteCommand();
|
|
||||||
List<SysRoleAuthorize> list2 = db.Queryable<SysRoleAuthorize>().Where(it => ids.Contains(it.ModuleId) && it.DeleteFlag == "N").ToList();
|
|
||||||
list2.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
db.Updateable<SysRoleAuthorize>(list2).ExecuteCommand();
|
|
||||||
db.CommitTran();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
public int GetMaxChildMenuOrderCode(string parentId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
//得到当前节点
|
|
||||||
SysPermission permission = db.Queryable<SysPermission>().Where(it => it.Id == parentId && it.DeleteFlag == "N").First();
|
|
||||||
if (permission == null)
|
|
||||||
return 0;
|
|
||||||
//得到子的
|
|
||||||
SysPermission child = db.Queryable<SysPermission>().Where(it => it.ParentId == parentId && it.DeleteFlag == "N").OrderBy(it => it.SortCode, OrderByType.Desc).First();
|
|
||||||
if (child == null)
|
|
||||||
return permission.SortCode.Value + 100;
|
|
||||||
else
|
|
||||||
return child.SortCode.Value + 100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int GetChildCount(string parentId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysPermission>().Where(it => it.ParentId == parentId && it.DeleteFlag == "N").ToList().Count();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysPermission> GetList()
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysPermission>().Where(it => it.DeleteFlag == "N").OrderBy(it => it.SortCode).ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public SysPermission Get(string primaryKey)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysPermission>().Where(it => it.Id == primaryKey).Includes(it => it.CreateUser).Includes(it => it.ModifyUser).First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int Insert(SysPermission model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.Layer = model.Type == 2 ? 0 : model.Type == 0 ? 1 : 2;
|
|
||||||
model.IsEdit = model.IsEdit == null ? "0" : "1";
|
|
||||||
model.IsPublic = model.IsPublic == null ? "0" : "1";
|
|
||||||
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.EnableFlag = "Y";
|
|
||||||
model.CreateUserId = account;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysPermission>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int AppInsert(SysPermission model, string operateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.Layer = model.Type == 2 ? 0 : model.Type == 0 ? 1 : 2;
|
|
||||||
model.IsEdit = "1";
|
|
||||||
model.IsPublic = "0";
|
|
||||||
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.EnableFlag = "Y";
|
|
||||||
model.CreateUserId = operateUser;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysPermission>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int AppUpdate(SysPermission model, string operateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Layer = model.Type == 2 ? 0 : model.Type == 0 ? 1 : 2;
|
|
||||||
model.ModifyUserId = operateUser;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysPermission>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.ParentId,
|
|
||||||
it.Layer,
|
|
||||||
it.EnCode,
|
|
||||||
it.Name,
|
|
||||||
it.JsEvent,
|
|
||||||
it.Icon,
|
|
||||||
it.SymbolIndex,
|
|
||||||
it.Url,
|
|
||||||
it.Remark,
|
|
||||||
it.Type,
|
|
||||||
it.SortCode,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime,
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int Update(SysPermission model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Layer = model.Type == 2 ? 0 : model.Type == 0 ? 1 : 2;
|
|
||||||
model.IsEdit = model.IsEdit == null ? "0" : "1";
|
|
||||||
model.IsPublic = model.IsPublic == null ? "0" : "1";
|
|
||||||
model.ModifyUserId = account;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysPermission>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.ParentId,
|
|
||||||
it.Layer,
|
|
||||||
it.EnCode,
|
|
||||||
it.Name,
|
|
||||||
it.JsEvent,
|
|
||||||
it.Icon,
|
|
||||||
it.SymbolIndex,
|
|
||||||
it.Url,
|
|
||||||
it.Remark,
|
|
||||||
it.Type,
|
|
||||||
it.SortCode,
|
|
||||||
it.IsPublic,
|
|
||||||
it.EnableFlag,
|
|
||||||
it.IsEdit,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime,
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int InsertList(List<SysPermission> permissionList)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Insertable<SysPermission>(permissionList).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysRoleAuthorizeLogic : BaseLogic
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 获得角色权限关系
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SysRoleAuthorize> GetList()
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysRoleAuthorize>().ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 根据角色ID获得角色权限关系
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SysRoleAuthorize> GetList(string roleId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysRoleAuthorize>().Where(it => it.RoleId == roleId && it.DeleteFlag == "N").ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 给某个角色授权
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <param name="perIds"></param>
|
|
||||||
public void AppAuthorize(string operate, string roleId, params string[] perIds)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.BeginTran();
|
|
||||||
//获得所有权限
|
|
||||||
List<SysPermission> permissionList = db.Queryable<SysPermission>().Where(it => it.DeleteFlag == "N").ToList();
|
|
||||||
List<string> perList = new List<string>();
|
|
||||||
foreach (string perId in perIds)
|
|
||||||
{
|
|
||||||
string id = perId;
|
|
||||||
while (!id.IsNullOrEmpty() && id != "0")
|
|
||||||
{
|
|
||||||
if (!perList.Contains(id))
|
|
||||||
{
|
|
||||||
perList.Add(id);
|
|
||||||
}
|
|
||||||
id = permissionList.Where(it => it.Id == id).Select(it => it.ParentId).FirstOrDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//删除旧的
|
|
||||||
List<SysRoleAuthorize> list2 = db.Queryable<SysRoleAuthorize>().Where(it => it.RoleId == roleId && it.DeleteFlag == "N").ToList();
|
|
||||||
list2.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
db.Updateable<SysRoleAuthorize>(list2).ExecuteCommand();
|
|
||||||
|
|
||||||
|
|
||||||
List<SysRoleAuthorize> newRoleAuthorizeList = perList.Select(it => new SysRoleAuthorize
|
|
||||||
{
|
|
||||||
Id = UUID.StrSnowId,
|
|
||||||
RoleId = roleId,
|
|
||||||
ModuleId = it,
|
|
||||||
DeleteFlag = "N",
|
|
||||||
EnableFlag = "Y",
|
|
||||||
CreateUserId = operate,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ModifyUserId = operate,
|
|
||||||
ModifyTime = DateTime.Now
|
|
||||||
|
|
||||||
}).ToList();
|
|
||||||
db.Insertable<SysRoleAuthorize>(newRoleAuthorizeList).ExecuteCommand();
|
|
||||||
db.CommitTran();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 给某个角色授权
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <param name="perIds"></param>
|
|
||||||
public void Authorize(string roleId, string account, params string[] perIds)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.BeginTran();
|
|
||||||
//获得所有权限
|
|
||||||
List<SysPermission> permissionList = db.Queryable<SysPermission>().ToList();
|
|
||||||
List<string> perList = new List<string>();
|
|
||||||
foreach (string perId in perIds)
|
|
||||||
{
|
|
||||||
string id = perId;
|
|
||||||
while (!id.IsNullOrEmpty() && id != "0")
|
|
||||||
{
|
|
||||||
if (!perList.Contains(id))
|
|
||||||
{
|
|
||||||
perList.Add(id);
|
|
||||||
}
|
|
||||||
id = permissionList.Where(it => it.Id == id).Select(it => it.ParentId).FirstOrDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//删除旧的
|
|
||||||
List<SysRoleAuthorize> list2 = db.Queryable<SysRoleAuthorize>().Where(it => it.RoleId == roleId && it.DeleteFlag == "N").ToList();
|
|
||||||
list2.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
db.Updateable<SysRoleAuthorize>(list2).ExecuteCommand();
|
|
||||||
|
|
||||||
|
|
||||||
List<SysRoleAuthorize> newRoleAuthorizeList = perList.Select(it => new SysRoleAuthorize
|
|
||||||
{
|
|
||||||
Id = UUID.StrSnowId,
|
|
||||||
RoleId = roleId,
|
|
||||||
ModuleId = it,
|
|
||||||
DeleteFlag = "N",
|
|
||||||
EnableFlag = "Y",
|
|
||||||
CreateUserId = account,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ModifyUserId = account,
|
|
||||||
ModifyTime = DateTime.Now
|
|
||||||
}).ToList();
|
|
||||||
db.Insertable<SysRoleAuthorize>(newRoleAuthorizeList).ExecuteCommand();
|
|
||||||
db.CommitTran();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 从角色权限关系中删除某个模块
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="moduleIds"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Delete(params string[] moduleIds)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
List<SysRoleAuthorize> list = db.Queryable<SysRoleAuthorize>().Where(it => moduleIds.Contains(it.ModuleId)).ToList();
|
|
||||||
list.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
return db.Updateable<SysRoleAuthorize>(list).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,176 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysRoleLogic : BaseLogic
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 得到角色列表
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SysRole> GetList()
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysRole>().Where(it => it.DeleteFlag == "N")
|
|
||||||
.Includes(it => it.Organize)
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获得角色列表分页
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="pageIndex"></param>
|
|
||||||
/// <param name="pageSize"></param>
|
|
||||||
/// <param name="keyWord"></param>
|
|
||||||
/// <param name="totalCount"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SysRole> GetList(int pageIndex, int pageSize, string keyWord, ref int totalCount)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
|
|
||||||
ISugarQueryable<SysRole> queryable = db.Queryable<SysRole>().Where(it => it.DeleteFlag == "N");
|
|
||||||
|
|
||||||
if (!keyWord.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
queryable = queryable.Where(it => (it.Name.Contains(keyWord) || it.EnCode.Contains(keyWord)));
|
|
||||||
}
|
|
||||||
|
|
||||||
return queryable.Includes(it => it.Organize)
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.OrderBy(it => it.SortCode)
|
|
||||||
.ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 新增角色
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Insert(SysRole model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.AllowEdit = model.AllowEdit == null ? "0" : "1";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = account;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysRole>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int AppInsert(SysRole model, string operateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.AllowEdit = "1";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = operateUser;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
return db.Insertable<SysRole>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int AppUpdate(SysRole model, string operateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.AllowEdit = model.AllowEdit == null ? "0" : "1";
|
|
||||||
model.ModifyUserId = operateUser;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysRole>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.OrganizeId,
|
|
||||||
it.EnCode,
|
|
||||||
it.Type,
|
|
||||||
it.Name,
|
|
||||||
it.Remark,
|
|
||||||
it.SortCode,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 更新角色信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Update(SysRole model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.AllowEdit = model.AllowEdit == null ? "0" : "1";
|
|
||||||
model.ModifyUserId = account;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysRole>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.OrganizeId,
|
|
||||||
it.EnCode,
|
|
||||||
it.Type,
|
|
||||||
it.Name,
|
|
||||||
it.AllowEdit,
|
|
||||||
it.EnableFlag,
|
|
||||||
it.Remark,
|
|
||||||
it.SortCode,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 根据主键得到角色信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="primaryKey"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public SysRole Get(string primaryKey)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysRole>().Where(it => it.Id == primaryKey)
|
|
||||||
.Includes(it => it.Organize)
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 删除角色信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="primaryKeys"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Delete(List<string> primaryKeys)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
List<SysRole> list = db.Queryable<SysRole>().Where(it => primaryKeys.Contains(it.Id)).ToList();
|
|
||||||
list.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
return db.Updateable<SysRole>(list).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,175 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysUserLogOnLogic : BaseLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 根据用户Id得到登录账号信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public SysUserLogOn GetByAccount(string userId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysUserLogOn>().Where(it => it.UserId == userId).First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 更新用户登录账号信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int UpdateLogin(SysUserLogOn model)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.IsOnLine = "1";
|
|
||||||
model.LastVisitTime = DateTime.Now;
|
|
||||||
model.PrevVisitTime = model.LastVisitTime;
|
|
||||||
model.LoginCount += 1;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.UserId;
|
|
||||||
return db.Updateable<SysUserLogOn>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.IsOnLine,
|
|
||||||
it.PrevVisitTime,
|
|
||||||
it.LastVisitTime,
|
|
||||||
it.LoginCount,
|
|
||||||
it.ModifyTime,
|
|
||||||
it.ModifyUserId
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 修改密码
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userLoginEntity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int ModifyPwd(SysUserLogOn userLoginEntity)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
userLoginEntity.ChangePwdTime = DateTime.Now;
|
|
||||||
userLoginEntity.ModifyUserId = userLoginEntity.UserId;
|
|
||||||
userLoginEntity.ModifyTime = DateTime.Now;
|
|
||||||
|
|
||||||
return db.Updateable<SysUserLogOn>(userLoginEntity).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.Password,
|
|
||||||
it.ChangePwdTime,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 删除用户登录信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userIds"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Delete(List<string> userIds)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
List<SysUserLogOn> list = db.Queryable<SysUserLogOn>().Where(it => userIds.Contains(it.UserId)).ToList();
|
|
||||||
list.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
return db.Updateable<SysUserLogOn>(list).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 新增用户登录账号
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Insert(SysUserLogOn model)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.SecretKey = model.Id.DESEncrypt().Substring(0, 8);
|
|
||||||
model.Password = model.Password.MD5Encrypt().DESEncrypt(model.SecretKey).MD5Encrypt();
|
|
||||||
model.LoginCount = 0;
|
|
||||||
model.IsOnLine = "0";
|
|
||||||
model.EnableFlag = "Y";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.UserId;
|
|
||||||
model.CreateUserId = model.UserId;
|
|
||||||
return db.Insertable<SysUserLogOn>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 更新用户登录账号信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int UpdateInfo(SysUserLogOn model)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.UserId;
|
|
||||||
|
|
||||||
return db.Updateable<SysUserLogOn>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.AllowMultiUserOnline,
|
|
||||||
it.Question,
|
|
||||||
it.AnswerQuestion,
|
|
||||||
it.CheckIPAddress,
|
|
||||||
it.Language,
|
|
||||||
it.Theme,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int UpdateTheme(SysUserLogOn model)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.UserId;
|
|
||||||
return db.Updateable<SysUserLogOn>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.Theme,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int UpdatePassword(SysUserLogOn model)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.UserId;
|
|
||||||
return db.Updateable<SysUserLogOn>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.Password,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,509 +0,0 @@
|
|||||||
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using DH.RBAC.Model.Sys;
|
|
||||||
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
using SqlSugar;
|
|
||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysUserLogic : BaseLogic
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 根据账号得到用户信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="account"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public SysUser GetByUserName(string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysUser>().Where(it => it.Account == account && it.DeleteFlag == "N")
|
|
||||||
.Includes(it => it.Organize)
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser)
|
|
||||||
.First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 修改用户基础信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int UpdateBasicInfo(SysUser model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyUserId = account;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.RealName,
|
|
||||||
it.NickName,
|
|
||||||
it.Gender,
|
|
||||||
it.Birthday,
|
|
||||||
it.MobilePhone,
|
|
||||||
it.Avatar,
|
|
||||||
it.Email,
|
|
||||||
it.Signature,
|
|
||||||
it.Address,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int AppUpdateBasicInfo(SysUser model)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyUserId = model.Id;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
return db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.RealName,
|
|
||||||
it.NickName,
|
|
||||||
it.Gender,
|
|
||||||
it.Birthday,
|
|
||||||
it.MobilePhone,
|
|
||||||
it.Avatar,
|
|
||||||
it.Email,
|
|
||||||
it.Signature,
|
|
||||||
it.Address,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Insert(SysUser model, string password, string account, string[] roleIds)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.BeginTran();
|
|
||||||
////新增用户基本信息。
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.EnableFlag = "Y";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = account;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
model.Avatar = "/Content/framework/images/avatar.png";
|
|
||||||
int row = db.Insertable<SysUser>(model).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
|
|
||||||
//新增新的角色
|
|
||||||
List<SysUserRoleRelation> list = new List<SysUserRoleRelation>();
|
|
||||||
foreach (string roleId in roleIds)
|
|
||||||
{
|
|
||||||
SysUserRoleRelation roleRelation = new SysUserRoleRelation
|
|
||||||
{
|
|
||||||
Id = UUID.StrSnowId,
|
|
||||||
UserId = model.Id,
|
|
||||||
RoleId = roleId,
|
|
||||||
EnableFlag = "Y",
|
|
||||||
DeleteFlag = "N",
|
|
||||||
CreateUserId = account,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ModifyUserId = account,
|
|
||||||
ModifyTime = DateTime.Now
|
|
||||||
};
|
|
||||||
list.Add(roleRelation);
|
|
||||||
}
|
|
||||||
row = db.Insertable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
//新增用户登陆信息。
|
|
||||||
SysUserLogOn userLogOnEntity = new SysUserLogOn();
|
|
||||||
userLogOnEntity.Id = UUID.StrSnowId;
|
|
||||||
userLogOnEntity.UserId = model.Id;
|
|
||||||
userLogOnEntity.SecretKey = userLogOnEntity.Id.DESEncrypt().Substring(0, 8);
|
|
||||||
userLogOnEntity.Password = password.MD5Encrypt().DESEncrypt(userLogOnEntity.SecretKey).MD5Encrypt();
|
|
||||||
userLogOnEntity.LoginCount = 0;
|
|
||||||
userLogOnEntity.IsOnLine = "0";
|
|
||||||
userLogOnEntity.EnableFlag = "Y";
|
|
||||||
userLogOnEntity.DeleteFlag = "N";
|
|
||||||
userLogOnEntity.CreateUserId = account;
|
|
||||||
userLogOnEntity.CreateTime = DateTime.Now;
|
|
||||||
userLogOnEntity.ModifyUserId = account;
|
|
||||||
userLogOnEntity.ModifyTime = DateTime.Now;
|
|
||||||
row = db.Insertable<SysUserLogOn>(userLogOnEntity).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
db.CommitTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ContainsUser(string userAccount, params string[] userIdList)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
List<string> accountList = db.Queryable<SysUser>().Where(it => userIdList.Contains(it.Id)).Select(it => it.Account).ToList();
|
|
||||||
if (accountList.IsNullOrEmpty())
|
|
||||||
return false;
|
|
||||||
if (accountList.Contains(userAccount))
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int AppInsert(SysUser model, string password, string[] roleIds, string opearateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.BeginTran();
|
|
||||||
////新增用户基本信息。
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.EnableFlag = "Y";
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.CreateUserId = opearateUser;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
model.Avatar = "/Content/framework/images/avatar.png";
|
|
||||||
int row = db.Insertable<SysUser>(model).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
|
|
||||||
//新增新的角色
|
|
||||||
List<SysUserRoleRelation> list = new List<SysUserRoleRelation>();
|
|
||||||
foreach (string roleId in roleIds)
|
|
||||||
{
|
|
||||||
SysUserRoleRelation roleRelation = new SysUserRoleRelation
|
|
||||||
{
|
|
||||||
Id = UUID.StrSnowId,
|
|
||||||
UserId = model.Id,
|
|
||||||
RoleId = roleId,
|
|
||||||
EnableFlag = "Y",
|
|
||||||
DeleteFlag = "N",
|
|
||||||
CreateUserId = opearateUser,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ModifyUserId = opearateUser,
|
|
||||||
ModifyTime = DateTime.Now
|
|
||||||
};
|
|
||||||
list.Add(roleRelation);
|
|
||||||
}
|
|
||||||
row = db.Insertable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
//新增用户登陆信息。
|
|
||||||
SysUserLogOn userLogOnEntity = new SysUserLogOn();
|
|
||||||
userLogOnEntity.Id = UUID.StrSnowId;
|
|
||||||
userLogOnEntity.UserId = model.Id;
|
|
||||||
userLogOnEntity.SecretKey = userLogOnEntity.Id.DESEncrypt().Substring(0, 8);
|
|
||||||
userLogOnEntity.Password = password.DESEncrypt(userLogOnEntity.SecretKey).MD5Encrypt();
|
|
||||||
userLogOnEntity.LoginCount = 0;
|
|
||||||
userLogOnEntity.IsOnLine = "0";
|
|
||||||
userLogOnEntity.EnableFlag = "Y";
|
|
||||||
userLogOnEntity.DeleteFlag = "N";
|
|
||||||
userLogOnEntity.CreateUserId = opearateUser;
|
|
||||||
userLogOnEntity.CreateTime = DateTime.Now;
|
|
||||||
userLogOnEntity.ModifyUserId = userLogOnEntity.CreateUserId;
|
|
||||||
userLogOnEntity.ModifyTime = userLogOnEntity.CreateTime;
|
|
||||||
row = db.Insertable<SysUserLogOn>(userLogOnEntity).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
db.CommitTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 根据主键得到用户信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="primaryKey"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public SysUser Get(string primaryKey)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysUser>().Where(it => it.Id == primaryKey)
|
|
||||||
.Includes(it => it.Organize)
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser).First();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获得用户列表分页
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="pageIndex"></param>
|
|
||||||
/// <param name="pageSize"></param>
|
|
||||||
/// <param name="keyWord"></param>
|
|
||||||
/// <param name="totalCount"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SysUser> GetList(int pageIndex, int pageSize, string keyWord, ref int totalCount)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
ISugarQueryable<SysUser> queryable = db.Queryable<SysUser>().Where(it => it.DeleteFlag == "N");
|
|
||||||
if (!keyWord.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
queryable = queryable.Where(it => it.Account.Contains(keyWord) || it.RealName.Contains(keyWord));
|
|
||||||
}
|
|
||||||
return queryable.OrderBy(it => it.SortCode)
|
|
||||||
.Includes(it => it.Organize)
|
|
||||||
.Includes(it => it.CreateUser)
|
|
||||||
.Includes(it => it.ModifyUser).ToPageList(pageIndex, pageSize, ref totalCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 删除用户信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="primaryKeys"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Delete(List<string> primaryKeys)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
List<SysUser> list = db.Queryable<SysUser>().Where(it => primaryKeys.Contains(it.Id)).ToList();
|
|
||||||
list.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
return db.Updateable<SysUser>(list).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 新增用户基础信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Insert(SysUser model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.Id = UUID.StrSnowId;
|
|
||||||
model.DeleteFlag = "N";
|
|
||||||
model.EnableFlag = "Y";
|
|
||||||
|
|
||||||
|
|
||||||
model.CreateUserId = account;
|
|
||||||
model.CreateTime = DateTime.Now;
|
|
||||||
model.ModifyUserId = model.CreateUserId;
|
|
||||||
model.ModifyTime = model.CreateTime;
|
|
||||||
model.Avatar = "/Content/framework/images/avatar.png";
|
|
||||||
return db.Insertable<SysUser>(model).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 更新用户基础信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="model"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Update(SysUser model, string account)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
model.ModifyUserId = account;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
|
|
||||||
return db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.NickName,
|
|
||||||
it.RealName,
|
|
||||||
it.Birthday,
|
|
||||||
it.Gender,
|
|
||||||
it.Email,
|
|
||||||
it.DepartmentId,
|
|
||||||
it.RoleId,
|
|
||||||
it.MobilePhone,
|
|
||||||
it.Address,
|
|
||||||
it.Signature,
|
|
||||||
it.SortCode,
|
|
||||||
it.IsEnabled,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public int AppUpdateAndSetRole(SysUser model, string[] roleIds, string opereateUser)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.BeginTran();
|
|
||||||
model.ModifyUserId = opereateUser;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
int row = db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.NickName,
|
|
||||||
it.RealName,
|
|
||||||
it.Birthday,
|
|
||||||
it.Gender,
|
|
||||||
it.Email,
|
|
||||||
it.DepartmentId,
|
|
||||||
it.RoleId,
|
|
||||||
it.MobilePhone,
|
|
||||||
it.Address,
|
|
||||||
it.Signature,
|
|
||||||
it.SortCode,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
//删除原来的角色
|
|
||||||
List<SysUserRoleRelation> list2 = db.Queryable<SysUserRoleRelation>().Where(it => it.UserId == model.Id && it.DeleteFlag == "N").ToList();
|
|
||||||
list2.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
db.Updateable<SysUserRoleRelation>(list2).ExecuteCommand();
|
|
||||||
//新增新的角色
|
|
||||||
List<SysUserRoleRelation> list = new List<SysUserRoleRelation>();
|
|
||||||
foreach (string roleId in roleIds)
|
|
||||||
{
|
|
||||||
SysUserRoleRelation roleRelation = new SysUserRoleRelation
|
|
||||||
{
|
|
||||||
Id = UUID.StrSnowId,
|
|
||||||
UserId = model.Id,
|
|
||||||
RoleId = roleId,
|
|
||||||
DeleteFlag = "N",
|
|
||||||
EnableFlag = "Y",
|
|
||||||
CreateUserId = opereateUser,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ModifyUserId = opereateUser,
|
|
||||||
ModifyTime = DateTime.Now
|
|
||||||
};
|
|
||||||
list.Add(roleRelation);
|
|
||||||
}
|
|
||||||
row = db.Insertable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
db.CommitTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int UpdateAndSetRole(SysUser model, string account, string[] roleIds)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
db.BeginTran();
|
|
||||||
model.ModifyUserId = account;
|
|
||||||
model.ModifyTime = DateTime.Now;
|
|
||||||
int row = db.Updateable<SysUser>(model).UpdateColumns(it => new
|
|
||||||
{
|
|
||||||
it.NickName,
|
|
||||||
it.RealName,
|
|
||||||
it.Birthday,
|
|
||||||
it.Gender,
|
|
||||||
it.Email,
|
|
||||||
it.DepartmentId,
|
|
||||||
it.RoleId,
|
|
||||||
it.MobilePhone,
|
|
||||||
it.Address,
|
|
||||||
it.Signature,
|
|
||||||
it.SortCode,
|
|
||||||
it.EnableFlag,
|
|
||||||
it.ModifyUserId,
|
|
||||||
it.ModifyTime
|
|
||||||
}).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
//删除原来的角色
|
|
||||||
List<SysUserRoleRelation> list2 = db.Queryable<SysUserRoleRelation>().Where(it => it.UserId == model.Id && it.DeleteFlag == "N").ToList();
|
|
||||||
list2.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
db.Updateable<SysUserRoleRelation>(list2).ExecuteCommand();
|
|
||||||
//新增新的角色
|
|
||||||
List<SysUserRoleRelation> list = new List<SysUserRoleRelation>();
|
|
||||||
foreach (string roleId in roleIds)
|
|
||||||
{
|
|
||||||
SysUserRoleRelation roleRelation = new SysUserRoleRelation
|
|
||||||
{
|
|
||||||
Id = UUID.StrSnowId,
|
|
||||||
UserId = model.Id,
|
|
||||||
RoleId = roleId,
|
|
||||||
EnableFlag = "Y",
|
|
||||||
DeleteFlag = "N",
|
|
||||||
CreateUserId = account,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ModifyTime = DateTime.Now,
|
|
||||||
ModifyUserId = account
|
|
||||||
};
|
|
||||||
list.Add(roleRelation);
|
|
||||||
}
|
|
||||||
row = db.Insertable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
||||||
if (row == 0)
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
db.CommitTran();
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
db.RollbackTran();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Logic.Base;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC.Logic.Sys
|
|
||||||
{
|
|
||||||
public class SysUserRoleRelationLogic : BaseLogic
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 删除用户角色关系
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userIds"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int Delete(List<string> userIds)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
List<SysUserRoleRelation> list = db.Queryable<SysUserRoleRelation>().Where(it => userIds.Contains(it.UserId)).ToList();
|
|
||||||
list.ForEach(it => { it.DeleteFlag = "Y"; });
|
|
||||||
return db.Updateable<SysUserRoleRelation>(list).ExecuteCommand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 根据ID得到用户角色关系
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userIds"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SysUserRoleRelation> GetList(string userId)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysUserRoleRelation>().Where(it => it.UserId == userId && it.DeleteFlag=="N").ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 从用户角色关系表中得到所有角色绑定信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ids"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SysUserRoleRelation> GetByRoles(List<string> ids)
|
|
||||||
{
|
|
||||||
using (var db = GetInstance())
|
|
||||||
{
|
|
||||||
return db.Queryable<SysUserRoleRelation>().Where(it => ids.Contains(it.RoleId) && it.DeleteFlag == "N").ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
using AntdUI;
|
|
||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model
|
|
||||||
{
|
|
||||||
public class BaseModelEntity: NotifyProperty
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 是否启用
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "EnableFlag", ColumnDescription = "是否启用", IsNullable = true, Length = 1)]
|
|
||||||
public virtual string EnableFlag { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 是否删除
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "DeleteFlag", ColumnDescription = "是否删除", IsNullable = true, Length = 1)]
|
|
||||||
public virtual string DeleteFlag { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 创建人
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "CreateUserId", ColumnDescription = "创建人", IsNullable = true, Length = 255)]
|
|
||||||
public virtual string CreateUserId { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 创建时间
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "CreateTime", ColumnDescription = "创建时间", IsNullable = true, Length = 3)]
|
|
||||||
public virtual DateTime? CreateTime { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 更新人
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "ModifyUserId", ColumnDescription = "更新人", IsNullable = true, Length = 255)]
|
|
||||||
public virtual string ModifyUserId { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 更新时间
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "ModifyTime", ColumnDescription = "更新时间", IsNullable = true, Length = 3)]
|
|
||||||
public virtual DateTime? ModifyTime { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建人
|
|
||||||
/// </summary>
|
|
||||||
[JsonIgnore]
|
|
||||||
[Navigate(NavigateType.OneToOne, nameof(CreateUserId), nameof(SysUser.Id))]//一对一 SchoolId是StudentA类里面的
|
|
||||||
public SysUser CreateUser { get; set; } //不能赋值只能是null
|
|
||||||
/// <summary>
|
|
||||||
/// 更新人
|
|
||||||
/// </summary>
|
|
||||||
[JsonIgnore]
|
|
||||||
[Navigate(NavigateType.OneToOne, nameof(ModifyUserId), nameof(SysUser.Id))]//一对一 SchoolId是StudentA类里面的
|
|
||||||
public SysUser ModifyUser { get; set; } //不能赋值只能是null
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string CreateUserName
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return CreateUser == null ? "" : CreateUser.RealName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string ModifyUserName
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return ModifyUser == null ? "" : ModifyUser.RealName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public bool IsDeleted
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return DeleteFlag == "Y" ? true : false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public bool IsEnabled
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return EnableFlag == "Y" ? true : false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Base
|
|
||||||
{
|
|
||||||
public class CodeGenerator
|
|
||||||
{
|
|
||||||
public string TableName { get; set; }
|
|
||||||
public string ColumnName { get; set; }
|
|
||||||
public string TypeName { get; set; }
|
|
||||||
public string TypeLength { get; set; }
|
|
||||||
public string IsPrimaryKey { get; set; }
|
|
||||||
public string ClassName { get; set; }
|
|
||||||
public string PropertyName { get; set; }
|
|
||||||
public string CSType { get; set; }
|
|
||||||
|
|
||||||
public string Other { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Models.Base
|
|
||||||
{
|
|
||||||
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
|
|
||||||
public class MenuControlAttribute : Attribute
|
|
||||||
{
|
|
||||||
public string ParentMenu { get; } // 父菜单名称(如 "相机设置")
|
|
||||||
public Type ConfigType { get; } // 配置类型(如 CameraBase)
|
|
||||||
|
|
||||||
public MenuControlAttribute(string parentMenu)
|
|
||||||
{
|
|
||||||
ParentMenu = parentMenu;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class AuthorParms
|
|
||||||
{
|
|
||||||
public string roleId { get; set; }
|
|
||||||
public List<string> perIds { get; set; }
|
|
||||||
|
|
||||||
public string operater { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class FileUploadParms
|
|
||||||
{
|
|
||||||
public byte[] file { get; set; }
|
|
||||||
public string fileName { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class ItemDetailIndexParms
|
|
||||||
{
|
|
||||||
public int pageIndex { get; set; }
|
|
||||||
public int pageSize { get; set; }
|
|
||||||
|
|
||||||
public string keyWord { get; set; }
|
|
||||||
public string itemId { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class KeyValue
|
|
||||||
{
|
|
||||||
public string Name { get; set; }
|
|
||||||
public string Value { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class LogDeleteParms
|
|
||||||
{
|
|
||||||
public string type { get; set; }
|
|
||||||
public string index { get; set; }
|
|
||||||
public string operateUser { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class LogIndexParms
|
|
||||||
{
|
|
||||||
public int pageIndex { get; set; }
|
|
||||||
public int pageSize { get; set; }
|
|
||||||
public string type { get; set; }
|
|
||||||
public string index { get; set; }
|
|
||||||
public string keyWord { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class LongPrimaryKeyParms
|
|
||||||
{
|
|
||||||
public string operaterId { get; set; }
|
|
||||||
public long primaryKey { get; set; }
|
|
||||||
|
|
||||||
public string operateUser { get; set; }
|
|
||||||
public string userIds { get; set; }
|
|
||||||
public string roleId { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class ModifyPasswordParms
|
|
||||||
{
|
|
||||||
public string userId { get; set; }
|
|
||||||
public string oldPassword { get; set; }
|
|
||||||
public string newPassword { get; set; }
|
|
||||||
public string confirmPassword { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class RoleDeleteParms
|
|
||||||
{
|
|
||||||
public List<string> roleIdList { get; set; }
|
|
||||||
public string operateUser { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class SearchParms
|
|
||||||
{
|
|
||||||
public int pageIndex { get; set; }
|
|
||||||
public int pageSize { get; set; }
|
|
||||||
public string keyWord { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class StrPrimaryKeyParms
|
|
||||||
{
|
|
||||||
public string operaterId { get; set; }
|
|
||||||
public string primaryKey { get; set; }
|
|
||||||
|
|
||||||
public string operateUser { get; set; }
|
|
||||||
public string userIds { get; set; }
|
|
||||||
public string roleId { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class UserDeleteParms
|
|
||||||
{
|
|
||||||
public List<string> userIdList { get; set; }
|
|
||||||
|
|
||||||
public string currentUserId { get; set; }
|
|
||||||
public string operateUser { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.DTO.Parms
|
|
||||||
{
|
|
||||||
public class UserLoginParms
|
|
||||||
{
|
|
||||||
public string verifyCode { get; set; }
|
|
||||||
public string userName { get; set; }
|
|
||||||
public string password { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
namespace DH.RBAC.Model.Enum
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 权限类型。
|
|
||||||
/// </summary>
|
|
||||||
public class ModuleType
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 主菜单。
|
|
||||||
/// </summary>
|
|
||||||
public const int Menu = 2;
|
|
||||||
/// <summary>
|
|
||||||
/// 子菜单
|
|
||||||
/// </summary>
|
|
||||||
public const int SubMenu = 0;
|
|
||||||
/// <summary>
|
|
||||||
/// 按钮。
|
|
||||||
/// </summary>
|
|
||||||
public const int Button = 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
[SugarTable("Sys_Item")]
|
|
||||||
public partial class SysItem : BaseModelEntity
|
|
||||||
{
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "EnCode")]
|
|
||||||
public string EnCode { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "ParentId")]
|
|
||||||
public string ParentId { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Name")]
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Layer")]
|
|
||||||
public int? Layer { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "SortCode")]
|
|
||||||
public int? SortCode { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "IsTree")]
|
|
||||||
public string IsTree { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Remark")]
|
|
||||||
public string Remark { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
[SugarTable("Sys_ItemsDetail")]
|
|
||||||
public partial class SysItemDetail : BaseModelEntity
|
|
||||||
{
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "ItemId")]
|
|
||||||
public string ItemId { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "EnCode")]
|
|
||||||
public string EnCode { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Name")]
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "IsDefault")]
|
|
||||||
public string IsDefault { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "SortCode")]
|
|
||||||
public int? SortCode { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
|
|
||||||
[SugarTable("Sys_Log")]
|
|
||||||
public class SysLog : BaseModelEntity
|
|
||||||
{
|
|
||||||
[SugarColumn(IsPrimaryKey = true)]
|
|
||||||
public long Id { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn]
|
|
||||||
public string Type { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn]
|
|
||||||
public int ThreadId { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn]
|
|
||||||
public string Message { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn]
|
|
||||||
public DateTime CreateTime { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
[SugarTable("Sys_Organize")]
|
|
||||||
public partial class SysOrganize : BaseModelEntity
|
|
||||||
{
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "ParentId")]
|
|
||||||
public string ParentId { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Layer")]
|
|
||||||
public int? Layer { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "EnCode")]
|
|
||||||
public string EnCode { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "FullName")]
|
|
||||||
public string FullName { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Type")]
|
|
||||||
public int? Type { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "ManagerId")]
|
|
||||||
public string ManagerId { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "TelePhone")]
|
|
||||||
public string TelePhone { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "WeChat")]
|
|
||||||
public string WeChat { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Fax")]
|
|
||||||
public string Fax { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Email")]
|
|
||||||
public string Email { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Address")]
|
|
||||||
public string Address { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "SortCode")]
|
|
||||||
public int? SortCode { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Remark")]
|
|
||||||
public string Remark { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
|
|
||||||
[SugarTable("Sys_Permission")]
|
|
||||||
public partial class SysPermission : BaseModelEntity
|
|
||||||
{
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "ParentId")]
|
|
||||||
public string ParentId { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Layer")]
|
|
||||||
public int? Layer { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "EnCode")]
|
|
||||||
public string EnCode { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Name")]
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "JsEvent")]
|
|
||||||
public string JsEvent { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Icon")]
|
|
||||||
public string Icon { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "SymbolIndex")]
|
|
||||||
public int SymbolIndex { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Url")]
|
|
||||||
public string Url { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Remark")]
|
|
||||||
public string Remark { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Type")]
|
|
||||||
public int? Type { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "SortCode")]
|
|
||||||
public int? SortCode { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "IsPublic")]
|
|
||||||
public string IsPublic { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "IsEdit")]
|
|
||||||
public string IsEdit { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
[SugarTable("Sys_Role")]
|
|
||||||
public partial class SysRole : BaseModelEntity
|
|
||||||
{
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "OrganizeId")]
|
|
||||||
public string OrganizeId { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "EnCode")]
|
|
||||||
public string EnCode { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Type")]
|
|
||||||
public int? Type { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Name")]
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "AllowEdit")]
|
|
||||||
public string AllowEdit { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Remark")]
|
|
||||||
public string Remark { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "SortCode")]
|
|
||||||
public int? SortCode { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[Navigate(NavigateType.OneToOne, nameof(OrganizeId), nameof(SysOrganize.Id))]
|
|
||||||
public SysOrganize Organize { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string DeptName
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (Organize == null)
|
|
||||||
return "";
|
|
||||||
return Organize.FullName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
[SugarTable("Sys_RoleAuthorize")]
|
|
||||||
public partial class SysRoleAuthorize : BaseModelEntity
|
|
||||||
{
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "RoleId")]
|
|
||||||
public string RoleId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "ModuleId")]
|
|
||||||
public string ModuleId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
|
|
||||||
using DH.RBAC.Utility.Extension;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
[SugarTable("Sys_User")]
|
|
||||||
public partial class SysUser : BaseModelEntity
|
|
||||||
{
|
|
||||||
private SysOrganize organize;
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Account")]
|
|
||||||
public string Account { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "RealName")]
|
|
||||||
public string RealName { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "NickName")]
|
|
||||||
public string NickName { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Avatar")]
|
|
||||||
public string Avatar { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string AvatarBase64
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (Avatar.IsNullOrEmpty())
|
|
||||||
return "";
|
|
||||||
string filePath = MyEnvironment.RootPath("wwwroot" + Avatar);
|
|
||||||
if (!File.Exists(filePath))
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
return filePath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Gender")]
|
|
||||||
public string Gender { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string GenderStr
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return Gender == "1" ? "男" : "女";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Birthday")]
|
|
||||||
public DateTime? Birthday { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "MobilePhone")]
|
|
||||||
public string MobilePhone { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Email")]
|
|
||||||
public string Email { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Signature")]
|
|
||||||
public string Signature { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Address")]
|
|
||||||
public string Address { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "CompanyId")]
|
|
||||||
public string CompanyId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "SortCode")]
|
|
||||||
public int? SortCode { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "DepartmentId")]
|
|
||||||
public string DepartmentId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[Navigate(NavigateType.OneToOne, nameof(DepartmentId), nameof(SysOrganize.Id))]
|
|
||||||
public SysOrganize Organize { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string DeptName
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (Organize == null)
|
|
||||||
return "";
|
|
||||||
return Organize.FullName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string StrBirthday { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public List<string> RoleId { set; get; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string password { set; get; }
|
|
||||||
[SugarColumn(IsIgnore = true)]
|
|
||||||
public string roleIds { set; get; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
[SugarTable("Sys_UserLogOn")]
|
|
||||||
public partial class SysUserLogOn : BaseModelEntity
|
|
||||||
{
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "UserId")]
|
|
||||||
public string UserId { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Password")]
|
|
||||||
public string Password { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "SecretKey")]
|
|
||||||
public string SecretKey { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "PrevVisitTime")]
|
|
||||||
public DateTime? PrevVisitTime { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "LastVisitTime")]
|
|
||||||
public DateTime? LastVisitTime { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "ChangePwdTime")]
|
|
||||||
public DateTime? ChangePwdTime { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "LoginCount")]
|
|
||||||
public int LoginCount { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "AllowMultiUserOnline")]
|
|
||||||
public string AllowMultiUserOnline { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "IsOnLine")]
|
|
||||||
public string IsOnLine { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Question")]
|
|
||||||
public string Question { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "AnswerQuestion")]
|
|
||||||
public string AnswerQuestion { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "CheckIPAddress")]
|
|
||||||
public string CheckIPAddress { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Language")]
|
|
||||||
public string Language { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Theme")]
|
|
||||||
public string Theme { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.Model.Sys
|
|
||||||
{
|
|
||||||
|
|
||||||
[SugarTable("Sys_UserRoleRelation")]
|
|
||||||
public partial class SysUserRoleRelation : BaseModelEntity
|
|
||||||
{
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "UserId")]
|
|
||||||
public string UserId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[SugarColumn(ColumnName = "RoleId")]
|
|
||||||
public string RoleId { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
153
DH.RBAC/Properties/Resources.Designer.cs
generated
@@ -1,153 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// 此代码由工具生成。
|
|
||||||
// 运行时版本:4.0.30319.42000
|
|
||||||
//
|
|
||||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
|
||||||
// 重新生成代码,这些更改将会丢失。
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace DH.RBAC.Properties {
|
|
||||||
using System;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
|
||||||
/// </summary>
|
|
||||||
// 此类是由 StronglyTypedResourceBuilder
|
|
||||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
|
||||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
|
||||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
internal class Resources {
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
|
||||||
internal Resources() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 返回此类使用的缓存的 ResourceManager 实例。
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
|
||||||
get {
|
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(" DH.RBAC.Properties.Resources", typeof(Resources).Assembly);
|
|
||||||
resourceMan = temp;
|
|
||||||
}
|
|
||||||
return resourceMan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 重写当前线程的 CurrentUICulture 属性,对
|
|
||||||
/// 使用此强类型资源类的所有资源查找执行重写。
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Globalization.CultureInfo Culture {
|
|
||||||
get {
|
|
||||||
return resourceCulture;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
resourceCulture = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap avatar {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("avatar", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap back {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("back", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap background {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("background", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap login_back {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("login_back", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap logo {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("logo", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap logo2 {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("logo2", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap menu01 {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("menu01", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap menu02 {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("menu02", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap menu03 {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("menu03", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="login_back" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\login_back.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="back" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\back.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="logo2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\logo2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="background" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\background.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="menu02" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\menu02.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="avatar" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\avatar.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="menu01" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\menu01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="menu03" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\menu03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
114
DH.RBAC/RBACWindow.Designer.cs
generated
@@ -1,114 +0,0 @@
|
|||||||
namespace DH.RBAC
|
|
||||||
{
|
|
||||||
partial class RBACWindow
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
AntdUI.Tabs.StyleCard styleCard1 = new AntdUI.Tabs.StyleCard();
|
|
||||||
titlebar = new AntdUI.PageHeader();
|
|
||||||
lbName = new AntdUI.Label();
|
|
||||||
menu1 = new AntdUI.Menu();
|
|
||||||
tabs1 = new AntdUI.Tabs();
|
|
||||||
titlebar.SuspendLayout();
|
|
||||||
SuspendLayout();
|
|
||||||
//
|
|
||||||
// titlebar
|
|
||||||
//
|
|
||||||
titlebar.BackColor = System.Drawing.Color.FromArgb(46, 108, 227);
|
|
||||||
titlebar.Controls.Add(lbName);
|
|
||||||
titlebar.DividerShow = true;
|
|
||||||
titlebar.DividerThickness = 0F;
|
|
||||||
titlebar.Dock = System.Windows.Forms.DockStyle.Top;
|
|
||||||
titlebar.Font = new System.Drawing.Font("Microsoft YaHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 134);
|
|
||||||
titlebar.ForeColor = System.Drawing.Color.White;
|
|
||||||
titlebar.Location = new System.Drawing.Point(0, 0);
|
|
||||||
titlebar.Mode = AntdUI.TAMode.Dark;
|
|
||||||
titlebar.Name = "titlebar";
|
|
||||||
titlebar.ShowButton = true;
|
|
||||||
titlebar.ShowIcon = true;
|
|
||||||
titlebar.Size = new System.Drawing.Size(923, 40);
|
|
||||||
titlebar.SubText = "CCD光学筛选系统后台";
|
|
||||||
titlebar.TabIndex = 1;
|
|
||||||
titlebar.Text = "山东迭慧智能科技有限公司";
|
|
||||||
//
|
|
||||||
// lbName
|
|
||||||
//
|
|
||||||
lbName.Dock = System.Windows.Forms.DockStyle.Right;
|
|
||||||
lbName.ForeColor = System.Drawing.SystemColors.Window;
|
|
||||||
lbName.Location = new System.Drawing.Point(645, 0);
|
|
||||||
lbName.Name = "lbName";
|
|
||||||
lbName.Size = new System.Drawing.Size(134, 40);
|
|
||||||
lbName.TabIndex = 0;
|
|
||||||
lbName.Text = "";
|
|
||||||
lbName.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
|
||||||
//
|
|
||||||
// menu1
|
|
||||||
//
|
|
||||||
menu1.Dock = System.Windows.Forms.DockStyle.Left;
|
|
||||||
menu1.Location = new System.Drawing.Point(0, 40);
|
|
||||||
menu1.Name = "menu1";
|
|
||||||
menu1.Size = new System.Drawing.Size(169, 504);
|
|
||||||
menu1.TabIndex = 2;
|
|
||||||
menu1.Text = "menu1";
|
|
||||||
//
|
|
||||||
// tabs1
|
|
||||||
//
|
|
||||||
tabs1.BackColor = System.Drawing.SystemColors.Window;
|
|
||||||
tabs1.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
tabs1.Location = new System.Drawing.Point(169, 40);
|
|
||||||
tabs1.Name = "tabs1";
|
|
||||||
tabs1.Size = new System.Drawing.Size(754, 504);
|
|
||||||
styleCard1.Closable = true;
|
|
||||||
tabs1.Style = styleCard1;
|
|
||||||
tabs1.TabIndex = 6;
|
|
||||||
tabs1.Text = "tabs1";
|
|
||||||
tabs1.Type = AntdUI.TabType.Card;
|
|
||||||
//
|
|
||||||
// RBACWindow
|
|
||||||
//
|
|
||||||
AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
|
||||||
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
ClientSize = new System.Drawing.Size(923, 544);
|
|
||||||
Controls.Add(tabs1);
|
|
||||||
Controls.Add(menu1);
|
|
||||||
Controls.Add(titlebar);
|
|
||||||
Name = "RBACWindow";
|
|
||||||
StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
||||||
Text = "RBACWindow";
|
|
||||||
WindowState = System.Windows.Forms.FormWindowState.Maximized;
|
|
||||||
titlebar.ResumeLayout(false);
|
|
||||||
ResumeLayout(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private AntdUI.PageHeader titlebar;
|
|
||||||
private AntdUI.Label lbName;
|
|
||||||
private AntdUI.Menu menu1;
|
|
||||||
private AntdUI.Tabs tabs1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,204 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using AntdUI;
|
|
||||||
using DH.RBAC.Common;
|
|
||||||
using DH.RBAC.Logic.Sys;
|
|
||||||
using DH.RBAC.Model.Sys;
|
|
||||||
using DH.RBAC.Models.Base;
|
|
||||||
using DH.RBAC.Page;
|
|
||||||
using Sunny.UI;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace DH.RBAC
|
|
||||||
{
|
|
||||||
public partial class RBACWindow : Window
|
|
||||||
{
|
|
||||||
private SysUserLogic userLogic;
|
|
||||||
private SysPermissionLogic permissionLogic;
|
|
||||||
private List<Menu> pageList = new List<Menu>();
|
|
||||||
public RBACWindow()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
userLogic = new SysUserLogic();
|
|
||||||
permissionLogic = new SysPermissionLogic();
|
|
||||||
Load += RBACWindow_Load;
|
|
||||||
menu1.SelectChanged += Menu1_SelectChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 窗体对象实例
|
|
||||||
/// </summary>
|
|
||||||
private static RBACWindow _instance;
|
|
||||||
|
|
||||||
public static RBACWindow Instance
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_instance == null || _instance.IsDisposed)
|
|
||||||
_instance = new RBACWindow();
|
|
||||||
return _instance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RBACWindow_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
lbName.Text = GlobalConfig.CurrentUser.Account;
|
|
||||||
//设置关联
|
|
||||||
//Aside.TabControl = MainTabControl;
|
|
||||||
//获得用户权限
|
|
||||||
List<SysPermission> list;
|
|
||||||
if (userLogic.ContainsUser("admin", GlobalConfig.CurrentUser.Id))
|
|
||||||
{
|
|
||||||
list = permissionLogic.GetList();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
list = permissionLogic.GetList(GlobalConfig.CurrentUser.Id);
|
|
||||||
}
|
|
||||||
if (list.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "网络或服务器异常,请稍后重试!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
GlobalConfig.PermissionList = list;
|
|
||||||
|
|
||||||
//取出一级菜单
|
|
||||||
List<SysPermission> root = list.Where(it => it.ParentId == "0").ToList();
|
|
||||||
foreach (SysPermission permission in root)
|
|
||||||
{
|
|
||||||
MenuItem menuItem=new MenuItem();
|
|
||||||
menuItem.Text = permission.Name;
|
|
||||||
menu1.Items.Add(menuItem);
|
|
||||||
|
|
||||||
List<SysPermission> childList = list.Where(it => it.ParentId == permission.Id).ToList();
|
|
||||||
|
|
||||||
foreach (SysPermission child in childList)
|
|
||||||
{
|
|
||||||
MenuItem childmenuItem = new MenuItem();
|
|
||||||
childmenuItem.Text = child.Name;
|
|
||||||
childmenuItem.ID = child.EnCode;
|
|
||||||
childmenuItem.Tag=child.Id.ToString();
|
|
||||||
menuItem.Sub.Add(childmenuItem);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Menu1_SelectChanged(object sender, MenuSelectEventArgs e)
|
|
||||||
{
|
|
||||||
var clickedItem = e.Value as MenuItem;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (clickedItem?.ID == null) return;
|
|
||||||
|
|
||||||
string pageCode = clickedItem.ID; // 获取PageCode(如"sys-user")
|
|
||||||
string menuText = clickedItem.Text;
|
|
||||||
string permissionId= clickedItem.Tag.ToString();
|
|
||||||
// 查找是否已存在对应的TabPage
|
|
||||||
var existingTab = FindTabByPageCode(pageCode);
|
|
||||||
if (existingTab != null)
|
|
||||||
{
|
|
||||||
tabs1.SelectedTab = existingTab;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 动态创建控件并添加TabPage
|
|
||||||
MyPage control = CreateControlByPageCode(pageCode);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
control.ButtonPermissionList = GlobalConfig.PermissionList.Where(it => it.ParentId == permissionId).ToList();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
if (control == null)
|
|
||||||
{
|
|
||||||
AntdUI.Message.warn(this, "该菜单仅权限配置,无显示页面!", autoClose: 3);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
AddNewTab(control, menuText, pageCode);
|
|
||||||
|
|
||||||
}
|
|
||||||
private MyPage CreateControlByPageCode(string pageCode)
|
|
||||||
{
|
|
||||||
Type controlType = FindControlTypeByPageCode(pageCode);
|
|
||||||
if (controlType == null) return null;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// 获取接受 Form 参数的构造函数
|
|
||||||
var constructor = controlType.GetConstructor(new[] { typeof(Window) });
|
|
||||||
if (constructor != null)
|
|
||||||
{
|
|
||||||
return constructor.Invoke(new object[] { this }) as MyPage; // 传递当前窗体实例
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 如果未找到带 Form 参数的构造函数,尝试无参构造
|
|
||||||
return Activator.CreateInstance(controlType) as MyPage;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show($"创建页面失败: {ex.Message}");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private Type FindControlTypeByPageCode(string pageCode)
|
|
||||||
{
|
|
||||||
// 反射查找所有带有PageCodeAttribute的UserControl类型
|
|
||||||
var controlTypes = Assembly.GetExecutingAssembly().GetTypes()
|
|
||||||
.Where(t => t.IsSubclassOf(typeof(UserControl)) && !t.IsAbstract);
|
|
||||||
|
|
||||||
foreach (var type in controlTypes)
|
|
||||||
{
|
|
||||||
var attr = type.GetCustomAttribute<PageCodeAttribute>();
|
|
||||||
if (attr != null && attr.Encode == pageCode)
|
|
||||||
{
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
private void AddNewTab(UserControl control, string menuText, string pageCode)
|
|
||||||
{
|
|
||||||
AntdUI.TabPage tabPage = new AntdUI.TabPage
|
|
||||||
{
|
|
||||||
Text = menuText,
|
|
||||||
Tag = pageCode, // 可选:存储PageCode用于后续查找
|
|
||||||
ReadOnly = false
|
|
||||||
};
|
|
||||||
control.Dock = DockStyle.Fill;
|
|
||||||
AutoDpi(control); // DPI适配(如果有)
|
|
||||||
tabPage.Controls.Add(control);
|
|
||||||
tabs1.Pages.Add(tabPage);
|
|
||||||
tabs1.SelectedTab = tabPage;
|
|
||||||
}
|
|
||||||
|
|
||||||
private AntdUI.TabPage FindTabByPageCode(string pageCode)
|
|
||||||
{
|
|
||||||
return tabs1.Pages.OfType<AntdUI.TabPage>()
|
|
||||||
.FirstOrDefault(t => t.Tag?.ToString() == pageCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 373 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
87
DH.RBAC/UserControls/AccountControl.Designer.cs
generated
@@ -1,87 +0,0 @@
|
|||||||
namespace DH.RBAC.UserControls
|
|
||||||
{
|
|
||||||
partial class AccountControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
this.userAvatar = new Sunny.UI.UIAvatar();
|
|
||||||
this.lblUserName = new Sunny.UI.UILabel();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// userAvatar
|
|
||||||
//
|
|
||||||
this.userAvatar.Dock = System.Windows.Forms.DockStyle.Left;
|
|
||||||
this.userAvatar.FillColor = System.Drawing.Color.Transparent;
|
|
||||||
this.userAvatar.Font = new System.Drawing.Font("微软雅黑", 12F);
|
|
||||||
this.userAvatar.ForeColor = System.Drawing.Color.White;
|
|
||||||
this.userAvatar.Location = new System.Drawing.Point(0, 0);
|
|
||||||
this.userAvatar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
|
||||||
this.userAvatar.MinimumSize = new System.Drawing.Size(1, 1);
|
|
||||||
this.userAvatar.Name = "userAvatar";
|
|
||||||
this.userAvatar.Size = new System.Drawing.Size(55, 60);
|
|
||||||
this.userAvatar.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.userAvatar.TabIndex = 2;
|
|
||||||
this.userAvatar.Click += new System.EventHandler(this.userAvatar_Click);
|
|
||||||
this.userAvatar.MouseEnter += new System.EventHandler(this.lblUserName_MouseEnter);
|
|
||||||
this.userAvatar.MouseLeave += new System.EventHandler(this.userAvatar_Leave);
|
|
||||||
//
|
|
||||||
// lblUserName
|
|
||||||
//
|
|
||||||
this.lblUserName.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.lblUserName.Font = new System.Drawing.Font("微软雅黑", 12F);
|
|
||||||
this.lblUserName.ForeColor = System.Drawing.Color.White;
|
|
||||||
this.lblUserName.Location = new System.Drawing.Point(55, 0);
|
|
||||||
this.lblUserName.Name = "lblUserName";
|
|
||||||
this.lblUserName.Size = new System.Drawing.Size(122, 60);
|
|
||||||
this.lblUserName.Style = Sunny.UI.UIStyle.Custom;
|
|
||||||
this.lblUserName.TabIndex = 4;
|
|
||||||
this.lblUserName.Text = "Admin";
|
|
||||||
this.lblUserName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
this.lblUserName.Click += new System.EventHandler(this.userAvatar_Click);
|
|
||||||
this.lblUserName.MouseEnter += new System.EventHandler(this.lblUserName_MouseEnter);
|
|
||||||
this.lblUserName.MouseLeave += new System.EventHandler(this.userAvatar_Leave);
|
|
||||||
//
|
|
||||||
// AccountControl
|
|
||||||
//
|
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.BackColor = System.Drawing.Color.Gray;
|
|
||||||
this.Controls.Add(this.lblUserName);
|
|
||||||
this.Controls.Add(this.userAvatar);
|
|
||||||
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
|
||||||
this.Name = "AccountControl";
|
|
||||||
this.Size = new System.Drawing.Size(177, 60);
|
|
||||||
this.Load += new System.EventHandler(this.AccountControl_Load);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private Sunny.UI.UIAvatar userAvatar;
|
|
||||||
private Sunny.UI.UILabel lblUserName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
using DH.RBAC.Common;
|
|
||||||
using DH.RBAC.UserControls.Menus;
|
|
||||||
using PopupTool;
|
|
||||||
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 DH.RBAC.UserControls
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 用户自定义控件,弹出层显示
|
|
||||||
/// </summary>
|
|
||||||
public partial class AccountControl : UserControl
|
|
||||||
{
|
|
||||||
public AccountControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 界面加载时,显示信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void AccountControl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
lblUserName.Text = GlobalConfig.CurrentUser.NickName;
|
|
||||||
if (GlobalConfig.Avatar != null)
|
|
||||||
{
|
|
||||||
userAvatar.Icon = Sunny.UI.UIAvatar.UIIcon.Image;
|
|
||||||
userAvatar.Image = GlobalConfig.Avatar;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 鼠标放上去改变颜色
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void lblUserName_MouseEnter(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
userAvatar.BackColor = Color.FromArgb(176, 176, 176);
|
|
||||||
lblUserName.BackColor = Color.FromArgb(176, 176, 176);
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 鼠标离开时,颜色改回来
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void userAvatar_Leave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
userAvatar.BackColor = Color.Gray;
|
|
||||||
lblUserName.BackColor = Color.Gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 点下去后显示弹出层
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void userAvatar_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UserMenuPanel uc = new UserMenuPanel();
|
|
||||||
Popup pop = new Popup(uc);
|
|
||||||
pop.Show(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
</root>
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
|
|
||||||
using DH.RBAC;
|
|
||||||
using DH.RBAC.Utility.Other;
|
|
||||||
using Sunny.UI;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace DH.RBAC.UserControls.Menus
|
|
||||||
{
|
|
||||||
public class UserMenuPanel : UIPanel
|
|
||||||
{
|
|
||||||
public UserMenuPanel()
|
|
||||||
{
|
|
||||||
UISymbolLabel lblAccountManage = new UISymbolLabel();
|
|
||||||
lblAccountManage.ForeColor = Color.FromArgb(153, 153, 153);
|
|
||||||
|
|
||||||
lblAccountManage.Location = new Point(7, 7);
|
|
||||||
lblAccountManage.MinimumSize = new Size(1, 1);
|
|
||||||
lblAccountManage.Padding = new System.Windows.Forms.Padding(32, 0, 0, 0);
|
|
||||||
lblAccountManage.Size = new Size(122, 44);
|
|
||||||
lblAccountManage.Style = UIStyle.Custom;
|
|
||||||
lblAccountManage.StyleCustomMode = true;
|
|
||||||
lblAccountManage.Symbol = 61508;
|
|
||||||
lblAccountManage.SymbolColor = Color.FromArgb(153, 153, 153);
|
|
||||||
lblAccountManage.SymbolSize = 28;
|
|
||||||
lblAccountManage.Text = "账户管理";
|
|
||||||
lblAccountManage.Click += new EventHandler(this.lblAccountManage_Click);
|
|
||||||
lblAccountManage.MouseEnter += new EventHandler(this.uiSymbolLabel1_MouseEnter);
|
|
||||||
lblAccountManage.MouseLeave += new EventHandler(this.uiSymbolLabel1_MouseLeave);
|
|
||||||
|
|
||||||
|
|
||||||
UISymbolLabel lblExit = new UISymbolLabel();
|
|
||||||
lblExit.ForeColor = Color.FromArgb(153, 153, 153);
|
|
||||||
|
|
||||||
lblExit.Location = new Point(6, 62);
|
|
||||||
lblExit.Padding = new System.Windows.Forms.Padding(32, 0, 0, 0);
|
|
||||||
lblExit.Size = new Size(122, 44);
|
|
||||||
lblExit.Style = UIStyle.Custom;
|
|
||||||
lblExit.StyleCustomMode = true;
|
|
||||||
lblExit.Symbol = 61584;
|
|
||||||
lblExit.SymbolColor = Color.FromArgb(153, 153, 153);
|
|
||||||
lblExit.SymbolSize = 28;
|
|
||||||
lblExit.TabIndex = 15;
|
|
||||||
lblExit.Text = "安全退出";
|
|
||||||
lblExit.Click += new EventHandler(this.lblExit_Click);
|
|
||||||
lblExit.MouseEnter += new EventHandler(this.uiSymbolLabel1_MouseEnter);
|
|
||||||
lblExit.MouseLeave += new EventHandler(this.uiSymbolLabel1_MouseLeave);
|
|
||||||
|
|
||||||
this.Style = UIStyle.Custom;
|
|
||||||
this.StyleCustomMode = true;
|
|
||||||
this.Size = new Size(134, 114);
|
|
||||||
this.BackColor = Color.White;
|
|
||||||
this.FillColor = Color.White;
|
|
||||||
this.RectColor = Color.Silver;
|
|
||||||
this.Controls.Add(lblExit);
|
|
||||||
this.Controls.Add(lblAccountManage);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 账户管理点击事件处理
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void lblAccountManage_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
FormHelper.ShowSubForm(new AccountForm());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 鼠标进入按钮后,改变颜色
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void uiSymbolLabel1_MouseEnter(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UISymbolLabel label = sender as UISymbolLabel;
|
|
||||||
label.BackColor = Color.FromArgb(244, 244, 244);
|
|
||||||
label.ForeColor = Color.FromArgb(181, 181, 181);
|
|
||||||
label.SymbolColor = Color.FromArgb(181, 181, 181);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 鼠标离开按钮后,颜色改回来
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void uiSymbolLabel1_MouseLeave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UISymbolLabel label = sender as UISymbolLabel;
|
|
||||||
label.BackColor = Color.Transparent;
|
|
||||||
label.ForeColor = Color.FromArgb(153, 153, 153);
|
|
||||||
label.SymbolColor = Color.FromArgb(153, 153, 153);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 安全退出
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void lblExit_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//自己关闭,重新打开自己
|
|
||||||
new Thread(() =>
|
|
||||||
{
|
|
||||||
string fileName = Process.GetCurrentProcess().MainModule.FileName;
|
|
||||||
ProcessStartInfo processStartInfo = new ProcessStartInfo(fileName);
|
|
||||||
new Process { StartInfo = processStartInfo }.Start();
|
|
||||||
}).Start();
|
|
||||||
Thread.Sleep(100);
|
|
||||||
Environment.Exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
</root>
|
|
||||||