mirror of
https://github.com/eggplantlwj/VisionEdit.git
synced 2026-04-04 00:56:34 +08:00
1、添加手眼标定工具,可选择4点或者9点标定,输出标定矩阵
2、修正Halcon引擎运行工具 3、添加相机SDK工具,但需完善 4、HalconTool取图工具增加选择文件夹功能 5、实现Job窗体可添加多个流程
This commit is contained in:
338
EyeHandCalibTool/EyeHandCalib.cs
Normal file
338
EyeHandCalibTool/EyeHandCalib.cs
Normal file
@@ -0,0 +1,338 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using CommonMethods;
|
||||
using ToolBase;
|
||||
using ViewROI;
|
||||
using HalconDotNet;
|
||||
using System.Data;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using Logger;
|
||||
using static DataStruct.DataStructClass;
|
||||
|
||||
namespace EyeHandCalibTool
|
||||
{
|
||||
[Serializable]
|
||||
public class EyeHandCalib : IToolBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 仿射变换矩阵
|
||||
/// </summary>
|
||||
public HTuple homMat2D = new HTuple();
|
||||
/// <summary>
|
||||
/// 标定类型 四点标定|九点标定
|
||||
/// </summary>
|
||||
public CalibType calibType = CalibType.Four_Point;
|
||||
/// <summary>
|
||||
/// 标定表源数据
|
||||
/// </summary>
|
||||
public DataTable CalibSourceDataTable { get; set; } = null;
|
||||
/// <summary>
|
||||
/// 输入点信息
|
||||
/// </summary>
|
||||
public Point inputPoint = new Point();
|
||||
/// <summary>
|
||||
/// 输出点信息
|
||||
/// </summary>
|
||||
public Point outputPoint = new Point();
|
||||
/// <summary>
|
||||
/// 矩阵名称
|
||||
/// </summary>
|
||||
public string homMat2DName { get; set; } = Guid.NewGuid().ToString();
|
||||
/// <summary>
|
||||
/// X平移
|
||||
/// </summary>
|
||||
private HTuple _translateX = 0;
|
||||
internal HTuple TranslateX
|
||||
{
|
||||
get
|
||||
{
|
||||
_translateX = Math.Round((double)_translateX, 2);
|
||||
return _translateX;
|
||||
}
|
||||
set
|
||||
{
|
||||
value = Math.Round((double)value, 2);
|
||||
_translateX = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Y平移
|
||||
/// </summary>
|
||||
private HTuple _translateY = 0;
|
||||
internal HTuple TranslateY
|
||||
{
|
||||
get
|
||||
{
|
||||
_translateY = Math.Round((double)_translateY, 2);
|
||||
return _translateY;
|
||||
}
|
||||
set
|
||||
{
|
||||
value = Math.Round((double)value, 2);
|
||||
_translateY = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// X缩放
|
||||
/// </summary>
|
||||
private HTuple _scanX = 1;
|
||||
internal HTuple ScanX
|
||||
{
|
||||
get
|
||||
{
|
||||
_scanX = Math.Round((double)_scanX, 2);
|
||||
return _scanX;
|
||||
}
|
||||
set
|
||||
{
|
||||
value = Math.Round((double)value, 2);
|
||||
_scanX = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Y缩放
|
||||
/// </summary>
|
||||
private HTuple _scanY = 1;
|
||||
internal HTuple ScanY
|
||||
{
|
||||
get
|
||||
{
|
||||
_scanY = Math.Round((double)_scanY, 2);
|
||||
return _scanY;
|
||||
}
|
||||
set
|
||||
{
|
||||
value = Math.Round((double)value, 2);
|
||||
_scanY = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 角度旋转
|
||||
/// </summary>
|
||||
private HTuple _rotation = 0;
|
||||
internal HTuple Rotation
|
||||
{
|
||||
get
|
||||
{
|
||||
_rotation = Math.Round((double)_rotation, 2);
|
||||
return _rotation;
|
||||
}
|
||||
set
|
||||
{
|
||||
value = Math.Round((double)value, 2);
|
||||
_rotation = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 轴斜切
|
||||
/// </summary>
|
||||
private HTuple _theta = 0;
|
||||
internal HTuple Theta
|
||||
{
|
||||
get
|
||||
{
|
||||
_theta = Math.Round((double)_theta, 2);
|
||||
return _theta;
|
||||
}
|
||||
set
|
||||
{
|
||||
value = Math.Round((double)value, 2);
|
||||
_theta = value;
|
||||
}
|
||||
}
|
||||
|
||||
public override void DispImage()
|
||||
{
|
||||
// throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void DispMainWindow(HWindowTool_Smart window)
|
||||
{
|
||||
// throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void Run(SoftwareRunState softwareRunState)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 若首次加载且本地存在矩阵,优先读取本地
|
||||
if (File.Exists(homMat2DName) && homMat2D.Length == 0)
|
||||
{
|
||||
HOperatorSet.ReadTuple(homMat2DName, out homMat2D);
|
||||
}
|
||||
// 再次判断
|
||||
if (homMat2D.Length == 0)
|
||||
{
|
||||
runMessage = $"{FormEyeHandCalib.Instance.myToolInfo.FormToolName}未生成仿射矩阵工具,需要先标定标准!";
|
||||
toolRunStatu = ToolRunStatu.Tool_Run_Error;
|
||||
FormEyeHandCalib.Instance.SetToolStatus(runMessage, toolRunStatu);
|
||||
}
|
||||
else
|
||||
{
|
||||
HTuple tupOutX, tupOutY;
|
||||
HOperatorSet.AffineTransPoint2d(homMat2D, inputPoint.Row, inputPoint.Col, out tupOutX, out tupOutY);
|
||||
outputPoint.Row = tupOutX;
|
||||
outputPoint.Col = tupOutY;
|
||||
runMessage = $"{FormEyeHandCalib.Instance.myToolInfo.FormToolName}运行成功";
|
||||
toolRunStatu = ToolRunStatu.Succeed;
|
||||
FormEyeHandCalib.Instance.SetToolStatus(runMessage, toolRunStatu);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
runMessage = $"{FormEyeHandCalib.Instance.myToolInfo.FormToolName}运行出现异常";
|
||||
toolRunStatu = ToolRunStatu.Tool_Run_Error;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化标定数据源
|
||||
/// </summary>
|
||||
public void InitDataTable()
|
||||
{
|
||||
CalibSourceDataTable = new DataTable();
|
||||
//初始化DataTable,并将datatable绑定到DataGridView的数据源
|
||||
DataColumn c1 = new DataColumn("像素X", typeof(double));
|
||||
DataColumn c2 = new DataColumn("像素Y", typeof(double));
|
||||
DataColumn c3 = new DataColumn("机械X", typeof(double));
|
||||
DataColumn c4 = new DataColumn("机械Y", typeof(double));
|
||||
CalibSourceDataTable.Columns.Add(c1);
|
||||
CalibSourceDataTable.Columns.Add(c2);
|
||||
CalibSourceDataTable.Columns.Add(c3);
|
||||
CalibSourceDataTable.Columns.Add(c4);
|
||||
CalibSourceDataTable.Rows.Clear();
|
||||
for (int i = 0; i < (int)calibType; i++)
|
||||
{
|
||||
DataRow dr = CalibSourceDataTable.NewRow();
|
||||
dr[0] = 0;
|
||||
dr[1] = 50;
|
||||
dr[2] = 0;
|
||||
dr[3] = 50;
|
||||
CalibSourceDataTable.Rows.Add(dr);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 导入标定数据
|
||||
/// </summary>
|
||||
public void ReadCalibData()
|
||||
{
|
||||
OpenFileDialog digOpenFile = new OpenFileDialog();
|
||||
digOpenFile.FileName = string.Empty;
|
||||
digOpenFile.Title = "请选择表格文件";
|
||||
digOpenFile.Filter = "CSV文件(*.csv)|*.csv";
|
||||
if (digOpenFile.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string[] lines = File.ReadAllLines(digOpenFile.FileName, Encoding.Default);
|
||||
for (int i = 0; i < lines.Length; i++)
|
||||
{
|
||||
string[] data = Regex.Split(lines[i], ",");
|
||||
for (int j = 0; j < data.Length; j++)
|
||||
{
|
||||
CalibSourceDataTable.Rows[i][j] = data[j];
|
||||
if (j == 3) //只导入前四列
|
||||
break;
|
||||
}
|
||||
if (i == (int)calibType) //若标定类型为四点标定,则导入前四行,若为九点标定,则导入前九行
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 导出标定数据
|
||||
/// </summary>
|
||||
public void ExportCalibData()
|
||||
{
|
||||
try
|
||||
{
|
||||
SaveFileDialog dig_saveImage = new SaveFileDialog();
|
||||
dig_saveImage.FileName = "CalibData " + DateTime.Now.ToString("yyyy_MM_dd");
|
||||
dig_saveImage.Title = "请选择导出路径";
|
||||
dig_saveImage.Filter = "CSV文件(*.csv)|*.csv";
|
||||
if (dig_saveImage.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
File.Create(dig_saveImage.FileName).Close();
|
||||
string data = string.Empty;
|
||||
for (int i = 0; i <CalibSourceDataTable.Rows.Count; i++)
|
||||
{
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
data += CalibSourceDataTable.Rows[i][j];
|
||||
if (j < 3)
|
||||
data += ",";
|
||||
}
|
||||
data += Environment.NewLine;
|
||||
}
|
||||
File.AppendAllText(dig_saveImage.FileName, data, Encoding.Default);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LoggerClass.WriteLog("导出标定数据时出错", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public bool ManulCalib()
|
||||
{
|
||||
try
|
||||
{
|
||||
List<double> pixelRowList = new List<double>();
|
||||
List<double> pixelColList = new List<double>();
|
||||
List<double> MechanicalXList = new List<double>();
|
||||
List<double> MechanicalYList = new List<double>();
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < CalibSourceDataTable.Rows.Count; i++)
|
||||
{
|
||||
pixelRowList.Add(Convert.ToDouble(CalibSourceDataTable.Rows[i][0]));
|
||||
pixelColList.Add(Convert.ToDouble(CalibSourceDataTable.Rows[i][1]));
|
||||
MechanicalXList.Add(Convert.ToDouble(CalibSourceDataTable.Rows[i][2]));
|
||||
MechanicalYList.Add(Convert.ToDouble(CalibSourceDataTable.Rows[i][3]));
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
LoggerClass.WriteLog("标定失败,标定数据异常(错误代码:12901)", ex);
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
HTuple pixelRow = new HTuple(pixelRowList.ToArray());
|
||||
HTuple pixelCol = new HTuple(pixelColList.ToArray());
|
||||
HTuple mechanicalX = new HTuple(MechanicalXList.ToArray());
|
||||
HTuple mechanicalY = new HTuple(MechanicalYList.ToArray());
|
||||
HOperatorSet.VectorToHomMat2d(pixelRow, pixelCol, mechanicalX, mechanicalY, out homMat2D);
|
||||
}
|
||||
catch(HalconException ex)
|
||||
{
|
||||
LoggerClass.WriteLog("标定失败,标定数据异常,无法确定仿射变换关系(错误代码:12902)", ex);
|
||||
return false;
|
||||
}
|
||||
HOperatorSet.HomMat2dToAffinePar(homMat2D, out _scanX, out _scanY, out _rotation, out _theta, out _translateX, out _translateY);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoggerClass.WriteLog("手动标定出现异常", ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 标定类型 四点|九点
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public enum CalibType
|
||||
{
|
||||
Four_Point = 4,
|
||||
Nine_Point = 9,
|
||||
}
|
||||
}
|
||||
19
EyeHandCalibTool/EyeHandCalibRun.cs
Normal file
19
EyeHandCalibTool/EyeHandCalibRun.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using CommonMethods.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using CommonMethods;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace EyeHandCalibTool
|
||||
{
|
||||
public class EyeHandCalibRun : IToolRun
|
||||
{
|
||||
public void ToolRun(string jobName, int toolIndex, int inputItemNum, TreeNode selectNode, List<IToolInfo> L_toolList)
|
||||
{
|
||||
// throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
106
EyeHandCalibTool/EyeHandCalibTool.csproj
Normal file
106
EyeHandCalibTool/EyeHandCalibTool.csproj
Normal file
@@ -0,0 +1,106 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{46EE89BB-5EC9-4EAD-9E32-3E57288A0BF7}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>EyeHandCalibTool</RootNamespace>
|
||||
<AssemblyName>EyeHandCalibTool</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="halcondotnet">
|
||||
<HintPath>C:\Program Files\MVTec\HALCON-19.05-Progress\bin\dotnet20\halcondotnet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SunnyUI">
|
||||
<HintPath>..\VisionEdit\bin\Debug\ThirdLib\SunnyUI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="EyeHandCalib.cs" />
|
||||
<Compile Include="EyeHandCalibRun.cs" />
|
||||
<Compile Include="FormEyeHandCalib.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormEyeHandCalib.Designer.cs">
|
||||
<DependentUpon>FormEyeHandCalib.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="FormEyeHandCalib.resx">
|
||||
<DependentUpon>FormEyeHandCalib.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CommonMethods\CommonHelper.csproj">
|
||||
<Project>{1c8d0ddc-2086-48a9-9586-f2b643e2fc54}</Project>
|
||||
<Name>CommonHelper</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\DataStruct\DataStruct.csproj">
|
||||
<Project>{df3d4d4c-02df-4f92-9fd4-0a861f64b0ef}</Project>
|
||||
<Name>DataStruct</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\ImageWindow\HWindow_Tool.csproj">
|
||||
<Project>{9baa53fd-89b5-43e2-ac59-a27b006debb6}</Project>
|
||||
<Name>HWindow_Tool</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\ToolBase\ToolBase.csproj">
|
||||
<Project>{7cd50b44-bf56-4e8e-8fa1-05f6968c1835}</Project>
|
||||
<Name>ToolBase</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\ToolLib.Log\Logger\Logger.csproj">
|
||||
<Project>{d4e052b9-e541-4b67-a1f9-273073ef1d4b}</Project>
|
||||
<Name>Logger</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
609
EyeHandCalibTool/FormEyeHandCalib.Designer.cs
generated
Normal file
609
EyeHandCalibTool/FormEyeHandCalib.Designer.cs
generated
Normal file
@@ -0,0 +1,609 @@
|
||||
namespace EyeHandCalibTool
|
||||
{
|
||||
partial class FormEyeHandCalib
|
||||
{
|
||||
/// <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(FormEyeHandCalib));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbtRunTool = new System.Windows.Forms.ToolStripButton();
|
||||
this.statusStrip = new System.Windows.Forms.StatusStrip();
|
||||
this.lb_RunStatus = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.lb_RunTime = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.uiGroupBox1 = new Sunny.UI.UIGroupBox();
|
||||
this.uiLabel1 = new Sunny.UI.UILabel();
|
||||
this.chbSelectCalibType = new Sunny.UI.UIComboBox();
|
||||
this.uiPanel1 = new Sunny.UI.UIPanel();
|
||||
this.CalibDataGrid = new Sunny.UI.UIDataGridView();
|
||||
this.btnImportData = new Sunny.UI.UISymbolButton();
|
||||
this.btnExportData = new Sunny.UI.UISymbolButton();
|
||||
this.uiTabControl1 = new Sunny.UI.UITabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.btnCalibAuto = new Sunny.UI.UISymbolButton();
|
||||
this.btnCalibManual = new Sunny.UI.UISymbolButton();
|
||||
this.txbTheta = new Sunny.UI.UITextBox();
|
||||
this.txbRatation = new Sunny.UI.UITextBox();
|
||||
this.txbScaleY = new Sunny.UI.UITextBox();
|
||||
this.txbScaleX = new Sunny.UI.UITextBox();
|
||||
this.txbMoveY = new Sunny.UI.UITextBox();
|
||||
this.txbMoveX = new Sunny.UI.UITextBox();
|
||||
this.uiLabel7 = new Sunny.UI.UILabel();
|
||||
this.uiLabel6 = new Sunny.UI.UILabel();
|
||||
this.uiLabel5 = new Sunny.UI.UILabel();
|
||||
this.uiLabel4 = new Sunny.UI.UILabel();
|
||||
this.uiLabel3 = new Sunny.UI.UILabel();
|
||||
this.uiLabel2 = new Sunny.UI.UILabel();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.statusStrip.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.uiGroupBox1.SuspendLayout();
|
||||
this.uiPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.CalibDataGrid)).BeginInit();
|
||||
this.uiTabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(25, 25);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbtRunTool});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(823, 32);
|
||||
this.toolStrip1.TabIndex = 5;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// tsbtRunTool
|
||||
//
|
||||
this.tsbtRunTool.Image = ((System.Drawing.Image)(resources.GetObject("tsbtRunTool.Image")));
|
||||
this.tsbtRunTool.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtRunTool.Name = "tsbtRunTool";
|
||||
this.tsbtRunTool.Size = new System.Drawing.Size(85, 29);
|
||||
this.tsbtRunTool.Text = "运行工具";
|
||||
this.tsbtRunTool.Click += new System.EventHandler(this.tsbtRunTool_Click);
|
||||
//
|
||||
// statusStrip
|
||||
//
|
||||
this.statusStrip.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.lb_RunStatus,
|
||||
this.toolStripStatusLabel1,
|
||||
this.lb_RunTime});
|
||||
this.statusStrip.Location = new System.Drawing.Point(0, 500);
|
||||
this.statusStrip.Name = "statusStrip";
|
||||
this.statusStrip.Size = new System.Drawing.Size(823, 22);
|
||||
this.statusStrip.TabIndex = 4;
|
||||
//
|
||||
// lb_RunStatus
|
||||
//
|
||||
this.lb_RunStatus.Name = "lb_RunStatus";
|
||||
this.lb_RunStatus.Size = new System.Drawing.Size(0, 17);
|
||||
//
|
||||
// toolStripStatusLabel1
|
||||
//
|
||||
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
|
||||
this.toolStripStatusLabel1.Size = new System.Drawing.Size(16, 17);
|
||||
this.toolStripStatusLabel1.Text = " ";
|
||||
//
|
||||
// lb_RunTime
|
||||
//
|
||||
this.lb_RunTime.Name = "lb_RunTime";
|
||||
this.lb_RunTime.Size = new System.Drawing.Size(0, 17);
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 32);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.CalibDataGrid);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.uiPanel1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.uiGroupBox1);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.uiTabControl1);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(823, 468);
|
||||
this.splitContainer1.SplitterDistance = 542;
|
||||
this.splitContainer1.TabIndex = 6;
|
||||
//
|
||||
// uiGroupBox1
|
||||
//
|
||||
this.uiGroupBox1.BackColor = System.Drawing.Color.White;
|
||||
this.uiGroupBox1.Controls.Add(this.uiLabel1);
|
||||
this.uiGroupBox1.Controls.Add(this.chbSelectCalibType);
|
||||
this.uiGroupBox1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.uiGroupBox1.FillColor = System.Drawing.Color.White;
|
||||
this.uiGroupBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiGroupBox1.IsScaled = false;
|
||||
this.uiGroupBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.uiGroupBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.uiGroupBox1.MinimumSize = new System.Drawing.Size(1, 1);
|
||||
this.uiGroupBox1.Name = "uiGroupBox1";
|
||||
this.uiGroupBox1.Padding = new System.Windows.Forms.Padding(0, 32, 0, 0);
|
||||
this.uiGroupBox1.Size = new System.Drawing.Size(542, 82);
|
||||
this.uiGroupBox1.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiGroupBox1.TabIndex = 26;
|
||||
this.uiGroupBox1.Text = "选择标定模式";
|
||||
this.uiGroupBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// uiLabel1
|
||||
//
|
||||
this.uiLabel1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiLabel1.Location = new System.Drawing.Point(12, 38);
|
||||
this.uiLabel1.Name = "uiLabel1";
|
||||
this.uiLabel1.Size = new System.Drawing.Size(96, 23);
|
||||
this.uiLabel1.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiLabel1.TabIndex = 26;
|
||||
this.uiLabel1.Text = "标定类型:";
|
||||
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// chbSelectCalibType
|
||||
//
|
||||
this.chbSelectCalibType.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.chbSelectCalibType.DataSource = null;
|
||||
this.chbSelectCalibType.FillColor = System.Drawing.Color.White;
|
||||
this.chbSelectCalibType.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.chbSelectCalibType.IsScaled = false;
|
||||
this.chbSelectCalibType.Items.AddRange(new object[] {
|
||||
"四点标定",
|
||||
"九点标定"});
|
||||
this.chbSelectCalibType.Location = new System.Drawing.Point(146, 38);
|
||||
this.chbSelectCalibType.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.chbSelectCalibType.MinimumSize = new System.Drawing.Size(63, 0);
|
||||
this.chbSelectCalibType.Name = "chbSelectCalibType";
|
||||
this.chbSelectCalibType.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
|
||||
this.chbSelectCalibType.Size = new System.Drawing.Size(285, 29);
|
||||
this.chbSelectCalibType.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.chbSelectCalibType.TabIndex = 25;
|
||||
this.chbSelectCalibType.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.chbSelectCalibType.SelectedIndexChanged += new System.EventHandler(this.chbSelectCalibType_SelectedIndexChanged);
|
||||
//
|
||||
// uiPanel1
|
||||
//
|
||||
this.uiPanel1.Controls.Add(this.btnExportData);
|
||||
this.uiPanel1.Controls.Add(this.btnImportData);
|
||||
this.uiPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.uiPanel1.FillColor = System.Drawing.Color.White;
|
||||
this.uiPanel1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiPanel1.IsScaled = false;
|
||||
this.uiPanel1.Location = new System.Drawing.Point(0, 418);
|
||||
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.Size = new System.Drawing.Size(542, 50);
|
||||
this.uiPanel1.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiPanel1.TabIndex = 27;
|
||||
this.uiPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// CalibDataGrid
|
||||
//
|
||||
this.CalibDataGrid.AllowUserToAddRows = false;
|
||||
dataGridViewCellStyle9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
||||
this.CalibDataGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle9;
|
||||
this.CalibDataGrid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
|
||||
this.CalibDataGrid.BackgroundColor = System.Drawing.Color.White;
|
||||
this.CalibDataGrid.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
|
||||
dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
dataGridViewCellStyle10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
||||
dataGridViewCellStyle10.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle10.ForeColor = System.Drawing.Color.White;
|
||||
dataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.CalibDataGrid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle10;
|
||||
this.CalibDataGrid.ColumnHeadersHeight = 32;
|
||||
this.CalibDataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
|
||||
this.CalibDataGrid.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.CalibDataGrid.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter;
|
||||
this.CalibDataGrid.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.CalibDataGrid.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
||||
this.CalibDataGrid.Location = new System.Drawing.Point(0, 82);
|
||||
this.CalibDataGrid.Name = "CalibDataGrid";
|
||||
dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
|
||||
dataGridViewCellStyle11.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
|
||||
dataGridViewCellStyle11.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
|
||||
dataGridViewCellStyle11.SelectionForeColor = System.Drawing.Color.White;
|
||||
dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.CalibDataGrid.RowHeadersDefaultCellStyle = dataGridViewCellStyle11;
|
||||
dataGridViewCellStyle12.BackColor = System.Drawing.Color.White;
|
||||
this.CalibDataGrid.RowsDefaultCellStyle = dataGridViewCellStyle12;
|
||||
this.CalibDataGrid.RowTemplate.Height = 23;
|
||||
this.CalibDataGrid.SelectedIndex = -1;
|
||||
this.CalibDataGrid.ShowGridLine = true;
|
||||
this.CalibDataGrid.Size = new System.Drawing.Size(542, 336);
|
||||
this.CalibDataGrid.TabIndex = 28;
|
||||
this.CalibDataGrid.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.CalibDataGrid_RowPostPaint);
|
||||
//
|
||||
// btnImportData
|
||||
//
|
||||
this.btnImportData.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnImportData.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnImportData.IsScaled = false;
|
||||
this.btnImportData.Location = new System.Drawing.Point(86, 6);
|
||||
this.btnImportData.MinimumSize = new System.Drawing.Size(1, 1);
|
||||
this.btnImportData.Name = "btnImportData";
|
||||
this.btnImportData.Size = new System.Drawing.Size(114, 35);
|
||||
this.btnImportData.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.btnImportData.Symbol = 61568;
|
||||
this.btnImportData.TabIndex = 0;
|
||||
this.btnImportData.Text = "数据导入";
|
||||
this.btnImportData.Click += new System.EventHandler(this.btnImportData_Click);
|
||||
//
|
||||
// btnExportData
|
||||
//
|
||||
this.btnExportData.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnExportData.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnExportData.IsScaled = false;
|
||||
this.btnExportData.Location = new System.Drawing.Point(273, 6);
|
||||
this.btnExportData.MinimumSize = new System.Drawing.Size(1, 1);
|
||||
this.btnExportData.Name = "btnExportData";
|
||||
this.btnExportData.Size = new System.Drawing.Size(114, 35);
|
||||
this.btnExportData.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.btnExportData.Symbol = 61584;
|
||||
this.btnExportData.TabIndex = 0;
|
||||
this.btnExportData.Text = "数据导出";
|
||||
this.btnExportData.Click += new System.EventHandler(this.btnExportData_Click);
|
||||
//
|
||||
// uiTabControl1
|
||||
//
|
||||
this.uiTabControl1.Controls.Add(this.tabPage1);
|
||||
this.uiTabControl1.Controls.Add(this.tabPage2);
|
||||
this.uiTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.uiTabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
|
||||
this.uiTabControl1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiTabControl1.ItemSize = new System.Drawing.Size(100, 40);
|
||||
this.uiTabControl1.Location = new System.Drawing.Point(0, 0);
|
||||
this.uiTabControl1.MainPage = "";
|
||||
this.uiTabControl1.Name = "uiTabControl1";
|
||||
this.uiTabControl1.SelectedIndex = 0;
|
||||
this.uiTabControl1.Size = new System.Drawing.Size(277, 468);
|
||||
this.uiTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
|
||||
this.uiTabControl1.TabIndex = 0;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.BackColor = System.Drawing.Color.White;
|
||||
this.tabPage1.Controls.Add(this.btnCalibAuto);
|
||||
this.tabPage1.Controls.Add(this.btnCalibManual);
|
||||
this.tabPage1.Controls.Add(this.txbTheta);
|
||||
this.tabPage1.Controls.Add(this.txbRatation);
|
||||
this.tabPage1.Controls.Add(this.txbScaleY);
|
||||
this.tabPage1.Controls.Add(this.txbScaleX);
|
||||
this.tabPage1.Controls.Add(this.txbMoveY);
|
||||
this.tabPage1.Controls.Add(this.txbMoveX);
|
||||
this.tabPage1.Controls.Add(this.uiLabel7);
|
||||
this.tabPage1.Controls.Add(this.uiLabel6);
|
||||
this.tabPage1.Controls.Add(this.uiLabel5);
|
||||
this.tabPage1.Controls.Add(this.uiLabel4);
|
||||
this.tabPage1.Controls.Add(this.uiLabel3);
|
||||
this.tabPage1.Controls.Add(this.uiLabel2);
|
||||
this.tabPage1.Location = new System.Drawing.Point(0, 40);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Size = new System.Drawing.Size(277, 428);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "标定结果";
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(0, 40);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Size = new System.Drawing.Size(277, 428);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "转换结果";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnCalibAuto
|
||||
//
|
||||
this.btnCalibAuto.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnCalibAuto.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnCalibAuto.IsScaled = false;
|
||||
this.btnCalibAuto.Location = new System.Drawing.Point(151, 352);
|
||||
this.btnCalibAuto.MinimumSize = new System.Drawing.Size(1, 1);
|
||||
this.btnCalibAuto.Name = "btnCalibAuto";
|
||||
this.btnCalibAuto.Size = new System.Drawing.Size(103, 35);
|
||||
this.btnCalibAuto.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.btnCalibAuto.Symbol = 261778;
|
||||
this.btnCalibAuto.TabIndex = 15;
|
||||
this.btnCalibAuto.Text = "自动标定";
|
||||
//
|
||||
// btnCalibManual
|
||||
//
|
||||
this.btnCalibManual.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnCalibManual.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnCalibManual.IsScaled = false;
|
||||
this.btnCalibManual.Location = new System.Drawing.Point(23, 352);
|
||||
this.btnCalibManual.MinimumSize = new System.Drawing.Size(1, 1);
|
||||
this.btnCalibManual.Name = "btnCalibManual";
|
||||
this.btnCalibManual.Size = new System.Drawing.Size(103, 35);
|
||||
this.btnCalibManual.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.btnCalibManual.Symbol = 363128;
|
||||
this.btnCalibManual.TabIndex = 16;
|
||||
this.btnCalibManual.Text = "手动标定";
|
||||
this.btnCalibManual.Click += new System.EventHandler(this.btnCalibManual_Click);
|
||||
//
|
||||
// txbTheta
|
||||
//
|
||||
this.txbTheta.ButtonSymbol = 61761;
|
||||
this.txbTheta.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.txbTheta.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.txbTheta.IsScaled = false;
|
||||
this.txbTheta.Location = new System.Drawing.Point(104, 292);
|
||||
this.txbTheta.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.txbTheta.Maximum = 2147483647D;
|
||||
this.txbTheta.Minimum = -2147483648D;
|
||||
this.txbTheta.MinimumSize = new System.Drawing.Size(1, 16);
|
||||
this.txbTheta.Name = "txbTheta";
|
||||
this.txbTheta.Size = new System.Drawing.Size(150, 29);
|
||||
this.txbTheta.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.txbTheta.TabIndex = 9;
|
||||
this.txbTheta.Text = "0";
|
||||
this.txbTheta.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// txbRatation
|
||||
//
|
||||
this.txbRatation.ButtonSymbol = 61761;
|
||||
this.txbRatation.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.txbRatation.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.txbRatation.IsScaled = false;
|
||||
this.txbRatation.Location = new System.Drawing.Point(104, 242);
|
||||
this.txbRatation.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.txbRatation.Maximum = 2147483647D;
|
||||
this.txbRatation.Minimum = -2147483648D;
|
||||
this.txbRatation.MinimumSize = new System.Drawing.Size(1, 16);
|
||||
this.txbRatation.Name = "txbRatation";
|
||||
this.txbRatation.Size = new System.Drawing.Size(150, 29);
|
||||
this.txbRatation.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.txbRatation.TabIndex = 10;
|
||||
this.txbRatation.Text = "0";
|
||||
this.txbRatation.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// txbScaleY
|
||||
//
|
||||
this.txbScaleY.ButtonSymbol = 61761;
|
||||
this.txbScaleY.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.txbScaleY.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.txbScaleY.IsScaled = false;
|
||||
this.txbScaleY.Location = new System.Drawing.Point(104, 192);
|
||||
this.txbScaleY.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.txbScaleY.Maximum = 2147483647D;
|
||||
this.txbScaleY.Minimum = -2147483648D;
|
||||
this.txbScaleY.MinimumSize = new System.Drawing.Size(1, 16);
|
||||
this.txbScaleY.Name = "txbScaleY";
|
||||
this.txbScaleY.Size = new System.Drawing.Size(150, 29);
|
||||
this.txbScaleY.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.txbScaleY.TabIndex = 11;
|
||||
this.txbScaleY.Text = "0";
|
||||
this.txbScaleY.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// txbScaleX
|
||||
//
|
||||
this.txbScaleX.ButtonSymbol = 61761;
|
||||
this.txbScaleX.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.txbScaleX.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.txbScaleX.IsScaled = false;
|
||||
this.txbScaleX.Location = new System.Drawing.Point(104, 142);
|
||||
this.txbScaleX.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.txbScaleX.Maximum = 2147483647D;
|
||||
this.txbScaleX.Minimum = -2147483648D;
|
||||
this.txbScaleX.MinimumSize = new System.Drawing.Size(1, 16);
|
||||
this.txbScaleX.Name = "txbScaleX";
|
||||
this.txbScaleX.Size = new System.Drawing.Size(150, 29);
|
||||
this.txbScaleX.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.txbScaleX.TabIndex = 12;
|
||||
this.txbScaleX.Text = "0";
|
||||
this.txbScaleX.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// txbMoveY
|
||||
//
|
||||
this.txbMoveY.ButtonSymbol = 61761;
|
||||
this.txbMoveY.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.txbMoveY.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.txbMoveY.IsScaled = false;
|
||||
this.txbMoveY.Location = new System.Drawing.Point(104, 92);
|
||||
this.txbMoveY.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.txbMoveY.Maximum = 2147483647D;
|
||||
this.txbMoveY.Minimum = -2147483648D;
|
||||
this.txbMoveY.MinimumSize = new System.Drawing.Size(1, 16);
|
||||
this.txbMoveY.Name = "txbMoveY";
|
||||
this.txbMoveY.Size = new System.Drawing.Size(150, 29);
|
||||
this.txbMoveY.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.txbMoveY.TabIndex = 13;
|
||||
this.txbMoveY.Text = "0";
|
||||
this.txbMoveY.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// txbMoveX
|
||||
//
|
||||
this.txbMoveX.ButtonSymbol = 61761;
|
||||
this.txbMoveX.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.txbMoveX.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.txbMoveX.IsScaled = false;
|
||||
this.txbMoveX.Location = new System.Drawing.Point(104, 42);
|
||||
this.txbMoveX.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.txbMoveX.Maximum = 2147483647D;
|
||||
this.txbMoveX.Minimum = -2147483648D;
|
||||
this.txbMoveX.MinimumSize = new System.Drawing.Size(1, 16);
|
||||
this.txbMoveX.Name = "txbMoveX";
|
||||
this.txbMoveX.Size = new System.Drawing.Size(150, 29);
|
||||
this.txbMoveX.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.txbMoveX.TabIndex = 14;
|
||||
this.txbMoveX.Text = "0";
|
||||
this.txbMoveX.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// uiLabel7
|
||||
//
|
||||
this.uiLabel7.BackColor = System.Drawing.Color.White;
|
||||
this.uiLabel7.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiLabel7.Location = new System.Drawing.Point(24, 292);
|
||||
this.uiLabel7.Name = "uiLabel7";
|
||||
this.uiLabel7.Size = new System.Drawing.Size(73, 23);
|
||||
this.uiLabel7.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiLabel7.TabIndex = 3;
|
||||
this.uiLabel7.Text = "斜切:";
|
||||
this.uiLabel7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// uiLabel6
|
||||
//
|
||||
this.uiLabel6.BackColor = System.Drawing.Color.White;
|
||||
this.uiLabel6.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiLabel6.Location = new System.Drawing.Point(24, 242);
|
||||
this.uiLabel6.Name = "uiLabel6";
|
||||
this.uiLabel6.Size = new System.Drawing.Size(73, 23);
|
||||
this.uiLabel6.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiLabel6.TabIndex = 4;
|
||||
this.uiLabel6.Text = "旋转:";
|
||||
this.uiLabel6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// uiLabel5
|
||||
//
|
||||
this.uiLabel5.BackColor = System.Drawing.Color.White;
|
||||
this.uiLabel5.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiLabel5.Location = new System.Drawing.Point(24, 192);
|
||||
this.uiLabel5.Name = "uiLabel5";
|
||||
this.uiLabel5.Size = new System.Drawing.Size(73, 23);
|
||||
this.uiLabel5.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiLabel5.TabIndex = 5;
|
||||
this.uiLabel5.Text = "缩放Y:";
|
||||
this.uiLabel5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// uiLabel4
|
||||
//
|
||||
this.uiLabel4.BackColor = System.Drawing.Color.White;
|
||||
this.uiLabel4.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiLabel4.Location = new System.Drawing.Point(24, 142);
|
||||
this.uiLabel4.Name = "uiLabel4";
|
||||
this.uiLabel4.Size = new System.Drawing.Size(73, 23);
|
||||
this.uiLabel4.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiLabel4.TabIndex = 6;
|
||||
this.uiLabel4.Text = "缩放X:";
|
||||
this.uiLabel4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// uiLabel3
|
||||
//
|
||||
this.uiLabel3.BackColor = System.Drawing.Color.White;
|
||||
this.uiLabel3.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiLabel3.Location = new System.Drawing.Point(24, 92);
|
||||
this.uiLabel3.Name = "uiLabel3";
|
||||
this.uiLabel3.Size = new System.Drawing.Size(73, 23);
|
||||
this.uiLabel3.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiLabel3.TabIndex = 7;
|
||||
this.uiLabel3.Text = "平移Y:";
|
||||
this.uiLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// uiLabel2
|
||||
//
|
||||
this.uiLabel2.BackColor = System.Drawing.Color.White;
|
||||
this.uiLabel2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiLabel2.Location = new System.Drawing.Point(24, 42);
|
||||
this.uiLabel2.Name = "uiLabel2";
|
||||
this.uiLabel2.Size = new System.Drawing.Size(73, 23);
|
||||
this.uiLabel2.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiLabel2.TabIndex = 8;
|
||||
this.uiLabel2.Text = "平移X:";
|
||||
this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// FormEyeHandCalib
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(823, 522);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Controls.Add(this.statusStrip);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "FormEyeHandCalib";
|
||||
this.Text = "手眼标定工具";
|
||||
this.Load += new System.EventHandler(this.FormEyeHandCalib_Load);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.statusStrip.ResumeLayout(false);
|
||||
this.statusStrip.PerformLayout();
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.uiGroupBox1.ResumeLayout(false);
|
||||
this.uiPanel1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.CalibDataGrid)).EndInit();
|
||||
this.uiTabControl1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tsbtRunTool;
|
||||
private System.Windows.Forms.StatusStrip statusStrip;
|
||||
private System.Windows.Forms.ToolStripStatusLabel lb_RunStatus;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel lb_RunTime;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private Sunny.UI.UIComboBox chbSelectCalibType;
|
||||
private Sunny.UI.UIGroupBox uiGroupBox1;
|
||||
private Sunny.UI.UILabel uiLabel1;
|
||||
private Sunny.UI.UIDataGridView CalibDataGrid;
|
||||
private Sunny.UI.UIPanel uiPanel1;
|
||||
private Sunny.UI.UISymbolButton btnExportData;
|
||||
private Sunny.UI.UISymbolButton btnImportData;
|
||||
private Sunny.UI.UITabControl uiTabControl1;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private Sunny.UI.UISymbolButton btnCalibAuto;
|
||||
private Sunny.UI.UISymbolButton btnCalibManual;
|
||||
private Sunny.UI.UITextBox txbTheta;
|
||||
private Sunny.UI.UITextBox txbRatation;
|
||||
private Sunny.UI.UITextBox txbScaleY;
|
||||
public Sunny.UI.UITextBox txbScaleX;
|
||||
public Sunny.UI.UITextBox txbMoveY;
|
||||
public Sunny.UI.UITextBox txbMoveX;
|
||||
private Sunny.UI.UILabel uiLabel7;
|
||||
private Sunny.UI.UILabel uiLabel6;
|
||||
private Sunny.UI.UILabel uiLabel5;
|
||||
private Sunny.UI.UILabel uiLabel4;
|
||||
private Sunny.UI.UILabel uiLabel3;
|
||||
private Sunny.UI.UILabel uiLabel2;
|
||||
}
|
||||
}
|
||||
174
EyeHandCalibTool/FormEyeHandCalib.cs
Normal file
174
EyeHandCalibTool/FormEyeHandCalib.cs
Normal file
@@ -0,0 +1,174 @@
|
||||
using CommonMethods;
|
||||
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;
|
||||
using ViewROI;
|
||||
|
||||
namespace EyeHandCalibTool
|
||||
{
|
||||
public partial class FormEyeHandCalib : Form
|
||||
{
|
||||
public EyeHandCalib myEyeHandCalib = null;
|
||||
public IToolInfo myToolInfo = new IToolInfo();
|
||||
public HWindowTool_Smart myHwindow = new HWindowTool_Smart();
|
||||
public HDrawingObject selected_drawing_object = new HDrawingObject();
|
||||
|
||||
public FormEyeHandCalib(ref object eyeHandCalib)
|
||||
{
|
||||
InitializeComponent();
|
||||
_instance = this;
|
||||
if (eyeHandCalib.GetType().FullName != "System.Object")
|
||||
{
|
||||
myToolInfo = (IToolInfo)eyeHandCalib;
|
||||
myEyeHandCalib = (EyeHandCalib)myToolInfo.tool;
|
||||
myEyeHandCalib.DispImage();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 窗体对象实例
|
||||
/// </summary>
|
||||
private static FormEyeHandCalib _instance;
|
||||
public static FormEyeHandCalib Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_instance != null)
|
||||
{
|
||||
lock (_instance)
|
||||
{
|
||||
if (_instance == null)
|
||||
{
|
||||
object eyeHandCalib = new object();
|
||||
_instance = new FormEyeHandCalib(ref eyeHandCalib);
|
||||
}
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
object eyeHandCalib = new object();
|
||||
_instance = new FormEyeHandCalib(ref eyeHandCalib);
|
||||
return _instance;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public FormEyeHandCalib()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void chbSelectCalibType_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
CalibType oldType = myEyeHandCalib.calibType;
|
||||
myEyeHandCalib.calibType = chbSelectCalibType.SelectedItem.ToString() == "四点标定" ? CalibType.Four_Point : CalibType.Nine_Point;
|
||||
if(oldType == CalibType.Four_Point && myEyeHandCalib.calibType == CalibType.Nine_Point)
|
||||
{
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
DataRow dr = myEyeHandCalib.CalibSourceDataTable.NewRow();
|
||||
dr[0] = 0;
|
||||
dr[1] = 50;
|
||||
dr[2] = 0;
|
||||
dr[3] = 50;
|
||||
myEyeHandCalib.CalibSourceDataTable.Rows.Add(dr);
|
||||
}
|
||||
}
|
||||
else if(oldType == CalibType.Nine_Point && myEyeHandCalib.calibType == CalibType.Four_Point)
|
||||
{
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
myEyeHandCalib.CalibSourceDataTable.Rows.RemoveAt(myEyeHandCalib.CalibSourceDataTable.Rows.Count - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void FormEyeHandCalib_Load(object sender, EventArgs e)
|
||||
{
|
||||
// 若为空,表示该工具未经标定校正
|
||||
if(myEyeHandCalib.CalibSourceDataTable == null)
|
||||
{
|
||||
myEyeHandCalib.InitDataTable();
|
||||
}
|
||||
CalibDataGrid.DataSource = myEyeHandCalib.CalibSourceDataTable;
|
||||
chbSelectCalibType.SelectedItem = myEyeHandCalib.calibType == CalibType.Four_Point ? "四点标定" : "九点标定";
|
||||
txbScaleX.Text = (Convert.ToDouble(myEyeHandCalib.ScanX.ToString())).ToString("0.00");
|
||||
txbScaleY.Text = (Convert.ToDouble(myEyeHandCalib.ScanY.ToString())).ToString("0.00");
|
||||
txbRatation.Text = (Convert.ToDouble(myEyeHandCalib.Rotation.ToString())).ToString("0.00");
|
||||
txbTheta.Text = (Convert.ToDouble(myEyeHandCalib.Theta.ToString())).ToString("0.00");
|
||||
txbMoveX.Text = (Convert.ToDouble(myEyeHandCalib.TranslateX.ToString())).ToString("0.00");
|
||||
txbMoveY.Text = (Convert.ToDouble(myEyeHandCalib.TranslateY.ToString())).ToString("0.00");
|
||||
|
||||
}
|
||||
|
||||
private void CalibDataGrid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
|
||||
{
|
||||
using (SolidBrush b = new SolidBrush(
|
||||
CalibDataGrid.RowHeadersDefaultCellStyle.ForeColor))
|
||||
{
|
||||
e.Graphics.DrawString((e.RowIndex + 1).ToString(
|
||||
System.Globalization.CultureInfo.CurrentCulture),
|
||||
CalibDataGrid.DefaultCellStyle.Font
|
||||
, b, e.RowBounds.Location.X + 10, e.RowBounds.Location.Y);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnImportData_Click(object sender, EventArgs e)
|
||||
{
|
||||
myEyeHandCalib.ReadCalibData();
|
||||
CalibDataGrid.Refresh();
|
||||
}
|
||||
|
||||
private void btnExportData_Click(object sender, EventArgs e)
|
||||
{
|
||||
myEyeHandCalib.ExportCalibData();
|
||||
}
|
||||
|
||||
private void btnCalibManual_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(myEyeHandCalib.ManulCalib())
|
||||
{
|
||||
// 仿射矩阵信息
|
||||
txbScaleX.Text = (Convert.ToDouble(myEyeHandCalib.ScanX.ToString())).ToString("0.00");
|
||||
txbScaleY.Text = (Convert.ToDouble(myEyeHandCalib.ScanY.ToString())).ToString("0.00");
|
||||
txbRatation.Text = (Convert.ToDouble(myEyeHandCalib.Rotation.ToString())).ToString("0.00");
|
||||
txbTheta.Text = (Convert.ToDouble(myEyeHandCalib.Theta.ToString())).ToString("0.00");
|
||||
txbMoveX.Text = (Convert.ToDouble(myEyeHandCalib.TranslateX.ToString())).ToString("0.00");
|
||||
txbMoveY.Text = (Convert.ToDouble(myEyeHandCalib.TranslateY.ToString())).ToString("0.00");
|
||||
// 映射成功,则保存矩阵
|
||||
HOperatorSet.WriteTuple(myEyeHandCalib.homMat2D, myEyeHandCalib.homMat2DName + ".tup");
|
||||
MessageBox.Show("仿射矩阵已经保存成功!");
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 设定工具运行状态
|
||||
/// </summary>`
|
||||
/// <param name="msg">运行中的信息</param>
|
||||
/// <param name="status">运行状态</param>
|
||||
public void SetToolStatus(string msg, ToolRunStatu status)
|
||||
{
|
||||
if (myEyeHandCalib != null)
|
||||
{
|
||||
myEyeHandCalib.runMessage = msg;
|
||||
myEyeHandCalib.toolRunStatu = status;
|
||||
lb_RunStatus.Text = myEyeHandCalib.toolRunStatu == ToolRunStatu.Succeed ? "工具运行成功!" : $"工具运行异常, 异常原因:{myEyeHandCalib.runMessage}";
|
||||
lb_RunTime.Text = myEyeHandCalib.runTime;
|
||||
statusStrip.BackColor = myEyeHandCalib.toolRunStatu == ToolRunStatu.Succeed ? Color.LimeGreen : Color.Red;
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbtRunTool_Click(object sender, EventArgs e)
|
||||
{
|
||||
myEyeHandCalib.Run(SoftwareRunState.Debug);
|
||||
}
|
||||
}
|
||||
}
|
||||
384
EyeHandCalibTool/FormEyeHandCalib.resx
Normal file
384
EyeHandCalibTool/FormEyeHandCalib.resx
Normal file
@@ -0,0 +1,384 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>40, 19</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtRunTool.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>150, 19</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAIAEBAAAAEAIABoBAAAJgAAADAwAAABACAAqCUAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAADAE
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAED/LAA+/3QAPf+fAD3/nwA+
|
||||
/3MAO/8rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/8NAD7/oQA9//4aUf//RHH//0Rx
|
||||
//8ZUP//AD3//gA9/58AQP8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/8NAD7/zxtS//+vwv///f3/////
|
||||
/////////f3//63B//8aUf//AD3/zgBA/wwAAAAAAAAAAAAAAAAAAAAAAD3/ohpR///i6f//2eL//1B6
|
||||
//8NR///DUf//1F7///b5P//4ej//xhP//8APf+eAAAAAAAAAAAAAAAAAED/KAA9//2xxP//1+H//xBJ
|
||||
//8sXv//kqz//5Gr//8qXf//EEn//9ni//+twf//AD3//QA8/yYAAAAAAAAAAAA8/3sbUv///v7//095
|
||||
//8uYP//+Pr//9Db///R3P//+Pr//yxe//9Re////f3//xlQ//8APv94AAAAAAAAAAAAPf+fSXX/////
|
||||
//8MRv//k63//8/a//8HPvD/CD7t/9Db//+Rq///Dkj///////9IdP//AD3/ngAAAAAAAAAAAD3/n0l1
|
||||
////////DUf//5Gr///P2v//CT/r/zlFb//DzOn/j6r//w9I////////R3P//wA9/54AAAAAAAAAAAA+
|
||||
/3wbUv///v7//095//8uYP//+Pr//9Db///AyOT/f3tw/y9c7v9Re////f3//xlQ//8APf95AAAAAAAA
|
||||
AAAAPv8tAD3//rHE///X4f//EEn//yxe//+SrP//kav//y9a5P89SHD/zdTu/63B//8APf/+ADv/KwAA
|
||||
AAAAAAAAAAAAAAA9/6waUf//4un//9ni//9Qev//FEz//xRM//9Re///yM3h/8WIPf+nclH/TFGtwAAA
|
||||
AAAAAAAAAAAAAAAAAAAAQP8QAD3/0RtS//+vwv///f3//////////////f3//63B//+jbU3/0o88/813
|
||||
IfjRdBchAAAAAAAAAAAAAAAAAAAAAABA/xAAPP+tAD3//xpR//9Ecf//RHH//xlQ//8APf/+UlWlxMh1
|
||||
H/pkUje9TkM3FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8/y8APf+CAD3/pAA9/6QAPf+BAD3/LgAA
|
||||
AADPeBggUkczGVVJPRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD+fwAA8A8AAOAHAADAAwAAwAMAAMADAACAAQAAgAEAAMAD
|
||||
AADAAwAAwAMAAOADAADwAwAA/D8AAP//AAAoAAAAMAAAAGAAAAABACAAAAAAAFAlAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAP8CAD3/NgA+/3QAPf+oAD3/0gA9/+4APf//AD3//wA9/+4APf/RAD3/qAA+/3MAP/81AAD/AgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAED/HAA9/4kAPv/kAD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3/4wA+/4gAOf8bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAA5/xIAPf+TAD3/+AA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3//wA9//8APf//AD3//wA9//8APf/4AD7/kQA8/xEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAD7/VgA9/+oAPf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9/+kAPf9UAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr/wYAPv+ZAD3//wA9//8APf//AD3//wA9//8APf//EUr//16F
|
||||
//+ht///ytf//+jt///8/f///P3//+jt///J1v//oLf//1yD//8QSf//AD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3/lgAz/wUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAED/DAA8/7oAPf//AD3//wA9//8APf//AD3//xpR
|
||||
//+dtP//+Pr////////////////////////////////////////////////////////3+f//m7P//xlQ
|
||||
//8APf//AD3//wA9//8APf//AD3//wA9/7cARv8LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVf8DAD7/rgA9//8APf//AD3//wA9
|
||||
//8GQv//fp3///T3////////////////////////////////////////////////////////////////
|
||||
//////////////P2//98m///BkL//wA9//8APf//AD3//wA9//8APP+tAAD/AgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPf+XAD3//wA9
|
||||
//8APf//AD3//xJL//+8zP//////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////usv//xJL//8APf//AD3//wA9//8APf//AD3/kgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9
|
||||
/1gAPf//AD3//wA9//8APf//LmD//+Lp/////////////////////////////+Xr//+Urv//RnL//yFW
|
||||
//8HQv//B0L//yJX//9Gcv//la7//+bs/////////////////////////////+Dn//8sXv//AD3//wA9
|
||||
//8APf//AD3//wA9/1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAADf/DgA9/+YAPf//AD3//wA9//8UTP//3eX////////////////////////r8P//d5j//whD
|
||||
//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//whD//93mP//6/D/////////////////////
|
||||
///c5P//E0v//wA9//8APf//AD3//wA9/+UAO/8NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAD7/lQA9//8APf//AD3//wlE///L1////////////////////////6q+
|
||||
//8KRf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//C0X//6zA
|
||||
////////////////////////yNX//whD//8APf//AD3//wA9//8APP+QAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQP8YAD3/9gA9//8APf//AD3//4+q////////////////
|
||||
////////i6f//wE+//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3//wE+//+NqP///////////////////////4Sh//8APf//AD3//wA9//8APf/1ADr/FgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPv+IAD3//wA9//8APf//J1v///v8
|
||||
//////////////////+uwf//AT7//wA9//8APf//AD3//wA9//8tX///kKv//9Xf///3+f//9/n//9Xf
|
||||
//+Pqv//LF7//wA9//8APf//AD3//wA9//8CP///sMP///////////////////T3//8ZUP//AD3//wA9
|
||||
//8APf//AD3/hQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wIAPf/iAD3//wA9
|
||||
//8APf//nrX//////////////////+Pq//8MRv//AD3//wA9//8APf//CUT//5ix///9/f//////////
|
||||
/////////////////////////P3//5ew//8IQ///AD3//wA9//8APf//DUf//+Xr////////////////
|
||||
//+XsP//AD3//wA9//8APf//AD3/3QAA/wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+
|
||||
/zoAPf//AD3//wA9//8PSP//9vj//////////////////2CG//8APf//AD3//wA9//8JRP//x9T/////
|
||||
///////////////////////////////////////////////////F0///CEP//wA9//8APf//AD3//2KI
|
||||
///////////////////09///DEb//wA9//8APf//AD3//wA9/zYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAA8/3sAPf//AD3//wA9//9bgv//////////////////3+f//wI///8APf//AD3//wA9
|
||||
//+dtP//////////////////////////////////////////////////////////////////mbH//wA9
|
||||
//8APf//AD3//wM////h6P//////////////////Vn7//wA9//8APf//AD3//wA8/3cAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9/6wAPf//AD3//wA9//+ctP//////////////////kKv//wA9
|
||||
//8APf//AD3//y1f///9/f//////////////////1+H//054//8NR///DUf//095///Y4f//////////
|
||||
/////////f3//yxe//8APf//AD3//wA9//+Trf//////////////////mLH//wA9//8APf//AD3//wA+
|
||||
/6oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9/9QAPf//AD3//wA9///K1///////////
|
||||
////////R3P//wA9//8APf//AD3//5Ks///////////////////V3///Dkj//wA9//8APf//AD3//wA9
|
||||
//8PSP//1+H//////////////////4+q//8APf//AD3//wA9//9Jdf//////////////////x9T//wA9
|
||||
//8APf//AD3//wA9/9IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9/+0APf//AD3//wA9
|
||||
///r8P//////////////////JVn//wA9//8APf//AD3//9fh//////////////////9NeP//AD3//wA9
|
||||
//8APf//AD3//wA9//8APf//T3n//////////////////9Xf//8APf//AD3//wA9//8nW///////////
|
||||
////////6e7//wA9//8APf//AD3//wA9/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9
|
||||
//oAPf//AD3//wA9///6+///////////////////C0X//wA9//8APf//AD3///T3////////////////
|
||||
//8LRf//AD3//wA9//88RWj/PkRj/wY+7/8APf//DUf///////////////////L1//8APf//AD3//wA9
|
||||
//8NR///////////////////+Pr//wA9//8APf//AD3//wA9//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAA9//kAPf//AD3//wA9///5+v//////////////////DUf//wA9//8APf//AD3///P2
|
||||
//////////////////8MRv//AD3//wA9//8/RWH/T0c3/0FFW/8GPu//Dkj///////////////////H0
|
||||
//8APf//AD3//wA9//8OSP//////////////////9/n//wA9//8APf//AD3//wA9//gAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9/+0APf//AD3//wA9///r8P//////////////////JVn//wA9
|
||||
//8APf//AD3//9fh//////////////////9NeP//AD3//wA9//8IPuv/Q0VW/09HN/8+RWH/T3bz////
|
||||
/////////////9Te//8APf//AD3//wA9//8oW///////////////////6e7//wA9//8APf//AD3//wA9
|
||||
/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9/9QAPf//AD3//wA9///K1///////////
|
||||
////////R3P//wA9//8APf//AD3//5Ks///////////////////V3///DUf//wA9//8APf//CD7r/0NF
|
||||
Vv9PRzf/bGhh//X08////////////4+q//8APf//AD3//wA9//9Jdf//////////////////x9T//wA9
|
||||
//8APf//AD3//wA9/9IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9/68APf//AD3//wA9
|
||||
//+ctP//////////////////kKv//wA9//8APf//AD3//y1f///9/f//////////////////z9r//0t2
|
||||
//8UTP//FEz//0xy6/9jXVb/T0c3/3RuYf/19PP//f3//yxe//8APf//AD3//wA9//+Trf//////////
|
||||
////////mLH//wA9//8APf//AD3//wA9/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8
|
||||
/3sAPf//AD3//wA9//9bgv//////////////////3+f//wI///8APf//AD3//wA9//+dtP//////////
|
||||
///////////////////////////////////t7Ov/amNW/09HN/90bmH/lavz/wA9//8APf//AD3//wM/
|
||||
///h6P//////////////////Vn7//wA9//8APf//AD3//wA8/3cAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAA+/zoAPf//AD3//wA9//8PSP//9vj//////////////////2CG//8APf//AD3//wA9
|
||||
//8JRP//x9T/////////////////////////////////////////////7ezr/2pjVv9PRzf/QEZh/wU9
|
||||
8/8APf//AD3//2KI///////////////////09///DEb//wA9//8APf//AD3//wA9/zYAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz/wUAPP/oAD3//wA9//8APf//nrX//////////////////+Pq
|
||||
//8MRv//AD3//wA9//8APf//CUT//5ix///9/f///////////////////////////////////P3//5Cl
|
||||
6/9ERlb/T0c3/z5FYf8FPfP/DUf//+Xr//////////////////+XsP//AD3//wA9//8APf//AD3/5QBV
|
||||
/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPv+IAD3//wA9//8APf//J1v///v8
|
||||
//////////////////+uwf//AT7//wA9//8APf//AD3//wA9//8tX///kKv//9Te///r8P//6/D//9Te
|
||||
//+Pqv//LF7//wA9//8IPuv/Q0VW/09HN/8+RWH/q7zz//////////////////T3//8ZUP//AD3//wA9
|
||||
//8APf//AD3/hQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOv8jAD3//AA9
|
||||
//8APf//AD3//4+q////////////////////////i6f//wE+//8APf//AD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3//wA9//8APf//AD3//wA9//8APf//CD7r/0NFVv9PRzf/dG1f//X08////////////4Sh
|
||||
//8APf//AD3//wA9//8APf/6ADr/HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAD7/nQA9//8APf//AD3//wlE///L1////////////////////////6q+//8KRf//AD3//wA9
|
||||
//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//C0X//6Kz6/9pYVP/XlA4/86O
|
||||
P//cnFr/zaeQ/zJOz/8CPv3/AD3//wA9//8APv+ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAADn/GwA9//EAPf//AD3//wA9//8eVP//6O3/////////////////////
|
||||
///a4///VX7//wI///8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wI///9Vfv//2+T/////
|
||||
///t7Ov/woc9//WlQv/nnUH/0Xoh/9J2Gf/Ccir/eF57/xZD5/AAN/8XAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+/1oAPf//AD3//wA9//8APf//LmD//+Tq
|
||||
/////////////////////////////+Xr//+Urv//RnL//yhb//8UTP//FEz//ylc//9Gcv//la7//+bs
|
||||
////////////////////////0ZRT/9mUP//1pUL/45pA/9B5IP/Sdhn/0nYZ/8x1IPLSeBciAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPv+hAD3//wA9
|
||||
//8APf//AD3//yBV///T3v//////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////0qeG/8h1H//ZlD//9aVC/+OaQP/QeSD/0nYZ/9J2
|
||||
Gf/RdhnPv4AABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAARv8LAD7/xwA9//8APf//AD3//wA9//8LRf//lK7///z9////////////////////////////////
|
||||
//////////////////////////////////////////////z9//+Rq///PFHG/9J2Gf/IdR//2ZQ///Wl
|
||||
Qv/jmkD/0Hkg/9J2Gf/Sdhn/0ncZZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAED/DAA8/7oAPf//AD3//wA9//8APf//AD3//yxe//+kuv//+Pr/////
|
||||
///////////////////////////////////////////////////3+f//orj//ypd//8APf//BD76/8dz
|
||||
Jf/Sdhn/x3Qe/9SRP//1pUL/551B/9F5If/Sdhn/0nYa0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr/wYAPv+ZAD3//wA9//8APf//AD3//wA9
|
||||
//8APf//EUr//16F//+ht///ytf//+jt///u8v//7vL//+jt///J1v//oLf//1yD//8QSf//AD3//wA9
|
||||
//8APf//AD3//4Bgcv/Sdhn/0nYZ/8h1H//ZlD//zo8//1hNN8tVRDMPAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7/VgA9
|
||||
/+oAPf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3//wA9//8APf//AD3//xlE5OvMdSDy0nYZ/9J2Gf/Hcx7/V0s32U9HN/9PRzfJVUQzDwAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAA5/xIAPf+TAD3/+AA9//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3//wA9//8APf//AD3//wA9//8APf/4AD7/kQA8/xHPdRwl0nYZ1NJ2Gf/Sdhn/VUk9FU9H
|
||||
N9FPRzf/T0c3yQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAED/HAA9/4kAPv/kAD3//wA9//8APf//AD3//wA9
|
||||
//8APf//AD3//wA9//8APf//AD3//wA9//8APf//AD3/4wA+/4gAOf8bAAAAAAAAAAAAAAAAzGYABdJ3
|
||||
GWfSdRnKAAAAAFVJPRVPRzfJTkY2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8CAD3/NgA+
|
||||
/3QAPf+oAD3/0gA9/+4APf/uAD3/7gA9/+4APf/RAD3/qAA+/3MAP/81AAD/AgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP//
|
||||
/////wAA////////AAD///AP//8AAP//AAD//wAA//wAAD//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAP/
|
||||
AAD/gAAAAf8AAP8AAAAA/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA/AAAAAA/AAD4AAAAAB8AAPgA
|
||||
AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAP
|
||||
AADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPwA
|
||||
AAAAPwAA/AAAAAA/AAD+AAAAAH8AAP8AAAAAfwAA/wAAAAA/AAD/gAAAAD8AAP/AAAAAHwAA/+AAAAB/
|
||||
AAD/+AAAAD8AAP/8AAAxHwAA//8AAP2fAAD///AP//8AAP///////wAA////////AAD///////8AAP//
|
||||
/////wAA
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
36
EyeHandCalibTool/Properties/AssemblyInfo.cs
Normal file
36
EyeHandCalibTool/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("EyeHandCalibTool")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("EyeHandCalibTool")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2022")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
//将 ComVisible 设置为 false 将使此程序集中的类型
|
||||
//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("46ee89bb-5ec9-4ead-9e32-3e57288a0bf7")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||
// 方法是按如下所示使用“*”: :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
63
EyeHandCalibTool/Properties/Resources.Designer.cs
generated
Normal file
63
EyeHandCalibTool/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace EyeHandCalibTool.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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("EyeHandCalibTool.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
EyeHandCalibTool/Properties/Resources.resx
Normal file
120
EyeHandCalibTool/Properties/Resources.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?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>
|
||||
Reference in New Issue
Block a user