From dac3e12cc046aabeefd828b3f03794fe2bc0ba06 Mon Sep 17 00:00:00 2001
From: wells.liu <wells.liu@broconcentric.com>
Date: 星期四, 09 七月 2020 09:54:26 +0800
Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071
---
.gitignore | 2
src/Bro.UI.Device.Winform/CtrlCameraRunBase.resx | 15
src/Bro.Common.Device/Helper/AspectHelper.cs | 2
src/Bro.M071.Process/M071Process_MotionCard.cs | 2
src/Bro.M071.Process/UI/M071_MainForm.Designer.cs | 1
src/Bro.UI.Config/MainFrm.cs | 2
src/Bro.M071.Process/M071Process.cs | 24
src/Bro.M071.Process/UI/M071_ShortcutFrm.cs | 76 +++
src/Bro.UI.Model.Winform/UI/Canvas.cs | 22
src/Bro.Device.Gocator/GocatorDriver.cs | 82 +++
src/Bro.M071.Process/UI/M071_ShortcutFrm.resx | 120 +++++
src/Bro.M071.Process/UI/KeyIndicator.cs | 72 ++
src/Bro.UI.Device.Winform/CtrlCameraRunBase.Designer.cs | 68 +++
src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs | 8
src/Bro.M071.Process/UI/M071_MainForm.cs | 29 +
src/Bro.UI.Model.Winform/UI/CanvasImage.cs | 211 ++++-----
src/Bro.Device.Gocator/Bro.Device.Gocator.csproj | 1
src/Bro.UI.Config/AdvancedPwdFrm.designer.cs | 23
src/Bro.UI.Device.Winform/CtrlCameraRunBase.cs | 28 +
src/Bro.Common.Device/DeviceBase/CameraBase.cs | 8
src/Bro.Common.Model/Helper/EnumHelper.cs | 34 +
src/Bro.Process/Bro.Process.csproj | 5
src/Bro.UI.Config/AdvancedPwdFrm.cs | 6
src/Bro.M071.Process/UI/M071_ShortcutFrm.Designer.cs | 93 ++++
src/Bro.UI.Model.Winform/ElementBase.cs | 312 +++++++++++++-
src/Bro.M071.Process/Bro.M071.Process.csproj | 3
src/Bro.M071.Process/M071Models.cs | 6
27 files changed, 1,037 insertions(+), 218 deletions(-)
diff --git a/.gitignore b/.gitignore
index 345c9f4..7cc7f16 100644
--- a/.gitignore
+++ b/.gitignore
@@ -188,3 +188,5 @@
# Microsoft Fakes
FakesAssemblies/
+/src/Images/20200706/Test/Origin
+/src/Images
diff --git a/src/Bro.Common.Device/DeviceBase/CameraBase.cs b/src/Bro.Common.Device/DeviceBase/CameraBase.cs
index a7f721c..440c7d0 100644
--- a/src/Bro.Common.Device/DeviceBase/CameraBase.cs
+++ b/src/Bro.Common.Device/DeviceBase/CameraBase.cs
@@ -152,7 +152,7 @@
set.IsOriginSaved = !set.ImageSaveOption.IsSaveOriginImage;
set.IsFitSaved = !set.ImageSaveOption.IsSaveFitImage;
- set.IsAddtionalSaved = !string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType);
+ set.IsAddtionalSaved = string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType);
set.OnImageSetTimeout += ImageSet_OnImageSetTimeout;
_imageSetList.Add(set);
@@ -181,7 +181,7 @@
{
set.IsOriginSaved = !set.ImageSaveOption.IsSaveOriginImage;
set.IsFitSaved = !set.ImageSaveOption.IsSaveFitImage;
- set.IsAddtionalSaved = !string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType);
+ set.IsAddtionalSaved = string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType);
set.OnImageSetTimeout += ImageSet_OnImageSetTimeout;
_imageSetList.Add(set);
}
@@ -539,7 +539,7 @@
});
}
- protected async void Generate16GrayImageByPointer(int width, int height, IntPtr dataPtr, string imgSetId)
+ protected async Task Generate16GrayImageByPointer(int width, int height, IntPtr dataPtr, string imgSetId)
{
await Task.Run(() =>
{
@@ -897,7 +897,7 @@
public ImageSet()
{
- autoDisposeTimer = new Timer(OnAutoDispose, null, -1, 10 * 1000);
+ autoDisposeTimer = new Timer(OnAutoDispose, null, 10 * 1000, -1);
}
public virtual void Dispose()
diff --git a/src/Bro.Common.Device/Helper/AspectHelper.cs b/src/Bro.Common.Device/Helper/AspectHelper.cs
index b864177..6d9cf36 100644
--- a/src/Bro.Common.Device/Helper/AspectHelper.cs
+++ b/src/Bro.Common.Device/Helper/AspectHelper.cs
@@ -88,7 +88,7 @@
// new ProcessException(ex);
//}
- args.FlowBehavior = FlowBehavior.Return;
+ args.FlowBehavior = FlowBehavior.ThrowException;
}
}
#endregion
diff --git a/src/Bro.Common.Model/Helper/EnumHelper.cs b/src/Bro.Common.Model/Helper/EnumHelper.cs
index fdbb5b7..f22bca9 100644
--- a/src/Bro.Common.Model/Helper/EnumHelper.cs
+++ b/src/Bro.Common.Model/Helper/EnumHelper.cs
@@ -392,6 +392,26 @@
Measuring = 21,
MeasureDoneOK = 22,
MeasureDoneNG = 23,
+
+ CanStretchLeft = 41,
+ CanStretchRight = 42,
+ CanStretchTop = 43,
+ CanStretchBottom = 44,
+
+ CanStretchLeftUpperCorner = 45,
+ CanStretchLeftLowerCorner = 46,
+ CanStretchRightUpperCorner = 47,
+ CanStretchRightLowerCorner = 48,
+
+ StretchingLeft = 31,
+ StretchingRight = 32,
+ StretchingTop = 33,
+ StretchingBottom = 34,
+
+ StretchingLeftUpperCorner = 35,
+ StretchingLeftLowerCorner = 36,
+ StretchingRightUpperCorner = 37,
+ StretchingRightLowerCorner = 38,
}
public enum MouseState
@@ -400,15 +420,21 @@
HoverElement = 2,
InSideElement = 3,
+ MoveElement = 4,
+
StretchingLeft = 11,
StretchingRight = 12,
- StretchingUp = 13,
- StretchingDown = 14,
- MoveElement = 15,
+ StretchingTop = 13,
+ StretchingBottom = 14,
+
+ StretchingLeftUpperCorner = 15,
+ StretchingLeftLowerCorner = 16,
+ StretchingRightUpperCorner =17,
+ StretchingRightLowerCorner = 18,
New = 21,
Editing = 22,
- SelectedElement = 23,
+ //SelectedElement = 23,
MovingAll = 31,
diff --git a/src/Bro.Device.Gocator/Bro.Device.Gocator.csproj b/src/Bro.Device.Gocator/Bro.Device.Gocator.csproj
index 8a7b1b1..43038f3 100644
--- a/src/Bro.Device.Gocator/Bro.Device.Gocator.csproj
+++ b/src/Bro.Device.Gocator/Bro.Device.Gocator.csproj
@@ -22,6 +22,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
diff --git a/src/Bro.Device.Gocator/GocatorDriver.cs b/src/Bro.Device.Gocator/GocatorDriver.cs
index 39fb4a2..2a659df 100644
--- a/src/Bro.Device.Gocator/GocatorDriver.cs
+++ b/src/Bro.Device.Gocator/GocatorDriver.cs
@@ -86,18 +86,88 @@
long bufferSize = width * height;
IntPtr bufferPointer = surfaceMsg.Data;
+ float zoomFactor = (float)((double)surfaceMsg.YResolution / (double)surfaceMsg.XResolution);
+ int zoomHeight = (int)(zoomFactor * height);
+ IntPtr zoomPtr = Marshal.AllocHGlobal(zoomHeight * (int)width * 2);
+
+ //娌℃湁鎻掑�硷紝榛樿0
+ //Parallel.For(0, height, h =>
+ // {
+ // CopyMemory((IntPtr)((long)zoomPtr + width * 2 * Math.Floor(h * zoomFactor)), (IntPtr)((long)bufferPointer + width * 2 * h), width * 2);
+ // });
+
+ //浣跨敤涓婁竴琛屽師鏈夋暟鎹�
+ Parallel.For(0, zoomHeight, h =>
+ {
+ int originHeightIndex = (int)Math.Floor((double)height * h / (double)zoomHeight);
+
+ CopyMemory((IntPtr)((long)zoomPtr + width * 2 * h), (IntPtr)((long)bufferPointer + width * 2 * originHeightIndex), width * 2);
+ });
+
if (imgSet != null)
{
imgSet.HImage = new HImage();
- imgSet.HImage.GenImage1("uint2", (int)width, (int)height, bufferPointer);
+ imgSet.HImage.GenImage1("uint2", (int)width, zoomHeight, zoomPtr);
+ //imgSet.HImage = imgSet.HImage.ZoomImageSize((int)width, zoomHeight, "constant");
+
imgSet.HImage_2 = new HImage();
- imgSet.HImage_2.GenImage1("uint2", (int)width, (int)height, bufferPointer);
+ imgSet.HImage_2.GenImage1("uint2", (int)width, zoomHeight, zoomPtr);
+
+ //imgSet.HImage_2 = imgSet.HImage_2.ZoomImageSize((int)width, zoomHeight, "constant");
}
- Generate16GrayImageByPointer((int)width, (int)height, bufferPointer, imgSet?.Id);
+ Generate16GrayImageByPointer((int)width, zoomHeight, zoomPtr, imgSet?.Id).ContinueWith(t =>
+ {
+ Marshal.FreeHGlobal(zoomPtr);
+ });
+
+ //int zoomHeight = (int)(((double)surfaceMsg.YResolution / (double)surfaceMsg.XResolution) * (double)surfaceMsg.Length);
+
+ //if (imgSet != null)
+ //{
+ // imgSet.HImage = new HImage();
+ // imgSet.HImage.GenImage1("uint2", (int)width, (int)height, bufferPointer);
+ // imgSet.HImage = imgSet.HImage.ZoomImageSize((int)width, zoomHeight, "constant");
+
+
+ // imgSet.HImage_2 = new HImage();
+ // imgSet.HImage_2.GenImage1("uint2", (int)width, (int)height, bufferPointer);
+
+ // imgSet.HImage_2 = imgSet.HImage_2.ZoomImageSize((int)width, zoomHeight, "constant");
+ //}
+
+ //Generate16GrayImageByPointer((int)width, (int)height, bufferPointer, imgSet?.Id);
}
break;
+ //case GoDataMessageType.SurfaceIntensity:
+ // {
+ // GoSurfaceIntensityMsg surfaceMsg = (GoSurfaceIntensityMsg)dataObj;
+ // long width = surfaceMsg.Width;
+ // long height = surfaceMsg.Length;
+ // long bufferSize = width * height;
+ // IntPtr bufferPointer = surfaceMsg.Data;
+
+ // //int zoomHeight = (surfaceMsg.YResolution * (int)surfaceMsg.Length * 10) / surfaceMsg.XResolution;
+
+ // int zoomHeight = (int)(((double)surfaceMsg.YResolution / (double)surfaceMsg.XResolution) * (double)surfaceMsg.Length);
+
+ // if (imgSet != null)
+ // {
+ // imgSet.HImage = new HImage();
+ // imgSet.HImage.GenImage1("uint2", (int)width, (int)height, bufferPointer);
+ // imgSet.HImage = imgSet.HImage.ZoomImageSize((int)width, zoomHeight, "constant");
+
+
+ // imgSet.HImage_2 = new HImage();
+ // imgSet.HImage_2.GenImage1("uint2", (int)width, (int)height, bufferPointer);
+
+ // imgSet.HImage_2 = imgSet.HImage_2.ZoomImageSize((int)width, zoomHeight, "constant");
+ // }
+
+ // Generate16GrayImageByPointer((int)width, (int)height, bufferPointer, imgSet?.Id);
+ // }
+ // break;
}
}
}
@@ -336,9 +406,9 @@
public override async void SaveOriginImage(Bitmap map, Bitmap showImage, string imgSetId)
{
Task.Run(() =>
- {
- OnImageUpdated?.Invoke(this, showImage, imgSetId);
- });
+ {
+ OnImageUpdated?.Invoke(this, showImage, imgSetId);
+ });
GoImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId) as GoImageSet;
diff --git a/src/Bro.M071.Process/Bro.M071.Process.csproj b/src/Bro.M071.Process/Bro.M071.Process.csproj
index c81ab99..eb681d3 100644
--- a/src/Bro.M071.Process/Bro.M071.Process.csproj
+++ b/src/Bro.M071.Process/Bro.M071.Process.csproj
@@ -152,6 +152,9 @@
<EmbeddedResource Include="UI\M071_MainForm.resx">
<DependentUpon>M071_MainForm.cs</DependentUpon>
</EmbeddedResource>
+ <EmbeddedResource Include="UI\M071_ShortcutFrm.resx">
+ <DependentUpon>M071_ShortcutFrm.cs</DependentUpon>
+ </EmbeddedResource>
<None Include="App.config">
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
diff --git a/src/Bro.M071.Process/M071Models.cs b/src/Bro.M071.Process/M071Models.cs
index 0d94bd0..bd98beb 100644
--- a/src/Bro.M071.Process/M071Models.cs
+++ b/src/Bro.M071.Process/M071Models.cs
@@ -137,13 +137,13 @@
get => key;
set
{
- AlignName = key = value;
+ AliasName = key = value;
}
}
[Category("閿悕閰嶇疆")]
[Description("鍒悕")]
- public string AlignName { get; set; }
+ public string AliasName { get; set; }
[Category("鍚敤璁剧疆")]
[Description("true锛氬惎鐢� false锛氱鐢�")]
@@ -178,7 +178,7 @@
public string GetDisplayText()
{
- return $"{AlignName}";
+ return $"{AliasName}";
}
public List<string> GetHalconToolPathList()
diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index 52d0f48..8f08ba9 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -58,8 +58,8 @@
private void InitialSetting()
{
- //鏁版嵁搴撹縼绉绘鏌�
- DatabaseInitialize.Initialize();
+ ////鏁版嵁搴撹縼绉绘鏌�
+ //DatabaseInitialize.Initialize();
MotionCardSettingCheck();
@@ -78,21 +78,21 @@
var snapshotPoint = Config.SnapshotPointCollection.FirstOrDefault(s => s.Id == u.SnapshotPointId && s.IsEnabled);
if (snapshotPoint == null)
- throw new ProcessException($"{u.AlignName}鏈缃彲鐢ㄦ媿鐓х偣浣�");
+ throw new ProcessException($"{u.AliasName}鏈缃彲鐢ㄦ媿鐓х偣浣�");
if (u.ImageSeq < 1)
- throw new ProcessException($"{u.AlignName}鍥剧墖搴忓彿灏忎簬1");
+ throw new ProcessException($"{u.AliasName}鍥剧墖搴忓彿灏忎簬1");
var algo = Config.KeyAlgorithemCollection.FirstOrDefault(a => a.Id == u.KeyAlgorithemId);
if (algo == null)
- throw new ProcessException($"{u.AlignName}鏈缃娴嬬畻娉�");
+ throw new ProcessException($"{u.AliasName}鏈缃娴嬬畻娉�");
u.KeyAlgorithemPath = algo.AlgorithemPath;
- LoadHalconTool(u.KeyAlgorithemPath, u.AlignName);
+ LoadHalconTool(u.KeyAlgorithemPath, u.AliasName);
var resultSet = Config.KeyResultCollection.FirstOrDefault(r => r.Id == u.KeyResultId);
if (resultSet == null)
- throw new ProcessException($"{u.AlignName}鏈缃娴嬬粨鏋滈厤缃�");
+ throw new ProcessException($"{u.AliasName}鏈缃娴嬬粨鏋滈厤缃�");
u.KeyResultList = new List<string>(resultSet.Results);
});
@@ -511,7 +511,7 @@
var excludeKeys = keys.Where(u => u.ImageSeq > count).ToList();
if (excludeKeys.Count > 0)
{
- LogAsync(DateTime.Now, $"{string.Join(" ", excludeKeys.Select(u => u.AlignName))}鏈湪鍥剧墖鑾峰彇搴忓垪涓�", "");
+ LogAsync(DateTime.Now, $"{string.Join(" ", excludeKeys.Select(u => u.AliasName))}鏈湪鍥剧墖鑾峰彇搴忓垪涓�", "");
keyBindCollection.Where(k => excludeKeys.Any(u => u.Key == k.Key)).ToList().ForEach(k =>
{
k.FillKeyValues(null);
@@ -528,24 +528,24 @@
var keyBindList = keyBindCollection.Where(u => u.Key == k.Key).ToList();
- string keyToolKey = k.AlignName + "|" + k.KeyAlgorithemPath;
+ string keyToolKey = k.AliasName + "|" + k.KeyAlgorithemPath;
if (!_halconToolDict.ContainsKey(keyToolKey))
{
- LogAsync(DateTime.Now, $"{k.AlignName}妫�娴嬬畻娉曟湭鍒濆鍖�", "");
+ LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬畻娉曟湭鍒濆鍖�", "");
}
else
{
_halconToolDict[keyToolKey].InputImageDic["INPUT_Image"] = image;
if (!_halconToolDict[keyToolKey].RunProcedure(out string error))
{
- LogAsync(DateTime.Now, $"{k.AlignName}妫�娴嬬畻娉曞紓甯革紝{error}", "");
+ LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬畻娉曞紓甯革紝{error}", "");
}
else
{
var results = _halconToolDict[keyToolKey].GetResultTuple("OUTPUT_Results").HTupleToDouble();
if (results.Count == 0 || results.Any(u => u < 0))
{
- LogAsync(DateTime.Now, $"{k.AlignName}妫�娴嬬粨鏋滃紓甯�", "");
+ LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬粨鏋滃紓甯�", "");
}
else
{
diff --git a/src/Bro.M071.Process/M071Process_MotionCard.cs b/src/Bro.M071.Process/M071Process_MotionCard.cs
index 29b2055..62fd994 100644
--- a/src/Bro.M071.Process/M071Process_MotionCard.cs
+++ b/src/Bro.M071.Process/M071Process_MotionCard.cs
@@ -125,7 +125,7 @@
private void MotionCardSettingCheck()
{
IDevice device = DeviceCollection.FirstOrDefault(u => u is IMotionCard);
- if (device.InitialConfig is MotionCardInitialConfigBase iConfig)
+ if (device?.InitialConfig is MotionCardInitialConfigBase iConfig)
{
outputCtrlCard = device as MotionCardBase;
diff --git a/src/Bro.M071.Process/UI/KeyIndicator.cs b/src/Bro.M071.Process/UI/KeyIndicator.cs
index 3e66348..75271a0 100644
--- a/src/Bro.M071.Process/UI/KeyIndicator.cs
+++ b/src/Bro.M071.Process/UI/KeyIndicator.cs
@@ -30,20 +30,6 @@
[Browsable(false)]
public override bool IsEnabled { get => base.IsEnabled; set => base.IsEnabled = value; }
-
- //[Category("鏄剧ず璁剧疆")]
- //[Description("宸︿笂/寮�濮嬬偣浣�")]
- //[TypeConverter(typeof(ComplexObjectConvert))]
- //[Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))]
- //[Browsable(false)]
- //public CustomizedPoint StartPoint { get; set; } = new CustomizedPoint();
-
- //[Category("鏄剧ず璁剧疆")]
- //[Description("鏄剧ず鍖哄煙澶у皬")]
- //[TypeConverter(typeof(ComplexObjectConvert))]
- //[Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))]
- //public CustomizedPoint Size { get; set; } = new CustomizedPoint();
-
[Category("鏄剧ず璁剧疆")]
[Description("鏍囩鏄剧ず鍖哄煙")]
[DisplayName("鏍囩鏄剧ず鍖哄煙")]
@@ -68,6 +54,11 @@
{
DisplayRect = this.DisplayRect,
};
+ }
+
+ protected override void SetSelectedPen()
+ {
+ Pen = new Pen(Color.Red, 6);
}
public override void Draw(Graphics g)
@@ -108,7 +99,12 @@
public override bool IsMouseInSide(Point p)
{
- return false;
+ return p.X >= DisplayRect.X && p.X <= DisplayRect.X + DisplayRect.Width && p.Y >= DisplayRect.Y && p.Y <= DisplayRect.Y + DisplayRect.Height;
+ }
+
+ public override bool IsMouseCanMoveElement(Point p)
+ {
+ return IsMouseInSide(p);
}
public override void OnKeyDown(object sender, KeyEventArgs e)
@@ -133,6 +129,52 @@
public override void Translate(int x, int y)
{
+ DisplayRect = new Rectangle(DisplayRect.X + x, DisplayRect.Y + y, DisplayRect.Width, DisplayRect.Height);
+ }
+
+ public override void Relocate(Point point)
+ {
+ DisplayRect = new Rectangle(point.X - DisplayRect.Width / 2, point.Y - DisplayRect.Height / 2, DisplayRect.Width, DisplayRect.Height);
+ }
+
+ public override bool IsMouseCanStretchBottom(Point p)
+ {
+ return Math.Abs(p.X - (DisplayRect.X + DisplayRect.Width / 2)) < 10 && Math.Abs(p.Y - DisplayRect.Y - DisplayRect.Height) < 10;
+ }
+
+ public override bool IsMouseCanStretchRight(Point p)
+ {
+ return Math.Abs(p.X - (DisplayRect.X + DisplayRect.Width)) < 10 && Math.Abs(p.Y - (DisplayRect.Y + DisplayRect.Height / 2)) < 10;
+ }
+
+ public override bool IsMouseCanStretchRightLowerCorner(Point p)
+ {
+ return Math.Abs(p.X - (DisplayRect.X + DisplayRect.Width)) < 10 && Math.Abs(p.Y - (DisplayRect.Y + DisplayRect.Height)) < 10;
+ }
+
+ int x, y = 0;
+ public override void StretchBottom(Point p)
+ {
+ if (p.Y > DisplayRect.Y)
+ {
+ DisplayRect = new Rectangle(DisplayRect.X, DisplayRect.Y, DisplayRect.Width, p.Y - DisplayRect.Y);
+ }
+ }
+
+ public override void StretchRight(Point p)
+ {
+ if (p.X > DisplayRect.X)
+ {
+ DisplayRect = new Rectangle(DisplayRect.X, DisplayRect.Y, p.X - DisplayRect.X, DisplayRect.Height);
+ }
+ }
+
+ public override void StretchRightLowerCorner(Point p)
+ {
+ if (p.X > DisplayRect.X && p.Y > DisplayRect.Y)
+ {
+ DisplayRect = new Rectangle(DisplayRect.X, DisplayRect.Y, p.X - DisplayRect.X, p.Y - DisplayRect.Y);
+ }
}
protected override void DrawResult(Graphics g)
diff --git a/src/Bro.M071.Process/UI/M071_MainForm.Designer.cs b/src/Bro.M071.Process/UI/M071_MainForm.Designer.cs
index 25f0b07..a7e2e8d 100644
--- a/src/Bro.M071.Process/UI/M071_MainForm.Designer.cs
+++ b/src/Bro.M071.Process/UI/M071_MainForm.Designer.cs
@@ -240,6 +240,7 @@
this.lvMeasures.UseCompatibleStateImageBehavior = false;
this.lvMeasures.View = System.Windows.Forms.View.List;
this.lvMeasures.SelectedIndexChanged += new System.EventHandler(this.lvMeasures_SelectedIndexChanged);
+ this.lvMeasures.DoubleClick += new System.EventHandler(this.lvMeasures_DoubleClick);
//
// propGridKeyIndicator
//
diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs
index 8623ac8..df918c4 100644
--- a/src/Bro.M071.Process/UI/M071_MainForm.cs
+++ b/src/Bro.M071.Process/UI/M071_MainForm.cs
@@ -32,6 +32,13 @@
plImage.Controls.Add(cvImage);
tscEditLocation.Visible = tsmiShowEditor.Checked = false;
+
+ this.Load += async (s, e) =>
+ {
+ await Task.Delay(300);
+
+ cvImage.SetScreenSize();
+ };
}
public override void OnProcessUpdated()
@@ -48,6 +55,7 @@
{
Bitmap image = (Bitmap)Image.FromFile(Config.BackgroundImagePath);
cvImage.LoadImage(image);
+ cvImage.SetScreenSize();
}
catch (Exception ex)
{
@@ -70,7 +78,8 @@
lvMeasures.Items.Add(item);
});
- txtBarcode.ReadOnly = Config.IsBarcodeManulInputBlocked;
+ if (txtBarcode.IsHandleCreated)
+ txtBarcode.BeginInvoke(new Action(() => txtBarcode.ReadOnly = Config.IsBarcodeManulInputBlocked));
Process_M071.OnClearBarcode -= M071_MainForm_OnClearBarcode;
Process_M071.OnClearBarcode += M071_MainForm_OnClearBarcode;
@@ -150,6 +159,19 @@
MessageBox.Show("鏍囩淇敼瀹屾垚");
}
+
+ private void lvMeasures_DoubleClick(object sender, EventArgs e)
+ {
+ if (lvMeasures.SelectedItems.Count <= 0)
+ return;
+
+ var ele = cvImage.Elements.FirstOrDefault(u => u.ID == lvMeasures.SelectedItems[0].Tag.ToString());
+ if (ele != null)
+ {
+ ele.State = ElementState.Selected;
+ cvImage.Invalidate();
+ }
+ }
#endregion
#region 涓婃柟鐘舵�佸尯
@@ -169,6 +191,11 @@
txtBarcode.Text = _barcode;
_barcode = "";
}
+
+ if (e.KeyValue == 27)
+ {
+ cvImage.Elements.ToList().ForEach(ele => ele.State = ElementState.Normal);
+ }
}
private void txtBarcode_TextChanged(object sender, EventArgs e)
diff --git a/src/Bro.M071.Process/UI/M071_ShortcutFrm.Designer.cs b/src/Bro.M071.Process/UI/M071_ShortcutFrm.Designer.cs
index 6ed449b..eca6a77 100644
--- a/src/Bro.M071.Process/UI/M071_ShortcutFrm.Designer.cs
+++ b/src/Bro.M071.Process/UI/M071_ShortcutFrm.Designer.cs
@@ -28,12 +28,103 @@
/// </summary>
private void InitializeComponent()
{
- this.components = new System.ComponentModel.Container();
+ this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
+ this.chkBlockSaftyDoor = new System.Windows.Forms.CheckBox();
+ this.chkBlockSafetyBeam = new System.Windows.Forms.CheckBox();
+ this.chkBlockBeep = new System.Windows.Forms.CheckBox();
+ this.chkManualInputForbidden = new System.Windows.Forms.CheckBox();
+ this.btnLightSwitch = new System.Windows.Forms.Button();
+ this.flowLayoutPanel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // flowLayoutPanel1
+ //
+ this.flowLayoutPanel1.Controls.Add(this.chkBlockSaftyDoor);
+ this.flowLayoutPanel1.Controls.Add(this.chkBlockSafetyBeam);
+ this.flowLayoutPanel1.Controls.Add(this.chkBlockBeep);
+ this.flowLayoutPanel1.Controls.Add(this.chkManualInputForbidden);
+ this.flowLayoutPanel1.Controls.Add(this.btnLightSwitch);
+ this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+ this.flowLayoutPanel1.Name = "flowLayoutPanel1";
+ this.flowLayoutPanel1.Size = new System.Drawing.Size(800, 450);
+ this.flowLayoutPanel1.TabIndex = 0;
+ //
+ // chkBlockSaftyDoor
+ //
+ this.chkBlockSaftyDoor.AutoSize = true;
+ this.chkBlockSaftyDoor.Location = new System.Drawing.Point(3, 3);
+ this.chkBlockSaftyDoor.Name = "chkBlockSaftyDoor";
+ this.chkBlockSaftyDoor.Size = new System.Drawing.Size(86, 17);
+ this.chkBlockSaftyDoor.TabIndex = 0;
+ this.chkBlockSaftyDoor.Text = "灞忚斀瀹夊叏闂�";
+ this.chkBlockSaftyDoor.UseVisualStyleBackColor = true;
+ this.chkBlockSaftyDoor.CheckedChanged += new System.EventHandler(this.chkBlockSaftyDoor_CheckedChanged);
+ //
+ // chkBlockSafetyBeam
+ //
+ this.chkBlockSafetyBeam.AutoSize = true;
+ this.chkBlockSafetyBeam.Location = new System.Drawing.Point(95, 3);
+ this.chkBlockSafetyBeam.Name = "chkBlockSafetyBeam";
+ this.chkBlockSafetyBeam.Size = new System.Drawing.Size(98, 17);
+ this.chkBlockSafetyBeam.TabIndex = 1;
+ this.chkBlockSafetyBeam.Text = "灞忚斀瀹夊叏鍏夌嚎";
+ this.chkBlockSafetyBeam.UseVisualStyleBackColor = true;
+ this.chkBlockSafetyBeam.CheckedChanged += new System.EventHandler(this.chkBlockSafetyBeam_CheckedChanged);
+ //
+ // chkBlockBeep
+ //
+ this.chkBlockBeep.AutoSize = true;
+ this.chkBlockBeep.Location = new System.Drawing.Point(199, 3);
+ this.chkBlockBeep.Name = "chkBlockBeep";
+ this.chkBlockBeep.Size = new System.Drawing.Size(86, 17);
+ this.chkBlockBeep.TabIndex = 2;
+ this.chkBlockBeep.Text = "灞忚斀铚傞福鍣�";
+ this.chkBlockBeep.UseVisualStyleBackColor = true;
+ this.chkBlockBeep.CheckedChanged += new System.EventHandler(this.chkBlockBeep_CheckedChanged);
+ //
+ // chkManualInputForbidden
+ //
+ this.chkManualInputForbidden.AutoSize = true;
+ this.chkManualInputForbidden.Location = new System.Drawing.Point(291, 3);
+ this.chkManualInputForbidden.Name = "chkManualInputForbidden";
+ this.chkManualInputForbidden.Size = new System.Drawing.Size(122, 17);
+ this.chkManualInputForbidden.TabIndex = 4;
+ this.chkManualInputForbidden.Text = "绂佹鎵嬪姩杈撳叆鏉$爜";
+ this.chkManualInputForbidden.UseVisualStyleBackColor = true;
+ this.chkManualInputForbidden.CheckedChanged += new System.EventHandler(this.chkManualInputForbidden_CheckedChanged);
+ //
+ // btnLightSwitch
+ //
+ this.btnLightSwitch.Location = new System.Drawing.Point(419, 3);
+ this.btnLightSwitch.Name = "btnLightSwitch";
+ this.btnLightSwitch.Size = new System.Drawing.Size(75, 36);
+ this.btnLightSwitch.TabIndex = 5;
+ this.btnLightSwitch.Text = "鏃ュ厜鐏紑鍏�";
+ this.btnLightSwitch.UseVisualStyleBackColor = true;
+ this.btnLightSwitch.Click += new System.EventHandler(this.btnLightSwitch_Click);
+ //
+ // M071_ShortcutFrm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
+ this.Controls.Add(this.flowLayoutPanel1);
+ this.Name = "M071_ShortcutFrm";
this.Text = "M071_ShortcutFrm";
+ this.flowLayoutPanel1.ResumeLayout(false);
+ this.flowLayoutPanel1.PerformLayout();
+ this.ResumeLayout(false);
+
}
#endregion
+
+ private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
+ private System.Windows.Forms.CheckBox chkBlockSaftyDoor;
+ private System.Windows.Forms.CheckBox chkBlockSafetyBeam;
+ private System.Windows.Forms.CheckBox chkBlockBeep;
+ private System.Windows.Forms.CheckBox chkManualInputForbidden;
+ private System.Windows.Forms.Button btnLightSwitch;
}
}
\ No newline at end of file
diff --git a/src/Bro.M071.Process/UI/M071_ShortcutFrm.cs b/src/Bro.M071.Process/UI/M071_ShortcutFrm.cs
index 245d16d..d5961a9 100644
--- a/src/Bro.M071.Process/UI/M071_ShortcutFrm.cs
+++ b/src/Bro.M071.Process/UI/M071_ShortcutFrm.cs
@@ -6,6 +6,7 @@
using System.Drawing;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -17,6 +18,81 @@
public M071_ShortcutFrm()
{
InitializeComponent();
+
+ this.Load += (s, e) =>
+ {
+ loadHandle.Set();
+ };
+ }
+
+ ManualResetEventSlim loadHandle = new ManualResetEventSlim(false);
+ M071Config Config => Process?.IConfig as M071Config;
+ M071Process Process_M071 => Process as M071Process;
+
+ protected override bool IsLogin
+ {
+ get => base.IsLogin;
+ set
+ {
+ base.IsLogin = value;
+
+ Task.Run(() =>
+ {
+ if (loadHandle.Wait(1000))
+ {
+ this.Invoke(new Action(() =>
+ {
+ chkBlockSafetyBeam.Enabled = chkBlockSaftyDoor.Enabled = IsLogin;
+ }));
+ }
+ });
+ }
+ }
+
+ public override void OnProcessUpdated()
+ {
+ base.OnProcessUpdated();
+
+ Task.Run(() =>
+ {
+ if (loadHandle.Wait(1000))
+ {
+ this.Invoke(new Action(() =>
+ {
+ chkBlockBeep.Checked = Config.IsBeepBlocked;
+ chkBlockSafetyBeam.Checked = Config.IsSafetyBeamBlocked;
+ chkBlockSaftyDoor.Checked = Config.IsSafetyDoorBlocked;
+ chkManualInputForbidden.Checked = Config.IsBarcodeManulInputBlocked;
+ }));
+ }
+ });
+ }
+
+ private void chkBlockSaftyDoor_CheckedChanged(object sender, EventArgs e)
+ {
+ Config.IsSafetyDoorBlocked = chkBlockSaftyDoor.Checked;
+ }
+
+ private void chkBlockSafetyBeam_CheckedChanged(object sender, EventArgs e)
+ {
+ Config.IsSafetyBeamBlocked = chkBlockSafetyBeam.Checked;
+ }
+
+ private void chkBlockBeep_CheckedChanged(object sender, EventArgs e)
+ {
+ Config.IsBeepBlocked = chkBlockBeep.Checked;
+ }
+
+ private void chkManualInputForbidden_CheckedChanged(object sender, EventArgs e)
+ {
+ Config.IsBarcodeManulInputBlocked = chkManualInputForbidden.Checked;
+ }
+
+ bool isLightOn = false;
+ private void btnLightSwitch_Click(object sender, EventArgs e)
+ {
+ isLightOn = !isLightOn;
+ Process_M071.SwitchLight(isLightOn);
}
}
}
diff --git a/src/Bro.M071.Process/UI/M071_ShortcutFrm.resx b/src/Bro.M071.Process/UI/M071_ShortcutFrm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/src/Bro.M071.Process/UI/M071_ShortcutFrm.resx
@@ -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>
\ No newline at end of file
diff --git a/src/Bro.Process/Bro.Process.csproj b/src/Bro.Process/Bro.Process.csproj
index 9f6d276..c705958 100644
--- a/src/Bro.Process/Bro.Process.csproj
+++ b/src/Bro.Process/Bro.Process.csproj
@@ -168,4 +168,9 @@
<Error Condition="!Exists('..\..\packages\PostSharp.6.2.7\build\PostSharp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\PostSharp.6.2.7\build\PostSharp.targets'))" />
</Target>
<Import Project="..\..\packages\PostSharp.6.2.7\build\PostSharp.targets" Condition="Exists('..\..\packages\PostSharp.6.2.7\build\PostSharp.targets')" />
+ <ProjectExtensions>
+ <VisualStudio>
+ <UserProperties setting_1json__JsonSchema="https://batect.dev/configSchema.json" />
+ </VisualStudio>
+ </ProjectExtensions>
</Project>
\ No newline at end of file
diff --git a/src/Bro.UI.Config/AdvancedPwdFrm.cs b/src/Bro.UI.Config/AdvancedPwdFrm.cs
index f710f0b..275c534 100644
--- a/src/Bro.UI.Config/AdvancedPwdFrm.cs
+++ b/src/Bro.UI.Config/AdvancedPwdFrm.cs
@@ -76,5 +76,11 @@
CheckInputPassword();
}
}
+
+ private void btnExitLogin_Click(object sender, EventArgs e)
+ {
+ OnLoginOK?.Invoke(false);
+ this.DialogResult = DialogResult.Abort;
+ }
}
}
diff --git a/src/Bro.UI.Config/AdvancedPwdFrm.designer.cs b/src/Bro.UI.Config/AdvancedPwdFrm.designer.cs
index 8c385ef..bf7e6b6 100644
--- a/src/Bro.UI.Config/AdvancedPwdFrm.designer.cs
+++ b/src/Bro.UI.Config/AdvancedPwdFrm.designer.cs
@@ -32,11 +32,12 @@
this.label1 = new System.Windows.Forms.Label();
this.btnCancel = new System.Windows.Forms.Button();
this.btnOK = new System.Windows.Forms.Button();
+ this.btnExitLogin = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// txtPwd
//
- this.txtPwd.Font = new System.Drawing.Font("SimSun", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.txtPwd.Font = new System.Drawing.Font("瀹嬩綋", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtPwd.Location = new System.Drawing.Point(126, 28);
this.txtPwd.Name = "txtPwd";
this.txtPwd.PasswordChar = '*';
@@ -47,7 +48,7 @@
// label1
//
this.label1.AutoSize = true;
- this.label1.Font = new System.Drawing.Font("SimSun", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label1.Font = new System.Drawing.Font("瀹嬩綋", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(32, 32);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(52, 14);
@@ -57,7 +58,7 @@
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.btnCancel.Font = new System.Drawing.Font("SimSun", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.btnCancel.Font = new System.Drawing.Font("瀹嬩綋", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCancel.Location = new System.Drawing.Point(208, 63);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 23);
@@ -68,7 +69,7 @@
//
// btnOK
//
- this.btnOK.Font = new System.Drawing.Font("SimSun", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.btnOK.Font = new System.Drawing.Font("瀹嬩綋", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOK.Location = new System.Drawing.Point(289, 63);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(75, 23);
@@ -76,6 +77,18 @@
this.btnOK.Text = "OK";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.button2_Click);
+ //
+ // btnExitLogin
+ //
+ this.btnExitLogin.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.btnExitLogin.Font = new System.Drawing.Font("瀹嬩綋", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.btnExitLogin.Location = new System.Drawing.Point(12, 63);
+ this.btnExitLogin.Name = "btnExitLogin";
+ this.btnExitLogin.Size = new System.Drawing.Size(75, 23);
+ this.btnExitLogin.TabIndex = 2;
+ this.btnExitLogin.Text = "閫�鍑虹櫥褰�";
+ this.btnExitLogin.UseVisualStyleBackColor = true;
+ this.btnExitLogin.Click += new System.EventHandler(this.btnExitLogin_Click);
//
// AdvancedPwdFrm
//
@@ -85,6 +98,7 @@
this.ClientSize = new System.Drawing.Size(388, 98);
this.ControlBox = false;
this.Controls.Add(this.btnOK);
+ this.Controls.Add(this.btnExitLogin);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.label1);
this.Controls.Add(this.txtPwd);
@@ -103,5 +117,6 @@
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Button btnOK;
+ private System.Windows.Forms.Button btnExitLogin;
}
}
\ No newline at end of file
diff --git a/src/Bro.UI.Config/MainFrm.cs b/src/Bro.UI.Config/MainFrm.cs
index f35297d..39c483d 100644
--- a/src/Bro.UI.Config/MainFrm.cs
+++ b/src/Bro.UI.Config/MainFrm.cs
@@ -317,7 +317,7 @@
private void OnLoginOK(bool isLogin)
{
- IsLogin = true;
+ IsLogin = isLogin;
}
#endregion
diff --git a/src/Bro.UI.Device.Winform/CtrlCameraRunBase.Designer.cs b/src/Bro.UI.Device.Winform/CtrlCameraRunBase.Designer.cs
index 784f96b..c83ffd7 100644
--- a/src/Bro.UI.Device.Winform/CtrlCameraRunBase.Designer.cs
+++ b/src/Bro.UI.Device.Winform/CtrlCameraRunBase.Designer.cs
@@ -27,8 +27,14 @@
this.tsmiShowOpBar = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiShowElements = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiShowStatusBar = new System.Windows.Forms.ToolStripMenuItem();
+ this.tsmiBtnExecuteOpConfig = new System.Windows.Forms.ToolStripButton();
+ this.tscOpConfig = new System.Windows.Forms.ToolStripContainer();
+ this.tsmiShowOpConfig = new System.Windows.Forms.ToolStripMenuItem();
+ this.propGridOpConfig = new System.Windows.Forms.PropertyGrid();
this.toolStripOperation.SuspendLayout();
this.ctmsVisibleControl.SuspendLayout();
+ this.tscOpConfig.ContentPanel.SuspendLayout();
+ this.tscOpConfig.SuspendLayout();
this.SuspendLayout();
//
// toolStripOperation
@@ -41,7 +47,8 @@
this.toolStripOperation.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tssBtnCameraOp,
this.tsTxtExposure,
- this.tsBtnModifyExposure});
+ this.tsBtnModifyExposure,
+ this.tsmiBtnExecuteOpConfig});
this.toolStripOperation.Location = new System.Drawing.Point(38, 2);
this.toolStripOperation.Name = "toolStripOperation";
this.toolStripOperation.Size = new System.Drawing.Size(440, 28);
@@ -76,7 +83,7 @@
//
this.tsTxtExposure.Font = new System.Drawing.Font("Microsoft YaHei UI", 9F);
this.tsTxtExposure.Name = "tsTxtExposure";
- this.tsTxtExposure.Size = new System.Drawing.Size(100, 25);
+ this.tsTxtExposure.Size = new System.Drawing.Size(100, 28);
//
// tsBtnModifyExposure
//
@@ -84,7 +91,7 @@
this.tsBtnModifyExposure.Image = ((System.Drawing.Image)(resources.GetObject("tsBtnModifyExposure.Image")));
this.tsBtnModifyExposure.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsBtnModifyExposure.Name = "tsBtnModifyExposure";
- this.tsBtnModifyExposure.Size = new System.Drawing.Size(60, 22);
+ this.tsBtnModifyExposure.Size = new System.Drawing.Size(60, 25);
this.tsBtnModifyExposure.Text = "淇敼鏇濆厜";
this.tsBtnModifyExposure.Click += new System.EventHandler(this.tsBtnModifyExposure_Click);
//
@@ -94,9 +101,10 @@
this.tsmiShowToolBar,
this.tsmiShowOpBar,
this.tsmiShowElements,
- this.tsmiShowStatusBar});
+ this.tsmiShowStatusBar,
+ this.tsmiShowOpConfig});
this.ctmsVisibleControl.Name = "ctmsVisibleControl";
- this.ctmsVisibleControl.Size = new System.Drawing.Size(149, 92);
+ this.ctmsVisibleControl.Size = new System.Drawing.Size(149, 114);
//
// tsmiShowToolBar
//
@@ -130,11 +138,54 @@
this.tsmiShowStatusBar.Text = "鏄剧ず鐘舵�佹爮";
this.tsmiShowStatusBar.CheckedChanged += new System.EventHandler(this.tsmiShowStatusBar_CheckedChanged);
//
+ // tsmiBtnExecuteOpConfig
+ //
+ this.tsmiBtnExecuteOpConfig.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.tsmiBtnExecuteOpConfig.Image = ((System.Drawing.Image)(resources.GetObject("tsmiBtnExecuteOpConfig.Image")));
+ this.tsmiBtnExecuteOpConfig.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.tsmiBtnExecuteOpConfig.Name = "tsmiBtnExecuteOpConfig";
+ this.tsmiBtnExecuteOpConfig.Size = new System.Drawing.Size(84, 25);
+ this.tsmiBtnExecuteOpConfig.Text = "鎵ц鎿嶄綔閰嶇疆";
+ this.tsmiBtnExecuteOpConfig.Click += new System.EventHandler(this.tsmiBtnExecuteOpConfig_Click);
+ //
+ // tscOpConfig
+ //
+ //
+ // tscOpConfig.ContentPanel
+ //
+ this.tscOpConfig.ContentPanel.Controls.Add(this.propGridOpConfig);
+ this.tscOpConfig.ContentPanel.Size = new System.Drawing.Size(478, 175);
+ this.tscOpConfig.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.tscOpConfig.Location = new System.Drawing.Point(0, 265);
+ this.tscOpConfig.Name = "tscOpConfig";
+ this.tscOpConfig.Size = new System.Drawing.Size(478, 175);
+ this.tscOpConfig.TabIndex = 1;
+ this.tscOpConfig.Text = "toolStripContainer1";
+ this.tscOpConfig.Visible = false;
+ //
+ // tsmiShowOpConfig
+ //
+ this.tsmiShowOpConfig.CheckOnClick = true;
+ this.tsmiShowOpConfig.Name = "tsmiShowOpConfig";
+ this.tsmiShowOpConfig.Size = new System.Drawing.Size(148, 22);
+ this.tsmiShowOpConfig.Text = "鏄剧ず鎿嶄綔閰嶇疆";
+ this.tsmiShowOpConfig.CheckedChanged += new System.EventHandler(this.tsmiShowOpConfig_CheckedChanged);
+ //
+ // propGridOpConfig
+ //
+ this.propGridOpConfig.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.propGridOpConfig.Location = new System.Drawing.Point(0, 0);
+ this.propGridOpConfig.Name = "propGridOpConfig";
+ this.propGridOpConfig.Size = new System.Drawing.Size(478, 175);
+ this.propGridOpConfig.TabIndex = 0;
+ this.propGridOpConfig.ToolbarVisible = false;
+ //
// CtrlCameraRunBase
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ContextMenuStrip = this.ctmsVisibleControl;
+ this.Controls.Add(this.tscOpConfig);
this.Controls.Add(this.toolStripOperation);
this.Name = "CtrlCameraRunBase";
this.Size = new System.Drawing.Size(478, 440);
@@ -142,6 +193,9 @@
this.toolStripOperation.ResumeLayout(false);
this.toolStripOperation.PerformLayout();
this.ctmsVisibleControl.ResumeLayout(false);
+ this.tscOpConfig.ContentPanel.ResumeLayout(false);
+ this.tscOpConfig.ResumeLayout(false);
+ this.tscOpConfig.PerformLayout();
this.ResumeLayout(false);
}
@@ -158,5 +212,9 @@
private System.Windows.Forms.ToolStripMenuItem tsmiShowOpBar;
private System.Windows.Forms.ToolStripMenuItem tsmiShowElements;
private System.Windows.Forms.ToolStripMenuItem tsmiShowStatusBar;
+ private System.Windows.Forms.ToolStripButton tsmiBtnExecuteOpConfig;
+ private System.Windows.Forms.ToolStripMenuItem tsmiShowOpConfig;
+ private System.Windows.Forms.ToolStripContainer tscOpConfig;
+ private System.Windows.Forms.PropertyGrid propGridOpConfig;
}
}
diff --git a/src/Bro.UI.Device.Winform/CtrlCameraRunBase.cs b/src/Bro.UI.Device.Winform/CtrlCameraRunBase.cs
index c990ef1..84f45c6 100644
--- a/src/Bro.UI.Device.Winform/CtrlCameraRunBase.cs
+++ b/src/Bro.UI.Device.Winform/CtrlCameraRunBase.cs
@@ -1,8 +1,11 @@
-锘縰sing Bro.Common.Interface;
+锘縰sing Bro.Common.Factory;
+using Bro.Common.Helper;
+using Bro.Common.Interface;
using Bro.UI.Model.Winform;
using System;
using System.Collections.Generic;
using System.Drawing;
+using System.Reflection;
using System.Windows.Forms;
namespace Bro.Common.Base.UI
@@ -46,6 +49,17 @@
Camera.OnCameraOpModeChanged += Camera_OnCameraOpModeChanged;
InitialToolBarVisible();
+
+ string typeCode = Camera.GetType().GetCustomAttribute<DeviceAttribute>()?.TypeCode;
+
+ if (string.IsNullOrWhiteSpace(typeCode))
+ {
+ propGridOpConfig.SelectedObject = OpConfig = new CameraOprerationConfigBase();
+ }
+ else
+ {
+ propGridOpConfig.SelectedObject = OpConfig = ConfigFactory.GetOperationConfig(typeCode);
+ }
}
private readonly Dictionary<string, List<IShapeElement>> _eleBufferDict = new Dictionary<string, List<IShapeElement>>();
@@ -248,8 +262,13 @@
{
IsShowStatusBar = tsmiShowStatusBar.Checked;
}
+
+ private void tsmiShowOpConfig_CheckedChanged(object sender, EventArgs e)
+ {
+ tscOpConfig.Visible = tsmiShowOpConfig.Checked;
+ }
#endregion
-
+
public IOperationConfig OpConfig { get; set; }
public void UploadOperationConfig(IOperationConfig opConfig)
@@ -261,5 +280,10 @@
{
throw new NotImplementedException();
}
+
+ private void tsmiBtnExecuteOpConfig_Click(object sender, EventArgs e)
+ {
+ Camera.Snapshot(OpConfig);
+ }
}
}
diff --git a/src/Bro.UI.Device.Winform/CtrlCameraRunBase.resx b/src/Bro.UI.Device.Winform/CtrlCameraRunBase.resx
index 39b02af..d9da94d 100644
--- a/src/Bro.UI.Device.Winform/CtrlCameraRunBase.resx
+++ b/src/Bro.UI.Device.Winform/CtrlCameraRunBase.resx
@@ -151,6 +151,21 @@
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
+ <data name="tsmiBtnExecuteOpConfig.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+ </data>
<metadata name="ctmsVisibleControl.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>127, 17</value>
</metadata>
diff --git a/src/Bro.UI.Model.Winform/ElementBase.cs b/src/Bro.UI.Model.Winform/ElementBase.cs
index eb02a2f..899ff14 100644
--- a/src/Bro.UI.Model.Winform/ElementBase.cs
+++ b/src/Bro.UI.Model.Winform/ElementBase.cs
@@ -243,16 +243,20 @@
if (State == ElementState.MeasureDoneNG || State == ElementState.MeasureDoneOK)
return;
- if (State == ElementState.MouseInSide)
+ //if (State == ElementState.MouseInSide)
+ //{
+ // State = ElementState.Selected;
+ //}
+ //else if (State == ElementState.Selected || State == ElementState.Moving)
+ //{
+ // if (IsMouseInSide(p))
+ // {
+ // State = ElementState.MouseInSide;
+ // }
+ //}
+ if (IsMouseInSide(p))
{
State = ElementState.Selected;
- }
- else if (State == ElementState.Selected || State == ElementState.Moving)
- {
- if (IsMouseInSide(p))
- {
- State = ElementState.MouseInSide;
- }
}
}
@@ -262,22 +266,59 @@
public virtual void OnMouseDown(Point p)
{
- switch (State)
+ //switch (State)
+ //{
+ // case ElementState.New:
+ // OnMouseDownWhenNew(p);
+ // break;
+ // case ElementState.MouseHover:
+ // break;
+ // case ElementState.MouseInSide:
+ // State = ElementState.Selected;
+ // break;
+ // case ElementState.Selected:
+ // _startPoint = p;
+ // State = ElementState.Moving;
+ // break;
+ // case ElementState.Normal:
+ // break;
+ //}
+
+ if (IsMouseCanMoveElement(p) && State == ElementState.Selected)
{
- case ElementState.New:
- OnMouseDownWhenNew(p);
- break;
- case ElementState.MouseHover:
- break;
- case ElementState.MouseInSide:
- State = ElementState.Selected;
- break;
- case ElementState.Selected:
- _startPoint = p;
- State = ElementState.Moving;
- break;
- case ElementState.Normal:
- break;
+ State = ElementState.Moving;
+ }
+ else if (IsMouseCanStretchBottom(p) && State == ElementState.CanStretchBottom)
+ {
+ State = ElementState.StretchingBottom;
+ }
+ else if (IsMouseCanStretchTop(p) && State == ElementState.CanStretchTop)
+ {
+ State = ElementState.StretchingTop;
+ }
+ else if (IsMouseCanStretchLeft(p) && State == ElementState.CanStretchLeft)
+ {
+ State = ElementState.StretchingLeft;
+ }
+ else if (IsMouseCanStretchRight(p) && State == ElementState.CanStretchRight)
+ {
+ State = ElementState.StretchingRight;
+ }
+ else if (IsMouseCanStretchLeftLowerCorner(p) && State == ElementState.CanStretchLeftLowerCorner)
+ {
+ State = ElementState.StretchingLeftLowerCorner;
+ }
+ else if (IsMouseCanStretchLeftUpperCorner(p) && State == ElementState.CanStretchLeftUpperCorner)
+ {
+ State = ElementState.StretchingLeftUpperCorner;
+ }
+ else if (IsMouseCanStretchRightLowerCorner(p) && State == ElementState.CanStretchRightLowerCorner)
+ {
+ State = ElementState.StretchingRightLowerCorner;
+ }
+ else if (IsMouseCanStretchRightUpperCorner(p) && State == ElementState.CanStretchRightUpperCorner)
+ {
+ State = ElementState.StretchingRightUpperCorner;
}
}
@@ -289,27 +330,133 @@
OnMouseMoveWhenNew(p);
break;
case ElementState.Selected:
+ if (IsMouseCanStretchLeft(p))
+ {
+ State = ElementState.CanStretchLeft;
+ }
+ else if (IsMouseCanStretchRight(p))
+ {
+ State = ElementState.CanStretchRight;
+ }
+ else if (IsMouseCanStretchTop(p))
+ {
+ State = ElementState.CanStretchTop;
+ }
+ else if (IsMouseCanStretchBottom(p))
+ {
+ State = ElementState.CanStretchBottom;
+ }
+ else if (IsMouseCanStretchLeftLowerCorner(p))
+ {
+ State = ElementState.CanStretchLeftLowerCorner;
+ }
+ else if (IsMouseCanStretchLeftUpperCorner(p))
+ {
+ State = ElementState.CanStretchLeftUpperCorner;
+ }
+ else if (IsMouseCanStretchRightLowerCorner(p))
+ {
+ State = ElementState.CanStretchRightLowerCorner;
+ }
+ else if (IsMouseCanStretchRightUpperCorner(p))
+ {
+ State = ElementState.CanStretchRightUpperCorner;
+ }
+
break;
case ElementState.Moving:
_currentPoint = p;
- Translate(_currentPoint.X - _startPoint.X, _currentPoint.Y - _startPoint.Y);
- _startPoint = _currentPoint;
+ //Translate(_currentPoint.X - _startPoint.X, _currentPoint.Y - _startPoint.Y);
+ //_startPoint = _currentPoint;
+ Relocate(p);
break;
case ElementState.MouseHover:
case ElementState.MouseInSide:
case ElementState.Normal:
- if (IsMouseInSide(p))
+ //if (IsMouseInSide(p))
+ //{
+ // State = ElementState.MouseInSide;
+ //}
+ //else if (IsMouseHover(p))
+ //{
+ // State = ElementState.MouseHover;
+ //}
+ //else
+ //{
+ // State = ElementState.Normal;
+ //}
+ break;
+ case ElementState.CanStretchBottom:
+ if (!IsMouseCanStretchBottom(p))
{
- State = ElementState.MouseInSide;
+ State = ElementState.Selected;
}
- else if (IsMouseHover(p))
+ break;
+ case ElementState.CanStretchTop:
+ if (!IsMouseCanStretchTop(p))
{
- State = ElementState.MouseHover;
+ State = ElementState.Selected;
}
- else
+ break;
+ case ElementState.CanStretchLeft:
+ if (!IsMouseCanStretchLeft(p))
{
- State = ElementState.Normal;
+ State = ElementState.Selected;
}
+ break;
+ case ElementState.CanStretchRight:
+ if (!IsMouseCanStretchRight(p))
+ {
+ State = ElementState.Selected;
+ }
+ break;
+ case ElementState.CanStretchLeftUpperCorner:
+ if (!IsMouseCanStretchLeftUpperCorner(p))
+ {
+ State = ElementState.Selected;
+ }
+ break;
+ case ElementState.CanStretchLeftLowerCorner:
+ if (!IsMouseCanStretchLeftLowerCorner(p))
+ {
+ State = ElementState.Selected;
+ }
+ break;
+ case ElementState.CanStretchRightLowerCorner:
+ if (!IsMouseCanStretchRightLowerCorner(p))
+ {
+ State = ElementState.Selected;
+ }
+ break;
+ case ElementState.CanStretchRightUpperCorner:
+ if (!IsMouseCanStretchRightUpperCorner(p))
+ {
+ State = ElementState.Selected;
+ }
+ break;
+ case ElementState.StretchingTop:
+ StretchTop(p);
+ break;
+ case ElementState.StretchingBottom:
+ StretchBottom(p);
+ break;
+ case ElementState.StretchingLeft:
+ StretchLeft(p);
+ break;
+ case ElementState.StretchingRight:
+ StretchRight(p);
+ break;
+ case ElementState.StretchingLeftLowerCorner:
+ StretchLeftLowerCorner(p);
+ break;
+ case ElementState.StretchingLeftUpperCorner:
+ StretchLeftUpperCorner(p);
+ break;
+ case ElementState.StretchingRightLowerCorner:
+ StretchRightLowerCorner(p);
+ break;
+ case ElementState.StretchingRightUpperCorner:
+ StretchRightUpperCorner(p);
break;
}
}
@@ -319,15 +466,48 @@
switch (State)
{
case ElementState.Moving:
- //Calculate(null);
State = ElementState.Selected;
break;
case ElementState.Selected:
- //Calculate(null);
+ if (!IsMouseInSide(p))
+ {
+ State = ElementState.Normal;
+ }
+ break;
+ case ElementState.StretchingBottom:
+ State = ElementState.CanStretchBottom;
+ break;
+ case ElementState.StretchingLeft:
+ State = ElementState.CanStretchLeft;
+ break;
+ case ElementState.StretchingRight:
+ State = ElementState.CanStretchRight;
+ break;
+ case ElementState.StretchingTop:
+ State = ElementState.CanStretchTop;
+ break;
+ case ElementState.StretchingLeftLowerCorner:
+ State = ElementState.CanStretchLeftLowerCorner;
+ break;
+ case ElementState.StretchingLeftUpperCorner:
+ State = ElementState.CanStretchLeftUpperCorner;
+ break;
+ case ElementState.StretchingRightUpperCorner:
+ State = ElementState.CanStretchRightUpperCorner;
+ break;
+ case ElementState.StretchingRightLowerCorner:
+ State = ElementState.CanStretchRightLowerCorner;
break;
default:
+ State = ElementState.Normal;
break;
}
+
+ AfterTranformOp();
+ }
+
+ public virtual void AfterTranformOp()
+ {
}
#region 褰撳熀鍏冪姸鎬佷负鏂板缓鎴栧彲缂栬緫鏃剁殑榧犳爣鎿嶄綔鍔ㄤ綔
@@ -366,32 +546,84 @@
public abstract bool IsIntersect(Rectangle rect);
#region Move & Stretch & Move Anchor
- public virtual bool IsMouseCanMoveElement()
+ public virtual bool IsMouseCanMoveElement(Point p)
{
return false;
}
- public virtual bool IsMouseCanStretchLeft()
+ public virtual bool IsMouseCanStretchLeft(Point p)
{
return false;
}
- public virtual bool IsMouseCanStretchRight()
+ public virtual bool IsMouseCanStretchRight(Point p)
{
return false;
}
- public virtual bool IsMouseCanStretchTop()
+ public virtual bool IsMouseCanStretchTop(Point p)
{
return false;
}
- public virtual bool IsMouseCanStretchBottom()
+ public virtual bool IsMouseCanStretchBottom(Point p)
{
return false;
}
- public virtual bool IsMouseCanMoveAnchor()
+ public virtual void StretchLeft(Point p)
+ {
+ }
+
+ public virtual void StretchRight(Point p)
+ {
+ }
+
+ public virtual void StretchTop(Point p)
+ {
+ }
+
+ public virtual void StretchBottom(Point p)
+ {
+ }
+
+ public virtual bool IsMouseCanStretchLeftUpperCorner(Point p)
+ {
+ return false;
+ }
+
+ public virtual bool IsMouseCanStretchRightUpperCorner(Point p)
+ {
+ return false;
+ }
+
+ public virtual bool IsMouseCanStretchLeftLowerCorner(Point p)
+ {
+ return false;
+ }
+
+ public virtual bool IsMouseCanStretchRightLowerCorner(Point p)
+ {
+ return false;
+ }
+
+ public virtual void StretchLeftUpperCorner(Point p)
+ {
+ }
+
+ public virtual void StretchRightUpperCorner(Point p)
+ {
+ }
+
+ public virtual void StretchLeftLowerCorner(Point p)
+ {
+ }
+
+ public virtual void StretchRightLowerCorner(Point p)
+ {
+ }
+
+ public virtual bool IsMouseCanMoveAnchor(Point p)
{
return false;
}
@@ -402,6 +634,8 @@
#region 鍙樺舰鎿嶄綔
public abstract void Translate(int x, int y);
+ public virtual void Relocate(Point point) { }
+
//public abstract void RotateAt(int x, int y, float degree);
#endregion
diff --git a/src/Bro.UI.Model.Winform/UI/Canvas.cs b/src/Bro.UI.Model.Winform/UI/Canvas.cs
index 40f2b3c..16ae7be 100644
--- a/src/Bro.UI.Model.Winform/UI/Canvas.cs
+++ b/src/Bro.UI.Model.Winform/UI/Canvas.cs
@@ -77,7 +77,7 @@
set => stsStatus.Visible = value;
}
- private async void OnMouseLocationUpdated(Point screenPoint, Point imagePoint, string colorDesc)
+ private void OnMouseLocationUpdated(Point screenPoint, Point imagePoint, string colorDesc)
{
//await Task.Run(() => tsslLocation.Text = $"灞忓箷鍧愭爣X锛歿screenPoint.X}锛孻锛歿screenPoint.Y} 鍥剧墖鍧愭爣X锛歿imagePoint.X}锛孻锛歿imagePoint.Y} 棰滆壊锛歿colorDesc}");
this.Invoke(new Action(() =>
@@ -381,17 +381,17 @@
private void tsmiUnselectElements_Click(object sender, EventArgs e)
{
- if (MouseState == MouseState.SelectedElement)
- {
- MouseState = MouseState.Normal;
+ //if (MouseState == MouseState.SelectedElement)
+ //{
+ // MouseState = MouseState.Normal;
- //Elements.ForEach(ele =>
- foreach (IShapeElement ele in Elements)
- {
- ele.State = ElementState.Normal;
- }
- //);
- }
+ // //Elements.ForEach(ele =>
+ // foreach (IShapeElement ele in Elements)
+ // {
+ // ele.State = ElementState.Normal;
+ // }
+ // //);
+ //}
}
#endregion
diff --git a/src/Bro.UI.Model.Winform/UI/CanvasImage.cs b/src/Bro.UI.Model.Winform/UI/CanvasImage.cs
index 55af243..0de094a 100644
--- a/src/Bro.UI.Model.Winform/UI/CanvasImage.cs
+++ b/src/Bro.UI.Model.Winform/UI/CanvasImage.cs
@@ -30,6 +30,8 @@
MouseDown += Canvas_MouseDown;
MouseMove += Canvas_MouseMove;
MouseUp += Canvas_MouseUp;
+
+ EventRouter.ChangeElementsMouseState = OnElementChangeMouseState;
}
#region Event
@@ -261,10 +263,12 @@
MouseState = MouseState.New;
break;
case ElementState.Selected:
- MouseState = MouseState.SelectedElement;
+ CurrentElementId = ele.ID;
+ Cursor = Cursors.Default;
break;
case ElementState.Moving:
MouseState = MouseState.MoveElement;
+ Cursor = Cursors.NoMove2D;
break;
case ElementState.MouseInSide:
MouseState = MouseState.InSideElement;
@@ -272,14 +276,67 @@
case ElementState.MouseHover:
MouseState = MouseState.HoverElement;
break;
+
+ case ElementState.CanStretchLeft:
+ Cursor = Cursors.SizeWE;
+ break;
+ case ElementState.StretchingLeft:
+ MouseState = MouseState.StretchingLeft;
+ Cursor = Cursors.SizeWE;
+ break;
+ case ElementState.CanStretchBottom:
+ Cursor = Cursors.SizeNS;
+ break;
+ case ElementState.StretchingBottom:
+ MouseState = MouseState.StretchingBottom;
+ Cursor = Cursors.SizeNS;
+ break;
+ case ElementState.CanStretchRight:
+ Cursor = Cursors.SizeWE;
+ break;
+ case ElementState.StretchingRight:
+ MouseState = MouseState.StretchingRight;
+ Cursor = Cursors.SizeWE;
+ break;
+ case ElementState.CanStretchTop:
+ Cursor = Cursors.SizeNS;
+ break;
+ case ElementState.StretchingTop:
+ MouseState = MouseState.StretchingTop;
+ Cursor = Cursors.SizeNS;
+ break;
+
+ case ElementState.CanStretchLeftLowerCorner:
+ Cursor = Cursors.SizeNESW;
+ break;
+ case ElementState.StretchingLeftLowerCorner:
+ MouseState = MouseState.StretchingLeftLowerCorner;
+ Cursor = Cursors.SizeNESW;
+ break;
+ case ElementState.CanStretchLeftUpperCorner:
+ Cursor = Cursors.SizeNWSE;
+ break;
+ case ElementState.StretchingLeftUpperCorner:
+ MouseState = MouseState.StretchingLeftUpperCorner;
+ Cursor = Cursors.SizeNWSE;
+ break;
+ case ElementState.CanStretchRightLowerCorner:
+ Cursor = Cursors.SizeNWSE;
+ break;
+ case ElementState.StretchingRightLowerCorner:
+ MouseState = MouseState.StretchingRightLowerCorner;
+ Cursor = Cursors.SizeNWSE;
+ break;
+ case ElementState.CanStretchRightUpperCorner:
+ Cursor = Cursors.SizeNESW;
+ break;
+ case ElementState.StretchingRightUpperCorner:
+ MouseState = MouseState.StretchingRightUpperCorner;
+ Cursor = Cursors.SizeNESW;
+ break;
default:
MouseState = MouseState.Normal;
break;
- }
-
- if (MouseState == MouseState.SelectedElement)
- {
- CurrentElementId = ele.ID;
}
}
else
@@ -328,6 +385,7 @@
}
Point startPoint, currentPoint;
+ bool _isMouseBtnPressing = false;
private void Canvas_MouseDown(object sender, MouseEventArgs e)
{
@@ -335,49 +393,22 @@
if (e.Button == MouseButtons.Left)
{
+ _isMouseBtnPressing = true;
+
switch (MouseState)
{
case MouseState.Normal:
- //if (DrawTemplate == null && string.IsNullOrWhiteSpace(CurrentElementId))
- //{
- // this.Cursor = Cursors.Hand;
- // startPoint = e.Location;
- //}
- //else
- //{
- // MouseState = MouseState.New;
- //}
- MouseState = MouseState.MovingAll;
startPoint = e.Location;
-
- //Elements.ForEach(ele =>
- foreach (IShapeElement ele in Elements)
- {
- ele.State = ElementState.Normal;
- ele.OnMouseDown(p);
- }
- //);
break;
case MouseState.StretchingLeft:
break;
case MouseState.StretchingRight:
break;
- case MouseState.StretchingUp:
+ case MouseState.StretchingTop:
break;
- case MouseState.StretchingDown:
+ case MouseState.StretchingBottom:
break;
case MouseState.MoveElement:
- break;
- case MouseState.SelectedElement:
- //MouseState = MouseState.MoveElement;
- startPoint = e.Location;
-
- //Elements.ForEach(ele =>
- foreach (IShapeElement ele in Elements)
- {
- ele.OnMouseDown(p);
- }
- //);
break;
case MouseState.HoverElement:
case MouseState.InSideElement:
@@ -392,26 +423,16 @@
break;
}
- //if (DrawTemplate == null)
- //{
- // this.Cursor = Cursors.Hand;
- // startPoint = e.Location;
- //}
-
- //Point p = ToMapPoint(e.Location);
-
- //Elements.ForEach(ele =>
- //{
- // ele.State = ElementState.Normal;
- // ele.OnMouseDown(p);
- //});
-
- //DrawTemplate?.OnMouseDown(p);
+ foreach (IShapeElement ele in Elements)
+ {
+ ele.OnMouseDown(p);
+ }
}
}
private void Canvas_MouseUp(object sender, MouseEventArgs e)
{
+ _isMouseBtnPressing = false;
switch (MouseState)
{
case MouseState.Normal:
@@ -424,9 +445,9 @@
break;
case MouseState.StretchingRight:
break;
- case MouseState.StretchingUp:
+ case MouseState.StretchingTop:
break;
- case MouseState.StretchingDown:
+ case MouseState.StretchingBottom:
break;
case MouseState.MoveElement:
//MouseState = MouseState.SelectedElement;
@@ -443,7 +464,6 @@
case MouseState.SelectionZoneDoing:
MouseState = MouseState.SelectionZone;
- //Elements.ForEach(ele =>
foreach (IShapeElement ele in Elements)
{
if (ele.IsIntersect(_selectionRect))
@@ -451,7 +471,6 @@
ele.State = ElementState.Selected;
}
}
- //);
break;
}
@@ -460,12 +479,10 @@
Point p = ToMapPoint(e.Location);
DrawTemplate?.OnMouseUp(p);
- //Elements.ForEach(ele =>
foreach (IShapeElement ele in Elements)
{
ele.OnMouseUp(p);
}
- //);
}
private void Canvas_MouseMove(object sender, MouseEventArgs e)
@@ -475,26 +492,26 @@
switch (MouseState)
{
case MouseState.Normal:
- //Elements.ForEach(u =>
- //{
- // u.OnMouseMove(p);
- //});
+ {
+ if (_isMouseBtnPressing)
+ {
+ currentPoint = e.Location;
+ Point p1 = ToMapPoint(startPoint);
+ Point p2 = ToMapPoint(currentPoint);
+ Matrix.Translate(p2.X - p1.X, p2.Y - p1.Y);
+ startPoint = e.Location;
+ }
+ }
break;
case MouseState.StretchingLeft:
break;
case MouseState.StretchingRight:
break;
- case MouseState.StretchingUp:
+ case MouseState.StretchingTop:
break;
- case MouseState.StretchingDown:
+ case MouseState.StretchingBottom:
break;
case MouseState.MoveElement:
- //Elements.ForEach(ele =>
- foreach (IShapeElement ele in Elements)
- {
- ele.OnMouseMove(p);
- }
- //);
break;
case MouseState.HoverElement:
case MouseState.InSideElement:
@@ -504,13 +521,6 @@
case MouseState.Editing:
break;
case MouseState.MovingAll:
- {
- currentPoint = e.Location;
- Point p1 = ToMapPoint(startPoint);
- Point p2 = ToMapPoint(currentPoint);
- Matrix.Translate(p2.X - p1.X, p2.Y - p1.Y);
- startPoint = e.Location;
- }
break;
case MouseState.SelectionZoneDoing:
{
@@ -529,17 +539,6 @@
break;
}
- //if (this.Cursor == Cursors.Hand)
- //{
- // currentPoint = e.Location;
-
- // Point p1 = ToMapPoint(startPoint);
- // Point p2 = ToMapPoint(currentPoint);
- // Matrix.Translate(p2.X - p1.X, p2.Y - p1.Y);
- // startPoint = e.Location;
- //}
-
- //DisplayMouseLocation(e.Location);
Point mapPoint = ToMapPoint(e.Location);
Color color = Color.Transparent;
if (MAP != null && mapPoint.X > 0 && mapPoint.X < MAP.Width && mapPoint.Y > 0 && mapPoint.Y < MAP.Height)
@@ -550,12 +549,10 @@
if (MouseState != MouseState.SelectionZoneDoing)
{
- //Elements.ForEach(u =>
foreach (IShapeElement ele in Elements)
{
ele.OnMouseMove(p);
}
- //);
}
Invalidate();
@@ -569,7 +566,7 @@
{
switch (MouseState)
{
- case MouseState.SelectedElement:
+ //case MouseState.SelectedElement:
case MouseState.HoverElement:
case MouseState.InSideElement:
case MouseState.MoveElement:
@@ -587,7 +584,7 @@
}
else
{
- if (MouseState == MouseState.SelectedElement)
+ //if (MouseState == MouseState.SelectedElement)
{
MouseState = MouseState.Normal;
@@ -702,22 +699,22 @@
#region 鎸夐敭鎿嶄綔
public void OnCanvasKeyPressed(object sender, KeyPressEventArgs e)
{
- if (e.KeyChar == 27) //Esc
- {
- if (MouseState == MouseState.SelectedElement)
- {
- MouseState = MouseState.Normal;
+ //if (e.KeyChar == 27) //Esc
+ //{
+ // //if (MouseState == MouseState.SelectedElement)
+ // {
+ // MouseState = MouseState.Normal;
- //Elements.ForEach(ele =>
- foreach (IShapeElement ele in Elements)
- {
- ele.State = ElementState.Normal;
- }
- //);
- }
- }
+ // //Elements.ForEach(ele =>
+ // foreach (IShapeElement ele in Elements)
+ // {
+ // ele.State = ElementState.Normal;
+ // }
+ // //);
+ // }
+ //}
- Invalidate();
+ //Invalidate();
}
public void OnCanvasKeyDown(object sender, KeyEventArgs e)
@@ -741,7 +738,7 @@
Elements.Remove(Elements.FirstOrDefault(u => u.ID == CurrentElementId));
break;
case Keys.Escape:
- if (MouseState == MouseState.SelectedElement)
+ //if (MouseState == MouseState.SelectedElement)
{
MouseState = MouseState.Normal;
diff --git a/src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs b/src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs
index c472541..007a6db 100644
--- a/src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs
+++ b/src/Bro.UI.Model.Winform/UI/DockContent/MenuFrmBase.cs
@@ -2,6 +2,7 @@
using Bro.Common.Interface;
using System;
using System.Reflection;
+using System.Threading;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
@@ -23,11 +24,14 @@
//if (process != value)
{
process = value;
+
+ _constructionDoneHandle.Wait();
OnProcessUpdated();
}
}
}
+ ManualResetEventSlim _constructionDoneHandle = new ManualResetEventSlim(false);
public MenuFrmBase()
{
InitializeComponent();
@@ -37,6 +41,8 @@
{
FormClosing += MenuFrmBase_FormClosing;
}
+
+ _constructionDoneHandle.Set();
}
protected virtual void MenuFrmBase_FormClosing(object sender, FormClosingEventArgs e)
@@ -75,7 +81,7 @@
#endregion
#region Login
- protected bool IsLogin { get; set; }
+ protected virtual bool IsLogin { get; set; }
public virtual void SetLoginStatus(bool isLogin)
{
--
Gitblit v1.8.0