Переглянути джерело

样品台单元和帧图测试单元分别添加标尺

cxs 2 місяців тому
батько
коміт
6305aac0b6

+ 2 - 2
Bin/x64/Debug/Config/SysData/OTSProgMgrParam.pmf

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<XMLData RunMode="ProfessionalMode" SysType="BatteryCleannessA">
+<XMLData RunMode="ProfessionalMode" SysType="IncA">
   <Member RegName="GenParam" DefaultArea="1400" DefaultSampleName="Sample" DefaultShape="0" EngineType="2:InclutionPlusExpressionParse" MeasParamFileFolderName=".\Config\ProData\" MeasSwitch="true" PartSTDLibFolderName=".\Config\SysData\" PropertyDisplayMode="0" StdLibFileName="Cleanness_ND - 副本" SteelTechnology="0" />
   <Member RegName="ImageProcParam" AutoBGRemoveType="0:MIDDLE" BGRemoveType="1:MANUAL" MatrixStep="0" OverlapParam="0" ParticleSelectionCondition="">
     <Member RegName="BGGray" end="40" start="0" />
     <Member RegName="IncArea" end="10000" start="5" />
     <Member RegName="ParticleGray" end="255" start="0" />
   </Member>
-  <Member RegName="ImageScanParam" ImageResolution="4:_1536_1024" SatrtImageMode="0:Spiral" ScanImageSpeed="0:low" StopMode="0:CoverMode" StopParamArea="10" StopParamFields="100" StopParamMeasTime="360" StopParamParticles="5000" />
+  <Member RegName="ImageScanParam" ImageResolution="3:_1024_768" SatrtImageMode="0:Spiral" ScanImageSpeed="0:low" StopMode="0:CoverMode" StopParamArea="10" StopParamFields="100" StopParamMeasTime="360" StopParamParticles="5000" />
   <Member RegName="SpecialGrayParam" ToRun="false">
     <Collection RegName="GrayRangeList" />
   </Member>

+ 1 - 1
Bin/x64/Debug/Config/SysData/OTSReportMgrParam.rpf

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<XMLData systype="BatteryCleannessA">
+<XMLData systype="IncA">
   <Member RegName="Scale" strValue="1000" />
   <Member RegName="DefaultComputedColName" strValue="ParticleCoordinate,Area,EquivalentCircleDiameter,MaxDiameter,MinDiameter,DiameterRatio,FerretDiameter,PERP,PERI,INSCR,MEAN,ELONG,ASPECT_ELONG,Orientation,XRayDataCount" />
   <Member RegName="ElementsColName" strValue="C,O,Al,Fe,F,Ti,Na,Mn,Mg" />

+ 557 - 1
OTSIncAMeasureApp/3-OTSDisplaySourceGridData/OTSSampleVisualPropertyInfo.cs

@@ -104,10 +104,14 @@ namespace OTSMeasureApp
             else if (m_systype == OTS_SysType_ID.IncA)
             {
                SetPropItemGrpsForIncA();
+            }
+            else
+            {
+
             }
 
 
-            //样品的标题名 (Treeview的根节点名)           
+                //样品的标题名 (Treeview的根节点名)           
             this.sSampleSoluName = m_Sample.GetName();//.GetFileName();
 
             // Treeview 的样品信息  
@@ -1913,6 +1917,558 @@ namespace OTSMeasureApp
             // return property items group
             return true; ;
         }
+
+        public bool SetPropItemGrpsForSteelMineral()
+        {
+            var m_poMsrParams = m_Sample.GetMsrParams();
+            var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
+            var m_Status = m_Sample.GetMsrStatus();
+            var m_poMsrResults = m_Sample.GetMsrResults();
+
+            if (m_listPropItemGrp != null)
+            {
+                if (m_listPropItemGrp.Count > 0)
+                {
+                    m_listPropItemGrp.Clear();
+                }
+            }
+            // property items group
+            OTS_SAMPLE_PROP_GRID_ITEM_GROUPS a_nId;
+            for (int i = (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MIN; i <= (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MAX; i++)
+            {
+
+                // items list
+                List<CPropItem> a_listPropItems = new List<CPropItem>();
+                a_nId = (OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)i;
+                if (m_poMsrParams.m_runmode == RunMode.PlainMode)
+                {
+                    if (a_nId != OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL)
+                    {
+                        break;//if it's plainmode then only display the general parameter section.
+                    }
+
+                }
+                CPropItemGrp poPropItemGrp = new CPropItemGrp();
+                // property items group name
+                string strGrpName = string.Empty;
+                strGrpName = ResourceData.GetSourceTitleString((OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)a_nId);
+
+                // group name and id
+                poPropItemGrp.SetSTitle(strGrpName);
+                poPropItemGrp.SetGroupId(a_nId);
+                // set group items list
+                OTS_SAMPLE_PROP_GRID_ITEMS nItemId;
+                CPropItem poPropItem;
+                bool bShow = true;
+
+                switch (a_nId)
+                {
+                    case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL:
+                        {
+
+                            // name
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            // hole
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            // switch
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
+
+                            a_listPropItems.Add(poPropItem);
+
+                            // engine switch
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ENGINE_SWITCH;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            var engineType = m_poMsrParams.GetEngineType();
+                            if (engineType == OTS_CLASSIFY_ENGINE_TYPE.InclutionPlusExpressionParse || engineType == OTS_CLASSIFY_ENGINE_TYPE.ExpressionParse
+                                || engineType == OTS_CLASSIFY_ENGINE_TYPE.SpectrumMatch)
+                            {
+                                // STD file name
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                                int val = 0;
+                                List<string> comboDownlist = new List<string>();
+                                GetSTDFileList(ref val, ref comboDownlist);
+                                poPropItem.comboDownList = comboDownlist;
+                                poPropItem.SetItemVal(val);
+                                a_listPropItems.Add(poPropItem);
+                            }
+                            if (engineType == OTS_CLASSIFY_ENGINE_TYPE.InclutionPlusExpressionParse || engineType == OTS_CLASSIFY_ENGINE_TYPE.InclustionEngine)
+                            {
+                                // Steel technology
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                                a_listPropItems.Add(poPropItem);
+                            }
+                        }
+                        break;
+
+                    case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGESCAN:
+                        {
+                            //a_nId = ResourceID.GrpImageScan;
+                            // start mode
+                            COTSImgScanPrm pScanParam = m_poMsrParams.GetImageScanParam();
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_PHOTO_MODE;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            //// stop mode
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BUTTON, true, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            //// stop parameter
+
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
+                            a_listPropItems.Add(poPropItem);
+
+                            // field
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
+                            a_listPropItems.Add(poPropItem);
+
+                            // used time
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
+                            a_listPropItems.Add(poPropItem);
+
+                            // area
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_AREA;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            // scan speed
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            //// image resolution
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                        }
+                        break;
+
+                    case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGE_PROCESS:
+                        {
+                            //a_nId = ResourceID.GrpImageProcess;
+                            COTSImageProcParam pProcParam = m_poMsrParams.GetImageProcessParam();
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            switch (m_poMsrParams.GetImageProcessParam().GetBGRemoveType())
+                            {
+                                case OTS_BGREMOVE_TYPE.AUTO:
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+                                    // particle area min
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // particle area max
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BUTTON, true, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    break;
+                                case OTS_BGREMOVE_TYPE.MANUAL:
+
+
+                                    // BG gray level min
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // BG gray level max
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // Eigen gray level min
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // Eigen gray level max
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+                                    // particle area min
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // particle area max
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BUTTON, true, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+
+                                    break;
+                                case OTS_BGREMOVE_TYPE.MATRIX:
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MATRIXSTEP;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    break;
+                                case OTS_BGREMOVE_TYPE.WaterShed:
+                                    // BG gray level min
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // BG gray level max
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // Eigen gray level min
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // Eigen gray level max
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+                                    // particle area min
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    // particle area max
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+                                    poPropItem = new CPropItem();
+                                    nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection;
+                                    poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BUTTON, true, bShow);
+                                    a_listPropItems.Add(poPropItem);
+
+
+                                    break;
+
+                            }
+                        }
+                        break;
+
+                    case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.XRAY:
+                        {
+
+
+                            // UsingXray
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+
+                            //quantify size
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+
+                            // scan mode 
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAYSCAN_MODE;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            // analysis 
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION;//big particle AQTime
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+                            //fast xray time.
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME;//small particle AQTime
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+                            // analysis counts 
+
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                            // XrayLimit 
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
+                            a_listPropItems.Add(poPropItem);
+
+                        }
+                        break;
+                    case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.SEM:
+                        {
+                            //a_nId = ResourceID.GrpSEMParameter;
+                            // does SEM data (measure) set?
+                            CSEMDataMsr m_TempSEMDataMsr = new CSEMDataMsr();
+                            if ((m_poSEMDataMsr.GetScanFieldSize100() == m_TempSEMDataMsr.GetScanFieldSize100())
+                                && (m_poSEMDataMsr.GetTotalFields() == m_TempSEMDataMsr.GetTotalFields())
+                                && (m_poSEMDataMsr.GetWorkingDistance() == m_TempSEMDataMsr.GetWorkingDistance())
+                                && (m_poSEMDataMsr.GetScanFieldSize() == m_TempSEMDataMsr.GetScanFieldSize()))
+                            {
+                                // magnification
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // pixel size
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // working distance
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
+                                a_listPropItems.Add(poPropItem);
+                                //brightness
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BRIGHTNESS;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                                //contrast
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.CONTRAST;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                                //HV
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.HV;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                                // total field
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // total area
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                            }
+                            else
+                            {
+                                // magnification
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // pixel size
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // working distance
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                                //brightness
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BRIGHTNESS;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                                //contrast
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.CONTRAST;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                                //HV
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.HV;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // total field
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // total area
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                            }
+                        }
+                        break;
+
+                    case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_STATUS:
+                        {
+                            //a_nId = ResourceID.GrpMeasureState;
+                            // measure status 
+                            poPropItem = new CPropItem();
+                            nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU;
+                            poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
+                            a_listPropItems.Add(poPropItem);
+
+                            // has measure result?
+                            if (m_Sample.HasMeasureResult())
+                            {
+                                // start time 
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // used time 
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME_SPAN, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // finish time 
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // completed fields 
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
+                                a_listPropItems.Add(poPropItem);
+                            }
+                        }
+                        break;
+
+                    case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_RESULTS:
+                        {
+
+                            // has measure result?
+                            if (m_Sample.HasMeasureResult())
+                            {
+
+                                // radio 
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.RATIO;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // total measured area 
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // total particles 
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
+                                a_listPropItems.Add(poPropItem);
+
+                                // total particle area
+                                poPropItem = new CPropItem();
+                                nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA;
+                                poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
+                                a_listPropItems.Add(poPropItem);
+                            }
+                        }
+                        break;
+
+                    default:
+                        {
+
+                            break;
+                        }
+                }
+                poPropItemGrp.SetSampleDataList(a_listPropItems);
+                this.AddASampleDataGrp(poPropItemGrp);
+            }
+            // return property items group
+            return true; ;
+        }
         public void UpdatePropertyData()
         {
             for (int j = 0; j < SampleDataList.Count; j++)

+ 6 - 6
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/OTSSamplespaceWindow.cs

@@ -925,7 +925,7 @@ namespace OTSMeasureApp
             control_Ruler2 = new Control_Ruler();
             Point rulerLocation = new Point(10, this.Height - (int)(control_Ruler2.Height * 2));
             control_Ruler2.Location = rulerLocation;
-            this.Controls.Add(control_Ruler2);
+            this.pictureBox1.Controls.Add(control_Ruler2);
             log = NLog.LogManager.GetCurrentClassLogger();
 
             pictureBox1.BackColor = Color.Transparent;
@@ -2235,7 +2235,7 @@ namespace OTSMeasureApp
                     control_Ruler2.RulerWidth = Convert.ToInt32(control_Ruler2.RulerWidth) / 2;
                     control_Ruler2.Value = control_Ruler2.Value * 2;
                 }
-                control_Ruler2.SetValue(control_Ruler2.RulerWidth, control_Ruler2.Value.ToString());
+                control_Ruler2.SetValue(control_Ruler2.RulerWidth, control_Ruler2.Value.ToString() + "mm");
                 #endregion
 
 
@@ -2256,7 +2256,7 @@ namespace OTSMeasureApp
                         control_Ruler2.RulerWidth = Convert.ToInt32(control_Ruler2.RulerWidth) / 2;
                         control_Ruler2.Value = control_Ruler2.Value * 2;
                     }
-                    control_Ruler2.SetValue(control_Ruler2.RulerWidth, control_Ruler2.Value.ToString());
+                    control_Ruler2.SetValue(control_Ruler2.RulerWidth, control_Ruler2.Value.ToString() + "mm");
                     #endregion
                 }
             }
@@ -3129,7 +3129,7 @@ namespace OTSMeasureApp
                 control_Ruler2.RulerWidth = Convert.ToInt32(control_Ruler2.RulerWidth) / 2;
                 control_Ruler2.Value = control_Ruler2.Value * 2;
             }
-            control_Ruler2.SetValue(control_Ruler2.RulerWidth, control_Ruler2.Value.ToString());
+            control_Ruler2.SetValue(control_Ruler2.RulerWidth, control_Ruler2.Value.ToString() + "mm");
 
         }
         public void RulerInit(StageDrawingData SData)
@@ -3140,9 +3140,9 @@ namespace OTSMeasureApp
 
             //OTS宽度高度差值
             float widthDomain = Math.Abs(yDomain.X - xDomain.X);
-            int length = this.Height > this.Width ? this.Width : this.Height;
+            float length = this.Height > this.Width ? this.Width : this.Height;
             control_Ruler2.RulerWidth = (int)(length / widthDomain * 1000);
-            f_ruler_size = f_old_ruler_size = control_Ruler2.RulerWidth;
+            f_ruler_size = f_old_ruler_size = length / widthDomain * 1000;
             control_Ruler2.Value = 1000;
         }
         #endregion

+ 1 - 1
OTSIncAMeasureApp/5-OTSMeasureStatuImageFun/Control_Ruler.cs

@@ -107,7 +107,7 @@ namespace MyControls
         public void SetValue(int in_value,string showstring)
         {
             this.Width = in_value + 20; //有20的宽度是边,所以补上
-            m_showstring = showstring + "mm";
+            m_showstring = showstring;
         }
     }
 }

+ 17 - 13
OTSIncAMeasureApp/5-OTSMeasureStatuImageFun/OTSMeasureStatusWindow.Designer.cs

@@ -1,4 +1,6 @@
-namespace OTSMeasureApp
+using MyControls;
+
+namespace OTSMeasureApp
 {
     partial class OTSMeasureStatusWindow
     {
@@ -42,12 +44,12 @@
             this.MenuItemLineScan = new System.Windows.Forms.ToolStripMenuItem();
             this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
             this.PointScanElementMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.批量采集ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.ExportScanInfoMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.panelXray = new System.Windows.Forms.Panel();
             this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
             this.timer1 = new System.Windows.Forms.Timer(this.components);
             this.pictureBox2 = new System.Windows.Forms.PictureBox();
-            this.批量采集ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             ((System.ComponentModel.ISupportInitialize)(this.picBox)).BeginInit();
             this.contextMenuStrip1.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
@@ -67,6 +69,7 @@
             this.picBox.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);
             this.picBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);
             this.picBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
+            this.picBox.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseWheel);
             // 
             // contextMenuStrip1
             // 
@@ -86,12 +89,12 @@
             this.批量采集ToolStripMenuItem,
             this.ExportScanInfoMenuItem});
             this.contextMenuStrip1.Name = "contextMenuStrip1";
-            this.contextMenuStrip1.Size = new System.Drawing.Size(243, 264);
+            this.contextMenuStrip1.Size = new System.Drawing.Size(243, 242);
             this.contextMenuStrip1.Opened += new System.EventHandler(this.contextMenuStrip1_Opened);
             // 
-            // SampleParaLock
+            // AcquireBSEImageMenuItem
             // 
-            this.AcquireBSEImageMenuItem.Name = "SampleParaLock";
+            this.AcquireBSEImageMenuItem.Name = "AcquireBSEImageMenuItem";
             this.AcquireBSEImageMenuItem.Size = new System.Drawing.Size(242, 22);
             this.AcquireBSEImageMenuItem.Text = "获取BSE图";
             this.AcquireBSEImageMenuItem.Click += new System.EventHandler(this.AcquireBSEImage_Click);
@@ -161,6 +164,13 @@
             this.PointScanElementMenuItem.Text = "X-Ray采集";
             this.PointScanElementMenuItem.Click += new System.EventHandler(this.单点采集MenuItem_Click);
             // 
+            // 批量采集ToolStripMenuItem
+            // 
+            this.批量采集ToolStripMenuItem.Name = "批量采集ToolStripMenuItem";
+            this.批量采集ToolStripMenuItem.Size = new System.Drawing.Size(242, 22);
+            this.批量采集ToolStripMenuItem.Text = "批量采集";
+            this.批量采集ToolStripMenuItem.Click += new System.EventHandler(this.批量采集ToolStripMenuItem_Click);
+            // 
             // ExportScanInfoMenuItem
             // 
             this.ExportScanInfoMenuItem.Name = "ExportScanInfoMenuItem";
@@ -201,13 +211,6 @@
             this.pictureBox2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);
             this.pictureBox2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
             // 
-            // 批量采集ToolStripMenuItem
-            // 
-            this.批量采集ToolStripMenuItem.Name = "批量采集ToolStripMenuItem";
-            this.批量采集ToolStripMenuItem.Size = new System.Drawing.Size(242, 22);
-            this.批量采集ToolStripMenuItem.Text = "批量采集";
-            this.批量采集ToolStripMenuItem.Click += new System.EventHandler(this.批量采集ToolStripMenuItem_Click);
-            // 
             // OTSMeasureStatusWindow
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -220,7 +223,7 @@
             this.Controls.Add(this.picBox);
             this.Controls.Add(this.pictureBox2);
             this.DockAreas = ((OTS.WinFormsUI.Docking.DockAreas)((OTS.WinFormsUI.Docking.DockAreas.DockTop | OTS.WinFormsUI.Docking.DockAreas.Document)));
-            this.Font = new System.Drawing.Font("SimSun", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.Name = "OTSMeasureStatusWindow";
             this.Text = "OTSMeasureStatus";
             this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
@@ -257,5 +260,6 @@
         public System.Windows.Forms.PictureBox pictureBox2;
         private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
         private System.Windows.Forms.ToolStripMenuItem 批量采集ToolStripMenuItem;
+        private Control_Ruler control_Ruler;
     }
 }

+ 62 - 84
OTSIncAMeasureApp/5-OTSMeasureStatuImageFun/OTSMeasureStatusWindow.cs

@@ -1,8 +1,10 @@
-using OTS.WinFormsUI.Docking;
+using MyControls;
+using OTS.WinFormsUI.Docking;
 using OTSCLRINTERFACE;
 using OTSDataType;
 using OTSIncAGraph.Controls;
 using OTSMeasureApp._0_OTSModel.OTSDataType;
+using OTSMeasureApp._4_OTSSamplespaceGraphicsPanel;
 using OTSModelSharp;
 using OTSModelSharp.ServiceCenter;
 using OTSPeriodicTable;
@@ -50,6 +52,7 @@ namespace OTSMeasureApp
         {
             public Point position;
             private OTSMeasureStatusWindow mywin;
+
             public CrossSign(int x, int y, OTSMeasureStatusWindow win)
             {
                 position = new Point(x, y);
@@ -149,7 +152,7 @@ namespace OTSMeasureApp
         //当前默认值
         ImageType m_imagetype = ImageType.BSEImage;
 
-
+        private double f_ruler_size = 100;
 
         public OTSMeasureStatusWindow(OTSIncAMeasureAppForm MeasureApp)
         {
@@ -169,15 +172,12 @@ namespace OTSMeasureApp
 
         public void ShowSingleImage(Bitmap bmpImage)
         {
-
-
             picBox.Image = bmpImage;
             //设置Pictrue显示位置
             picBox.Height = this.RestoreBounds.Height;
             picBox.Width = this.RestoreBounds.Width;
             //获取黄线坐标位置
             originalImgRectangle = GetPictureBoxImageSize(picBox);
-
             pointStart.X = originalImgRectangle.X;
             pointEnd.X = originalImgRectangle.X + originalImgRectangle.Width;
             pointStart.Y = originalImgRectangle.Y + (originalImgRectangle.Height) / 2;
@@ -191,10 +191,10 @@ namespace OTSMeasureApp
             ImgZoomRectangle.Y = originalImgRectangle.Y;
 
             pictureBox2.Visible = false;
-
-
-
-
+            Point rulerLocation = new Point(GetZoomedImageRect(picBox).Left-10, GetZoomedImageRect(picBox).Height - (int)(control_Ruler.Height * 2));
+            control_Ruler.Location = rulerLocation;
+            //标尺初始化
+            RulerInit();
         }
         public void ShowDoubleImage(Bitmap image1, Bitmap image2)
         {
@@ -203,9 +203,6 @@ namespace OTSMeasureApp
             {
                 picBox.Image = image1;
             }
-
-
-
             //设置Pictrue显示位置
             picBox.Height = this.RestoreBounds.Height;
             picBox.Width = this.RestoreBounds.Width / 2;
@@ -230,15 +227,11 @@ namespace OTSMeasureApp
             {
                 pictureBox2.Image = image2;
             }
-
-
-
             pictureBox2.Height = this.RestoreBounds.Height;
             pictureBox2.Width = this.RestoreBounds.Width / 2;
             pictureBox2.Left = this.RestoreBounds.Width / 2;
             pictureBox2.Top = 0;
             pictureBox2.Show();
-
         }
 
 
@@ -323,6 +316,7 @@ namespace OTSMeasureApp
 
 
 
+            control_Ruler.Visible = true;
             panelXray.Visible = false;
 
 
@@ -438,10 +432,6 @@ namespace OTSMeasureApp
 
         }
         #endregion
-
-
-
-
         //显示去背景图 = AUTO
         #region 显示去背景图
         private void ShowRemoveBGImage_Click(object sender, EventArgs e)
@@ -452,6 +442,8 @@ namespace OTSMeasureApp
             ShowRemoveBGImage();
 
             panelXray.Visible = false;
+
+            control_Ruler.Visible = false;
         }
         protected void ShowRemoveBGImage()
         {
@@ -597,7 +589,8 @@ namespace OTSMeasureApp
             //设置右键菜单中的项 是否可编辑
             SetContextMenuEnabled(true);
 
-
+            control_Ruler = new Control_Ruler();
+            this.picBox.Controls.Add(control_Ruler);
 
             log = NLog.LogManager.GetCurrentClassLogger();
         }
@@ -973,7 +966,7 @@ namespace OTSMeasureApp
 
             }
 
-
+            control_Ruler.Visible = true;
             panelXray.Visible = false;
         }
 
@@ -1570,42 +1563,31 @@ namespace OTSMeasureApp
                 ImgZoomRectangle.Y = (refPoint.Y - yShift);
 
             }
-
-
-
-
-
-
-
             m_ZoomRecord = newZoom;
-
-
-
+            control_Ruler.RulerWidth = Convert.ToInt32(f_ruler_size * m_ZoomRecord);
+            control_Ruler.Value = 100;
+            //放大过长时,这里将宽度与代表的实际宽度进行折半显示
+            while (control_Ruler.Width > 300)
+            {
+                control_Ruler.RulerWidth = Convert.ToInt32(control_Ruler.RulerWidth) / 2;
+                control_Ruler.Value = control_Ruler.Value * 2;
+            }
+            control_Ruler.SetValue(control_Ruler.RulerWidth, control_Ruler.Value.ToString("0") + "um");
             picBox.Invalidate();
-            pictureBox2.Invalidate();
 
+            pictureBox2.Invalidate();
         }
-
-
-
-
-
         private void OTSMeasureStatusWindow_MouseClick(object sender, MouseEventArgs e)
         {
-
             if (e.Button == MouseButtons.Right && e.Clicks == 1)
             {
-
                 contextMenuStrip1.Show(PointToScreen(e.Location));
                 SetContentMenu();
             }
-
         }
 
         private void ViewStripMenuItem_Click(object sender, EventArgs e)
         {
-
-
             ToolWindow toolWindow = new ToolWindow(m_MeasureAppForm, this);
             int grayStart = 0;
             int grayEnd = 0;
@@ -1639,20 +1621,14 @@ namespace OTSMeasureApp
                 m_MeasureAppForm.UpdatePropertyVal();
                 //确认后进行去背景
                 var m_systype = m_MeasureAppForm.m_ProjParam.GetResultData().SystemTypeId;
-
                 ShowColoredRemoveBGImage();
-
-
             }
         }
-
         private void toolStripMenuItem1_Click(object sender, EventArgs e)
         {
             COTSSample WSample = m_MeasureAppForm.m_ProjRstData.GetWorkingSample();
             SpecialParticleForm specialParticleForm = new SpecialParticleForm( m_MeasureAppForm, originalBseData, GetIWidth(), GetIHeight(), WSample);
             DialogResult dialogResult = specialParticleForm.ShowDialog();
-
-
         }
 
         private void toolStripMenuItem2_Click(object sender, EventArgs e)
@@ -1672,9 +1648,6 @@ namespace OTSMeasureApp
             {
                 backgroundWorker1.RunWorkerAsync();
             }
-
-
-
         }
 
         private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
@@ -1689,15 +1662,10 @@ namespace OTSMeasureApp
                 log.Info("begin to show image");
                 UpdateImageAndLineScanChart();
             }
-
-
-
         }
 
         private void pictureBox2_Paint(object sender, PaintEventArgs e)
         {
-
-
             if (pictureBox2.Image != null)
             {
                 var g = e.Graphics;
@@ -1719,11 +1687,7 @@ namespace OTSMeasureApp
                     }
                 }
             }
-
         }
-
-
-
         private void OTSMeasureStatusWindow_Activated(object sender, EventArgs e)
         {
             //获取电镜中图像大小
@@ -1736,13 +1700,9 @@ namespace OTSMeasureApp
                     SetIWidth(Convert.ToInt32(sArray[0]));
                     SetIHeight(Convert.ToInt32(sArray[1]));
                 }
-
             }
-
         }
 
-
-
         private void pictureBox2_MouseClick(object sender, MouseEventArgs e)
         {
             if (e.Button == MouseButtons.Right && e.Clicks == 1)
@@ -1751,10 +1711,7 @@ namespace OTSMeasureApp
                 int YMenu = pictureBox2.Top + e.Location.Y;
                 Point mousePoint = new Point(XMenu, YMenu);
                 contextMenuStrip1.Show(PointToScreen(mousePoint));
-
                 SetContentMenu();
-
-
             }
         }
 
@@ -1764,15 +1721,12 @@ namespace OTSMeasureApp
             var ifautoid = m_MeasureAppForm.m_ProjRstData.GetWorkingSample().GetMsrParams().GetXRayParam().IfAutoId;
             var knownelements = m_MeasureAppForm.m_ProjRstData.GetWorkingSample().GetMsrParams().GetXRayParam().AnalysisElements;
             IEDSController m_EDSHardwareMgr = EDSController.GetEDSController(GetIWidth(), GetIHeight(), expC, ifautoid, knownelements);
-
             var mode = m_MeasureAppForm.m_ProjRstData.GetWorkingSample().GetMsrParams().GetXRayParam().GetScanMode();
             if (m_EDSHardwareMgr.Connect())
             {
-
                 COTSMsrPrjResultData cProjMgr = m_MeasureAppForm.m_ProjParam.GetResultData();
                 //获取工作样品对象
                 COTSSample sampleClr = cProjMgr.GetWorkingSample();
-
                 //清空之前记录的标识
                 if (m_ElementPointGDIObjects != null)
                 {
@@ -1783,8 +1737,6 @@ namespace OTSMeasureApp
                     }
                 }
 
-
-
                 //3.根据所要扫描的位置进行元素分析
                 uint a_Milliseconds = 0;
                 //采集时间
@@ -1792,33 +1744,59 @@ namespace OTSMeasureApp
 
 
                 var parts = myFld.GetListAnalysisParticles();
-
                 if (GetXRayAndElements(a_Milliseconds, parts, mode))
                 {
                     var colorImg = myFld.GetAnalysisParticleSTDColoredImage();
                     pictureBox2.Image = colorImg;
                     ExportScanInfoMenuItem.Enabled = true;
                     this.Refresh();
-
                 }
                 else
                 {
                     log.Error("get xray failed");
-                
                 }
+            }
+        }
+        #region 显示标尺
+        public void RulerInit()
+        {
+            control_Ruler.ShowString = "100um";
+            control_Ruler.Value=100;
+            int realwidth= m_MeasureAppForm.m_ProjRstData.GetWorkingSample().GetSEMDataMsr().GetScanFieldSize();
+            double width = GetZoomedImageRect(picBox).Width;
+            f_ruler_size = width*100 /realwidth ;
+            control_Ruler.SetValue((int)f_ruler_size);
+        }
+        private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
+        {
+            
+        }
+        public static Rectangle GetZoomedImageRect(PictureBox pbox)
+        {
+            if (pbox.Image == null) return Rectangle.Empty;
 
+            Size imgSize = pbox.Image.Size;
+            Size boxSize = pbox.ClientSize;
 
+            if (pbox.SizeMode != PictureBoxSizeMode.Zoom)
+                return new Rectangle(Point.Empty, imgSize);
 
-
-               
-
-
-
-
+            float imgRatio = (float)imgSize.Width / imgSize.Height;
+            float boxRatio = (float)boxSize.Width / boxSize.Height;
+            int width, height;
+            if (boxRatio > imgRatio)
+            {
+                height = boxSize.Height; width = (int)(imgSize.Width * height / imgSize.Height);
             }
-
-
+            else
+            {
+                width = boxSize.Width; height = (int)(imgSize.Height * width / imgSize.Width);
+            }
+            int x = (boxSize.Width - width) / 2;
+            int y = (boxSize.Height - height) / 2;
+            return new Rectangle(x, y, width, height);
         }
+        #endregion
     }
 }
 

+ 6 - 2
OTSIncAMeasureApp/OTSIncAMeasureAppForm.cs

@@ -184,11 +184,12 @@ namespace OTSMeasureApp
                
                         m_SamplepaceWindow.InitStageDisplay(m_ProjRstData.GetStage(),m_ProjRstData.GetSEMStageData());
 
+
                         //添加启动系统界面显示
                         var SystemType = m_ProjParam.GetDefaultParam().SystemTypeId;
                         if (SystemType == OTS_SysType_ID.IncA)
                         {
-                            this.Text += "(IncA SteelMineralA)";
+                            this.Text += "(IncA)";
                         }
                         else if (SystemType == OTS_SysType_ID.TCCleannessA)
                         {
@@ -198,7 +199,10 @@ namespace OTSMeasureApp
                         {
                             this.Text += "(BatteryCleannessA)";
                         }
-
+                        else
+                        {
+                            this.Text += "(SteelMineral)";
+                        }
                     }
                     else
                     {