DHDHSoftware/CanFly/UI/UIMain/FrmMainSize.cs
2025-04-18 14:04:02 +08:00

441 lines
13 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}