Selaa lähdekoodia

fix bugs while operating the visual stage.

gsp 3 vuotta sitten
vanhempi
commit
54464d4e53

+ 27 - 21
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/CreateRectangle.cs

@@ -805,6 +805,7 @@ namespace OTSMeasureApp
             var measureItem = this;
             //重新绘制测量区域路径
             GraphicsPath GPath = new GraphicsPath();
+        
             if (measureItem.CreateType == CreateRectangleType.Polygon)
             {
                 GraphicsPath PolygonMeasurePath = new GraphicsPath();
@@ -826,8 +827,8 @@ namespace OTSMeasureApp
                     GPath.AddRectangle(GetZoomedRegionF());
                 }
             }
-            g_Path = GPath;
-            return g_Path;
+          
+            return GPath;
 
         }
 
@@ -980,28 +981,35 @@ namespace OTSMeasureApp
         public  void Zoom(PointF mousePoint, float zoomNum)
 
         {
-            if (m_zoomNum == 1)
+            float X1;
+            float curZoom = m_zoomNum;
+            float deltaZoom = zoomNum - curZoom;
+            float Y1;
+            if (zoomNum == 1)
             {
+                m_zoomNum = 1;
                 m_RegionF = m_OrigineRegionF;
                 m_refPoint = new PointF(0, 0);
                 m_PolygonPoints = m_originalPolygonPoints;
-            } 
-            float X1;
-            float curZoom = m_zoomNum;
+            }
+            else 
+            {
+              
 
-            float deltaZoom = zoomNum - curZoom;
-            float Y1;
-           
-            X1 = (m_RegionF.X - mousePoint.X) / curZoom * deltaZoom + m_RegionF.X;
-            Y1 = (m_RegionF.Y - mousePoint.Y) / curZoom * deltaZoom + m_RegionF.Y;
+                X1 = (m_RegionF.X - mousePoint.X) / curZoom * deltaZoom + m_RegionF.X;
+                Y1 = (m_RegionF.Y - mousePoint.Y) / curZoom * deltaZoom + m_RegionF.Y;
+
+                m_refPoint.X = (m_refPoint.X - mousePoint.X) / curZoom * deltaZoom + m_refPoint.X;
+                m_refPoint.Y = (m_refPoint.Y - mousePoint.Y) / curZoom * deltaZoom + m_refPoint.Y;
+
+                float Width = GetOrigionalDrawRegionF().Width * zoomNum;
+                float Height = GetOrigionalDrawRegionF().Height * zoomNum;
+                m_RegionF = new RectangleF(X1, Y1, Width, Height);
+                m_zoomNum = zoomNum;
 
-            m_refPoint.X= (m_refPoint.X-mousePoint.X)/ curZoom * deltaZoom+m_refPoint.X;
-            m_refPoint.Y = (m_refPoint.Y - mousePoint.Y) / curZoom * deltaZoom + m_refPoint.Y;
 
-            float Width = GetOrigionalDrawRegionF().Width * zoomNum;
-            float Height = GetOrigionalDrawRegionF().Height * zoomNum;
-            m_RegionF = new RectangleF(X1, Y1, Width, Height);
-            m_zoomNum = zoomNum;
+            } 
+           
            
 
 
@@ -1048,9 +1056,7 @@ namespace OTSMeasureApp
 
 
             m_RegionF = new RectangleF(X1, Y1, m_RegionF.Width, m_RegionF.Height);
-            SetZoomedRegionF(m_RegionF);
-
-
+        
 
             m_refPoint.X = m_refPoint.X + offset.X;
             m_refPoint.Y = m_refPoint.Y + offset.Y;
@@ -1200,7 +1206,7 @@ namespace OTSMeasureApp
         protected RectangleF m_RegionF;
         //绘制时与移动缩放时记录的位置与尺寸
         protected RectangleF m_OrigineRegionF;
-        private GraphicsPath g_Path=new GraphicsPath();
+        //private GraphicsPath g_Path=new GraphicsPath();
         private PointF startPoint;
         private PointF endPoint;
     

+ 77 - 78
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/OTSSamplespaceWindow.cs

@@ -1037,6 +1037,7 @@ namespace OTSMeasureApp
                 this.m_MouseDownPoint = new Point(e.X, e.Y);
 
                 COTSSample workSample = m_MeasureAppForm.m_ProjParam.GetWorkSample();
+                if (workSample == null) return;
                 string sampleHoleName = workSample.GetSampleHoleName();
                 string sampleName = workSample.GetName();
                
@@ -1071,7 +1072,7 @@ namespace OTSMeasureApp
                           
 
                             var sam = GetVisualSampleByName(sampleName);
-                                
+                            if (sam == null) return;
                             sam.SetMeasureGDIObject(polygonGdi);
 
                             
@@ -1154,6 +1155,7 @@ namespace OTSMeasureApp
 
 
                         var sam1 = GetVisualSampleByName(sampleName);
+                        if (sam1 == null) return;
                         sam1.SetMeasureGDIObject(m_DrawMeasureGDIObject);
                         sam1.GetMeasureGDIObject().SetZoomedRegionF(rectangleThree);
                         m_DrawMeasureGDIObject = null;
@@ -1205,9 +1207,6 @@ namespace OTSMeasureApp
                         m_DrawMeasureGDIObject = newGDI;
 
 
-
-                  
-                   
                     return;
                 }
             }
@@ -1728,17 +1727,17 @@ namespace OTSMeasureApp
                   
                 }
             }
-  
-            if (Control.ModifierKeys == Keys.Control)//is dragging on the edge or on the vertex so we can alter the size of the item.
-            {
 
-                    var sam = GetWorkingVisualSample();
-                     
-                    var curMeasureGdi = sam.GetMeasureGDIObject();
+   
 
-                      
-                            if (curMeasureGdi.IsAltering)//click on the  edge or on the polygon point( vertex point of rectangle).
-                            {
+               
+           if( (Control.ModifierKeys == Keys.Control))//is dragging on the edge or on the vertex so we can alter the size of the item.
+            {
+                var sam = GetWorkingVisualSample();
+                if (sam == null) return;
+                var curMeasureGdi = sam.GetMeasureGDIObject();
+                if (curMeasureGdi.IsAltering)//click on the  edge or on the polygon point( vertex point of rectangle).
+                    {
 
                                         if (curMeasureGdi.CreateType == CreateRectangleType.Polygon)
                                         {
@@ -1907,7 +1906,7 @@ namespace OTSMeasureApp
             Invalidate();
 
         }
-       
+
         protected override void OnMouseUp(MouseEventArgs e)
         {
             //如果正在进行测量线程,则退出鼠标点击操作
@@ -1915,76 +1914,76 @@ namespace OTSMeasureApp
             {
                 return;
             }
-            //判断当前是否手绘
-            if (m_IsDrawMeasure)
+            var selWSampleMeasureStatus = m_MeasureAppForm.m_ProjParam.GetWorkSampleMeasureStatus();
+            if (selWSampleMeasureStatus)
             {
+                return;
+            }
+            var sam = GetWorkingVisualSample();
 
-                //绘制多边形
-                if (m_DrawMeasureType != CreateRectangleType.Polygon && m_DrawMeasureType != CreateRectangleType.CircleByThreePoints)
+            //判断当前是否手绘
+          
+                if (m_IsDrawMeasure)
                 {
+                    
+                        //绘制多边形
+                        if (m_DrawMeasureType != CreateRectangleType.Polygon && m_DrawMeasureType != CreateRectangleType.CircleByThreePoints)
+                        {
 
-                    var item = m_DrawMeasureGDIObject;
-                    //获取样品孔名称与其他属性
-                    var sam = GetVisualSampleByName(item.SampleName);
-                    item.NameOrHoleName = sam.GetMeasureGDIObject().NameOrHoleName;
-                             
-                    item.IsWorkSample = sam.GetMeasureGDIObject().IsWorkSample;
-                       
-                    sam.GetMeasureFieldGDIObjects().Clear();
-                    sam.SetMeasureGDIObject(item);
+                            var item = m_DrawMeasureGDIObject;
 
-                    var para = m_visualStage.GetSampleMeasurePara(item);
 
-                    m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(para);
+                            item.NameOrHoleName = sam.GetMeasureGDIObject().NameOrHoleName;
 
-                               
-                    m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                    CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                    PrepareMeasureField(sam);
+                            item.IsWorkSample = sam.GetMeasureGDIObject().IsWorkSample;
 
+                            sam.GetMeasureFieldGDIObjects().Clear();
+                            sam.SetMeasureGDIObject(item);
 
-                    m_DrawMeasureGDIObject = null;
-                    
-                    this.Cursor = Cursors.Default;
-                    //设置手绘标识
-                  
-                    m_IsDrawMeasure = false;
-                }
-            }
+                            var para = m_visualStage.GetSampleMeasurePara(item);
 
+                            m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(para);
 
-           
-            if (Control.ModifierKeys == Keys.Control)//while pressing ctrl key then it must be altering something(position or size)
+
+                            m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+                            CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+                            PrepareMeasureField(sam);
+
+
+                            m_DrawMeasureGDIObject = null;
+
+                            this.Cursor = Cursors.Default;
+                            //设置手绘标识
+
+                            m_IsDrawMeasure = false;
+                        }
+
+             }
+
+
+
+            if (sam != null)
             {
-                
-                var selWSampleMeasureStatus = m_MeasureAppForm.m_ProjParam.GetWorkSampleMeasureStatus();
-                if (selWSampleMeasureStatus)
-                {
-                    return;
-                }
-                var sam = GetWorkingVisualSample();
-                if (sam == null)
-                {
-                    return;
-                }
+
                 var measureItem = sam.GetMeasureGDIObject();
+                if (measureItem.IsDragging || measureItem.IsAltering)//while pressing ctrl key then it must be altering something(position or size)
+                {
 
-               
+                    var para = m_visualStage.GetSampleMeasurePara(measureItem);
+                    m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(para);//set the altering result to the public parameter object
 
-                var para = m_visualStage.GetSampleMeasurePara(measureItem);
-                m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(para);//set the altering result to the public parameter object
 
-                  
-                this.Cursor = System.Windows.Forms.Cursors.Default;
- 
-                m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+                    this.Cursor = System.Windows.Forms.Cursors.Default;
 
-                PrepareMeasureField(sam);
+                    m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+                    CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
 
-                measureItem.IsAltering = false;
-                measureItem.IsDragging = false;
-                Invalidate();
+                    PrepareMeasureField(sam);
+
+                    measureItem.IsAltering = false;
+                    measureItem.IsDragging = false;
+                    Invalidate();
+                }
             }
             //only moving the whole stage
             MouseUpFucntion(m_visualStage.GetAllGDIObject(), e);
@@ -2041,7 +2040,7 @@ namespace OTSMeasureApp
         }
         protected override void OnMouseWheel(MouseEventArgs e)
         {
-            var m_GlobalZoomNum = m_visualStage.GetZoomNum();
+            var currentZoomNum = m_visualStage.GetZoomNum();
             //如果正在进行测量线程,则退出鼠标点击操作
             if (m_MeasureAppForm.MeasureThreadRunFlag)
             {
@@ -2051,7 +2050,7 @@ namespace OTSMeasureApp
             {
                 #region 计算标尺尺寸部份-----放大------
                 //计算标尺实际占用像素的宽度
-                f_ruler_size = f_old_ruler_size * m_GlobalZoomNum;
+                f_ruler_size = f_old_ruler_size * currentZoomNum;
                 control_Ruler2.RulerWidth = Convert.ToInt32(f_ruler_size);
                 control_Ruler2.Value = 1;
 
@@ -2070,10 +2069,10 @@ namespace OTSMeasureApp
             else
             {
 
-                if (m_GlobalZoomNum >= f_zoom_mix)
+                if (currentZoomNum >= f_zoom_mix)
                 {
                     #region 计算标尺尺寸部份-----缩小
-                    f_ruler_size = f_old_ruler_size * m_GlobalZoomNum;
+                    f_ruler_size = f_old_ruler_size * currentZoomNum;
                     control_Ruler2.RulerWidth = Convert.ToInt32(f_ruler_size);
                     control_Ruler2.Value = 1;
 
@@ -2091,20 +2090,20 @@ namespace OTSMeasureApp
             //设置记录每次比例缩放后的总体比例系数
             if (e.Delta > 0)
             {
-                m_GlobalZoomNum += 0.1f;
+                currentZoomNum += 0.1f;
 
                
             }
             else
             {
-                m_GlobalZoomNum -= 0.1f;
-                if (m_GlobalZoomNum < 1)
+                currentZoomNum -= 0.1f;
+                if (currentZoomNum < 1)
                 {
-                    m_GlobalZoomNum = 1;
+                    currentZoomNum = 1;
                 }
                 
 
-                if (m_GlobalZoomNum == 1)
+                if (currentZoomNum == 1)
                 {
           
                     //标尺恢复初始
@@ -2116,11 +2115,11 @@ namespace OTSMeasureApp
                 }
             }
 
-            MouseWheelFunction(m_ImageGDIObjects, e.Location, m_GlobalZoomNum);
+            MouseWheelFunction(m_ImageGDIObjects, e.Location, currentZoomNum);
 
-            MouseWheelFunction(GetAllVisualSampleGDIObject(), e.Location, m_GlobalZoomNum);
+            MouseWheelFunction(GetAllVisualSampleGDIObject(), e.Location, currentZoomNum);
             //样品孔
-            MouseWheelFunction(m_visualStage.GetAllGDIObject(), e.Location, m_GlobalZoomNum);
+            MouseWheelFunction(m_visualStage.GetAllGDIObject(), e.Location, currentZoomNum);
 
 
 

+ 1 - 1
OTSIncAMeasureApp/OTSIncAMeasureAppForm.cs

@@ -288,7 +288,7 @@ namespace OTSMeasureApp
 
 
             //设置获取帧图状态
-            m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+            //m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
             m_SPropertyWindows.DisplaySampleMeasureInfo(SMInfo);
             //发送新的样品名给Treeview
             m_SolutionWindows.SwitchSample(sNewWorkSampleName);