|
@@ -42,9 +42,9 @@ namespace OTSMeasureApp
|
|
|
|
|
|
|
|
|
//BSE图像
|
|
|
- public static List<CRectangleGDIObject> m_ImageGDIObjects;
|
|
|
- //BSE图像帧图 为了获取位置与尺寸
|
|
|
- public static List<CRectangleGDIObject> m_ImageOfFieldGDIObjects;
|
|
|
+ public List<CRectangleGDIObject> m_AllHoleImageGDIObjects;
|
|
|
+ ////BSE图像帧图 为了获取位置与尺寸
|
|
|
+ public List<CRectangleGDIObject> m_AllHoleImageOfFieldGDIObjects;
|
|
|
//手绘测量区域
|
|
|
public static CRectangleGDIObject m_DrawMeasureGDIObject=new CRectangleGDIObject();
|
|
|
|
|
@@ -141,6 +141,7 @@ namespace OTSMeasureApp
|
|
|
//手绘测量区域类型为圆形
|
|
|
m_DrawMeasureType = CreateRectangleType.Circle;
|
|
|
m_IsDrawMeasure = true;
|
|
|
+ m_DrawMeasureGDIObject = null;
|
|
|
this.Cursor = Cursors.Hand;
|
|
|
}
|
|
|
/// <summary>
|
|
@@ -152,6 +153,7 @@ namespace OTSMeasureApp
|
|
|
m_DrawMeasureType = CreateRectangleType.SampleBackGround_Rectangle;
|
|
|
|
|
|
m_IsDrawMeasure = true;
|
|
|
+ m_DrawMeasureGDIObject = null;
|
|
|
this.Cursor = Cursors.Hand;
|
|
|
}
|
|
|
/// <summary>
|
|
@@ -161,7 +163,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
m_DrawMeasureType = CreateRectangleType.Polygon;
|
|
|
m_IsDrawMeasure = true;
|
|
|
-
|
|
|
+ m_DrawMeasureGDIObject = null;
|
|
|
this.Cursor = Cursors.Hand;
|
|
|
}
|
|
|
|
|
@@ -173,7 +175,7 @@ namespace OTSMeasureApp
|
|
|
//手绘测量区域类型为圆形
|
|
|
m_DrawMeasureType = CreateRectangleType.CircleByThreePoints;
|
|
|
m_IsDrawMeasure = true;
|
|
|
-
|
|
|
+ m_DrawMeasureGDIObject = null;
|
|
|
this.Cursor = Cursors.Hand;
|
|
|
}
|
|
|
public void DrawRingShapeArea()
|
|
@@ -280,7 +282,8 @@ namespace OTSMeasureApp
|
|
|
case "ShootBSEPicture":
|
|
|
//设置消息类型 拍摄样品孔
|
|
|
m_MeasureAppForm.SetRunType(MSR_RUN_TYPE.RUNSampleHoleImage);
|
|
|
-
|
|
|
+
|
|
|
+ TransferBseImageToWindow();
|
|
|
//清除原图片信息
|
|
|
DeleteHoleBSEImageDataNoMessageBox();
|
|
|
|
|
@@ -817,13 +820,13 @@ namespace OTSMeasureApp
|
|
|
m_visualStage = new CVisualStage();
|
|
|
|
|
|
m_visualSamples = new List<CVisualSampleArea>();
|
|
|
-
|
|
|
-
|
|
|
- //样品孔BSE图像
|
|
|
- m_ImageGDIObjects = new List<CRectangleGDIObject>();
|
|
|
- //BSE图像帧图为了获取位置与尺寸
|
|
|
- m_ImageOfFieldGDIObjects = new List<CRectangleGDIObject>();
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ //样品孔BSE图像
|
|
|
+ m_AllHoleImageGDIObjects = new List<CRectangleGDIObject>();
|
|
|
+ //BSE图像帧图为了获取位置与尺寸
|
|
|
+ m_AllHoleImageOfFieldGDIObjects = new List<CRectangleGDIObject>();
|
|
|
+
|
|
|
this.ResizeRedraw = true;
|
|
|
control_Ruler2 = new Control_Ruler();
|
|
|
Point rulerLocation = new Point(10, this.Height - (int)(control_Ruler2.Height * 2));
|
|
@@ -1243,7 +1246,7 @@ namespace OTSMeasureApp
|
|
|
_Point = this.PointToClient(Cursor.Position);
|
|
|
bool IsTrue = false;
|
|
|
//设置编辑右键菜单项
|
|
|
- foreach (CRectangleGDIObject imageItem in m_ImageGDIObjects)
|
|
|
+ foreach (CRectangleGDIObject imageItem in sam2.m_ImageGDIObjects)
|
|
|
{
|
|
|
if (imageItem.SampleName == item.SampleName)
|
|
|
{
|
|
@@ -1294,7 +1297,7 @@ namespace OTSMeasureApp
|
|
|
//删除BSE照片
|
|
|
bool IsTrue = false;
|
|
|
//设置编辑右键菜单项
|
|
|
- foreach (CRectangleGDIObject imageItem in m_ImageGDIObjects)
|
|
|
+ foreach (CRectangleGDIObject imageItem in item.m_ImageGDIObjects)
|
|
|
{
|
|
|
if (imageItem.SampleName == item.GetSampleName())
|
|
|
{
|
|
@@ -1322,20 +1325,24 @@ namespace OTSMeasureApp
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- foreach (CRectangleGDIObject item in m_ImageGDIObjects)
|
|
|
+ if (GetWorkingVisualSample() != null)
|
|
|
{
|
|
|
- if (item.IfZoomContains(e.Location))
|
|
|
+ foreach (CRectangleGDIObject item in GetWorkingVisualSample().m_ImageGDIObjects)
|
|
|
{
|
|
|
- //样品孔菜单
|
|
|
-
|
|
|
- _Point = this.PointToClient(Cursor.Position);
|
|
|
- //设置编辑右键菜单项
|
|
|
- SetShowCMStrip(ContextMenuType.SampleHoleBSEImage, CMStrip, false);
|
|
|
- this.CMStrip.Show(this, _Point);
|
|
|
- return;
|
|
|
+ if (item.IfZoomContains(e.Location))
|
|
|
+ {
|
|
|
+ //样品孔菜单
|
|
|
+
|
|
|
+ _Point = this.PointToClient(Cursor.Position);
|
|
|
+ //设置编辑右键菜单项
|
|
|
+ SetShowCMStrip(ContextMenuType.SampleHoleBSEImage, CMStrip, false);
|
|
|
+ this.CMStrip.Show(this, _Point);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
//只点击样品上(测量区域被移动到其他地方)
|
|
|
for (int i = m_visualSamples.Count - 1; i >= 0; i--)
|
|
|
{
|
|
@@ -1425,7 +1432,9 @@ namespace OTSMeasureApp
|
|
|
|
|
|
|
|
|
//样品台中BSE图片
|
|
|
- MouseDownFunction(m_ImageGDIObjects, e);
|
|
|
+ MouseDownFunction(GetWorkingVisualSample().m_ImageGDIObjects, e);
|
|
|
+
|
|
|
+ MouseDownFunction(m_AllHoleImageGDIObjects, e);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -1897,12 +1906,16 @@ namespace OTSMeasureApp
|
|
|
|
|
|
//样品
|
|
|
MouseMoveFucntion(GetAllVisualSampleGDIObject(), e);
|
|
|
-
|
|
|
+ if (GetWorkingVisualSample() != null)
|
|
|
+ {
|
|
|
//样品孔BSE图片
|
|
|
- MouseMoveFucntion(m_ImageGDIObjects, e);
|
|
|
-
|
|
|
+ MouseMoveFucntion(GetWorkingVisualSample().m_ImageGDIObjects, e);
|
|
|
+
|
|
|
+ }
|
|
|
+ MouseMoveFucntion(m_AllHoleImageGDIObjects, e);
|
|
|
|
|
|
- }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
|
|
|
//显示XY轴
|
|
@@ -1992,14 +2005,18 @@ namespace OTSMeasureApp
|
|
|
MouseUpFucntion(m_visualStage.GetAllGDIObject(), e);
|
|
|
//样品
|
|
|
MouseUpFucntion(GetAllVisualSampleGDIObject(), e);
|
|
|
-
|
|
|
-
|
|
|
- //样品孔中BSE图片
|
|
|
- MouseUpFucntion(m_ImageGDIObjects, e);
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
+ if (GetWorkingVisualSample() != null)
|
|
|
+ {
|
|
|
+ //样品孔中BSE图片
|
|
|
+ MouseUpFucntion(GetWorkingVisualSample().m_ImageGDIObjects, e);
|
|
|
+
|
|
|
+ }
|
|
|
+ MouseUpFucntion(m_AllHoleImageGDIObjects, e);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
protected override void OnPaint(PaintEventArgs e)//处理重绘情况
|
|
|
{
|
|
|
|
|
@@ -2011,10 +2028,20 @@ namespace OTSMeasureApp
|
|
|
|
|
|
if (IsShowSampleHoleImage)
|
|
|
{
|
|
|
- if (m_ImageGDIObjects.Count > 0)
|
|
|
+ if (GetWorkingVisualSample() != null)
|
|
|
+ {
|
|
|
+ if (GetWorkingVisualSample().m_ImageGDIObjects.Count > 0)
|
|
|
+ {
|
|
|
+ OnPaint(e, GetWorkingVisualSample().m_ImageGDIObjects);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (m_AllHoleImageGDIObjects.Count > 0)
|
|
|
{
|
|
|
- OnPaint(e, m_ImageGDIObjects);
|
|
|
+ OnPaint(e, m_AllHoleImageGDIObjects);
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
OnPaint(e, GetAllVisualFieldGdiObject());
|
|
|
|
|
@@ -2032,7 +2059,7 @@ namespace OTSMeasureApp
|
|
|
}
|
|
|
public void OnPaint(PaintEventArgs e, List<CRectangleGDIObject> m_ObjectGDIObjects)//处理重绘情况
|
|
|
{
|
|
|
- foreach (CRectangleGDIObject item in m_ObjectGDIObjects)
|
|
|
+ foreach (CRectangleGDIObject item in m_ObjectGDIObjects.ToArray())
|
|
|
{
|
|
|
if (item != null)
|
|
|
{
|
|
@@ -2116,8 +2143,16 @@ namespace OTSMeasureApp
|
|
|
control_Ruler2.SetValue(control_Ruler2.RulerWidth);
|
|
|
}
|
|
|
}
|
|
|
+ if (GetWorkingVisualSample() != null)
|
|
|
+ {
|
|
|
|
|
|
- MouseWheelFunction(m_ImageGDIObjects, e.Location, currentZoomNum);
|
|
|
+ MouseWheelFunction(GetWorkingVisualSample().m_ImageGDIObjects, e.Location, currentZoomNum);
|
|
|
+ }
|
|
|
+ if (m_AllHoleImageGDIObjects.Count > 0)
|
|
|
+ {
|
|
|
+ MouseWheelFunction(m_AllHoleImageGDIObjects, e.Location, currentZoomNum);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
MouseWheelFunction(GetAllVisualSampleGDIObject(), e.Location, currentZoomNum);
|
|
|
//样品孔
|
|
@@ -2399,21 +2434,25 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
|
|
|
m_visualStage.cleargdiobj();
|
|
|
+ var sam = GetWorkingVisualSample();
|
|
|
|
|
|
-
|
|
|
- m_visualSamples.Clear();
|
|
|
- if (m_ImageGDIObjects != null)
|
|
|
- {
|
|
|
- m_ImageGDIObjects.Clear();
|
|
|
- }
|
|
|
- if (m_ImageOfFieldGDIObjects != null)
|
|
|
- {
|
|
|
- m_ImageOfFieldGDIObjects.Clear();
|
|
|
- }
|
|
|
- if (m_DrawMeasureGDIObject != null)
|
|
|
+ if (sam != null)
|
|
|
{
|
|
|
- m_DrawMeasureGDIObject = null;
|
|
|
+ if (sam.m_ImageGDIObjects != null)
|
|
|
+ {
|
|
|
+ sam.m_ImageGDIObjects.Clear();
|
|
|
+ }
|
|
|
+ if (sam.m_ImageOfFieldGDIObjects != null)
|
|
|
+ {
|
|
|
+ sam.m_ImageOfFieldGDIObjects.Clear();
|
|
|
+ }
|
|
|
+ if (m_DrawMeasureGDIObject != null)
|
|
|
+ {
|
|
|
+ m_DrawMeasureGDIObject = null;
|
|
|
+ }
|
|
|
}
|
|
|
+ m_visualSamples.Clear();
|
|
|
+
|
|
|
|
|
|
|
|
|
}
|
|
@@ -2651,7 +2690,7 @@ namespace OTSMeasureApp
|
|
|
{
|
|
|
r.SetDisplayRefPoint(m_visualStage.GetDisplayRefPoint());
|
|
|
r.SetZoomNumber(m_visualStage.GetZoomNum());
|
|
|
- m_ImageOfFieldGDIObjects.Add(r);
|
|
|
+ sam.m_ImageOfFieldGDIObjects.Add(r);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -2945,15 +2984,15 @@ namespace OTSMeasureApp
|
|
|
RectangleF ImgRegionF;
|
|
|
float ImgRegionWidth;
|
|
|
float ImgRegionHeight ;
|
|
|
- if (m_ImageOfFieldGDIObjects.Count > 0)
|
|
|
+ if (sam.m_ImageOfFieldGDIObjects.Count > 0)
|
|
|
{
|
|
|
- for (int i = 0; i < m_ImageOfFieldGDIObjects.Count; i++)
|
|
|
+ for (int i = 0; i < sam.m_ImageOfFieldGDIObjects.Count; i++)
|
|
|
{
|
|
|
|
|
|
var ctrlPos = m_visualStage.OTSCoordToCtrlCoord(fieldPos);
|
|
|
- if (m_ImageOfFieldGDIObjects[i].IfContains(ctrlPos))
|
|
|
+ if (sam.m_ImageOfFieldGDIObjects[i].IfContains(ctrlPos))
|
|
|
{
|
|
|
- ImgRegionF = m_ImageOfFieldGDIObjects[i].GetOrigionalDrawRegionF();
|
|
|
+ ImgRegionF = sam.m_ImageOfFieldGDIObjects[i].GetOrigionalDrawRegionF();
|
|
|
ImgRegionWidth = Convert.ToInt32(ImgRegionF.Width);
|
|
|
ImgRegionHeight = Convert.ToInt32(ImgRegionF.Height);
|
|
|
|
|
@@ -2963,11 +3002,11 @@ namespace OTSMeasureApp
|
|
|
//绘制图像
|
|
|
CRectangleGDIObject createImageRect =new CRectangleGDIObject (ImgRegionF, fieldPos.X, fieldPos.Y, itemWorkSample.SampleName, itemWorkSample.NameOrHoleName, bseImage, ImgRegionWidth, ImgRegionHeight, CreateRectangleType.DrawSampleHoleBSEImage);
|
|
|
//添加至List集合中
|
|
|
- createImageRect.SetInitRegionF(m_ImageOfFieldGDIObjects[i].GetOrigionalDrawRegionF());
|
|
|
- createImageRect.NameOrHoleName = m_ImageOfFieldGDIObjects[i].NameOrHoleName;
|
|
|
+ createImageRect.SetInitRegionF(sam.m_ImageOfFieldGDIObjects[i].GetOrigionalDrawRegionF());
|
|
|
+ createImageRect.NameOrHoleName =sam. m_ImageOfFieldGDIObjects[i].NameOrHoleName;
|
|
|
createImageRect.SetZoomNumber(m_visualStage.GetZoomNum());
|
|
|
createImageRect.SetDisplayRefPoint(m_visualStage.GetDisplayRefPoint());
|
|
|
- m_ImageGDIObjects.Add(createImageRect);
|
|
|
+ sam. m_ImageGDIObjects.Add(createImageRect);
|
|
|
|
|
|
break;
|
|
|
}
|
|
@@ -2983,12 +3022,18 @@ namespace OTSMeasureApp
|
|
|
|
|
|
public void DeleteHoleBSEImageDataNoMessageBox()
|
|
|
{
|
|
|
-
|
|
|
- m_ImageOfFieldGDIObjects.Clear();
|
|
|
- m_ImageGDIObjects.Clear();
|
|
|
- Invalidate();
|
|
|
+
|
|
|
+ GetWorkingVisualSample().m_ImageOfFieldGDIObjects.Clear();
|
|
|
+ GetWorkingVisualSample().m_ImageGDIObjects.Clear();
|
|
|
+ Invalidate();
|
|
|
|
|
|
}
|
|
|
+ public void TransferBseImageToWindow()
|
|
|
+ {
|
|
|
+ m_AllHoleImageGDIObjects.AddRange(GetWorkingVisualSample().m_ImageGDIObjects);
|
|
|
+ m_AllHoleImageOfFieldGDIObjects.AddRange(GetWorkingVisualSample().m_ImageOfFieldGDIObjects);
|
|
|
+ Invalidate();
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 获取样品孔图片
|