vs2013代码规范的方式

 

1.首先resharper在代码重构以及规范方面的很全面,对于其中快捷键的掌握也是很重要的环节。

当项目初期由于时

间紧迫,难以在保证工期的同时保证质量时候,resharper是一个很不错的选择。

但是养成良好的代码习惯是很重要,这样才是真正事半功倍的方式。

2.code  maid自动排版 https://www.cnblogs.com/clark159/p/4003542.html

3.stylecop 作为微软内部代码审核的工具,在格式方面是异常的严格,通过resharp对于代码重构之后,通过stylecop是修剪细节

,这个修剪的过程中,我也学会了一些常见的代码的格式。

4.c#  outline对于语句块的折叠很分层很好用。

5.indent guides 增加代码行与行之间对其的垂直线。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using HalconDotNet;
using Tztek.C311.Alg.Mark;
namespace TestBgaMeasure
{
    public partial class Form1 : Form
    {
      /// <summary>
     /// 输入图像
     /// </summary>
     public HObject Image;
      /// <summary>
     /// 模板学习ROI
     /// </summary>
     public AlgRoi MaskLearnRoi;
     /// <summary>
     /// 模板学习参数
     /// </summary>
     public AlgPara LearnFromImagePara;
     /// <summary>
     /// 边缘检测参数
     /// </summary>
     public AlgPara BodyLoactionPara;
     /// <summary>
     /// 测量以及缺陷检测参数
     /// </summary>
     public AlgPara MeasureDectectBallPara;
     /// <summary>
     /// 所有参数
     /// </summary>
     public BgaMeasurePara Para;
      
     public Form1()
        {
            InitializeComponent();
            ucHalcon1.InitUcHalcon();     
             Para = new BgaMeasurePara()
            {
                EdgecalipersNumber1 = "30",
                CalipersHeight1 = "160",
                CalipersWidth1 = "15",
                GaussFilterFactor1 = "1",
                EdgeDetectThreshold1 = "20",
                EdgePolarity1 = "negative",
                EdgePointSelect1 = "last",
                MinThreshold1 = "10",
                MaxThreshold1 = "255",
                BasePlateMinLength1 = "1900",
                BasePlateMaxLength1 = "2500",
                BallDiameterMin1 = "15",
                BallDiameterMax1 = "25",
                BallQualitySmallCircle1 = "0.2",
                BallQualityMidCircle1 = "0.5",
                BallQualityBiglCircle1 = "1"
            };
            propertyGrid1.SelectedObject = Para;
            ApplyPara();
        } 
        /// <summary>
        /// 加载图像
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
     private void btn_LoadImage_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                HOperatorSet.GenEmptyObj(out Image);
                HOperatorSet.ReadImage(out Image, openFileDialog1.FileName);
                ucHalcon1.DispImage(Image);
            }
        }
        /// <summary>
        /// 参数应用
        /// </summary>
     private void ApplyPara()
     { 
        LearnFromImagePara = new AlgPara() { 
            ParaDic = new Dictionary<string, string>()
        { 
            { "边缘卡尺个数", Para.EdgecalipersNumber1 }, 
            { "卡尺高度", Para.CalipersHeight1 },
            { "卡尺宽度", Para.CalipersWidth1 },
            { "高斯滤波因子", Para.GaussFilterFactor1 }, 
            { "边缘检测阈值", Para.EdgeDetectThreshold1 }, 
            { "边缘极性", Para.EdgePolarity1 }, 
            { "边缘强度点选择", Para.EdgePointSelect1 }, 
            { "阈值分割下限", Para.MinThreshold1 }, 
            { "阈值分割上限", Para.MaxThreshold1 }, 
            { "基板下限", Para.BasePlateMinLength1 }, 
            { "基板上限", Para.BasePlateMaxLength1 }, 
            { "球直径下限", Para.BallDiameterMin1 }, 
            { "球直径上限", Para.BallDiameterMax1 }, 
            { "球品质分析小球直径", Para.BallQualitySmallCircle1 }, 
            { "球品质分析中球直径", Para.BallQualityMidCircle1 }, 
            { "球品质分析正常球直径", Para.BallQualityBiglCircle1 } 
        } 
        };
        BodyLoactionPara = new AlgPara() { 
            ParaDic = new Dictionary<string, string>()
        {
            { "边缘卡尺个数", Para.EdgecalipersNumber1 }, 
            { "卡尺高度", Para.CalipersHeight1 }, 
            { "卡尺宽度", Para.CalipersWidth1 }, 
            { "高斯滤波因子", Para.GaussFilterFactor1 },
            { "边缘检测阈值", Para.EdgeDetectThreshold1 }, 
            { "边缘极性", Para.EdgePolarity1 }, 
            { "边缘强度点选择", Para.EdgePointSelect1 } 
        }
        };
        MeasureDectectBallPara = new AlgPara() { 
             ParaDic = new Dictionary<string, string>() 
       { 
           { "灰度阈值下限", Para.MinThreshold1 }, 
           { "球的最小直径", Para.BallDiameterMin1 }, 
           { "球的最大直径", Para.BasePlateMaxLength1 }, 
           { "球品质分析正常球直径", Para.BallQualityMidCircle1 }, 
           { "球品质分析小球直径", Para.BallQualitySmallCircle1 }, 
           { "球品质分析大球直径", Para.BallQualityBiglCircle1 }
       }
       };
       }
        /// <summary>
        /// 参数应用
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
     private void btn_ApplyPara_Click(object sender, EventArgs e)
        {
            ApplyPara();
        }
        /// <summary>
        /// 绘制产品区域掩膜
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
     private void btn_DrawMask_Click(object sender, EventArgs e)
        {
            HTuple row1; HTuple row2; HTuple col1; HTuple col2;
            ucHalcon1.Window.SetColor("green");
            HOperatorSet.DrawRectangle1(ucHalcon1.Window, out col1, out col2, out row1, out row2);
            HObject roi;
            HOperatorSet.GenEmptyObj(out roi);
            HOperatorSet.GenRectangle1(out roi, col1, col2, row1, row2);
            roi.DispObj(ucHalcon1.Window);
            HOperatorSet.WriteRegion(roi, "Roi.hobj");
            MaskLearnRoi = new AlgRoi { roiList = new List<HObject> { roi } };
        }
        /// <summary>
        /// 生成灰度模板以及掩膜
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
      private void btn_GenTempleAndMask_Click(object sender, EventArgs e)
        {
            var alg = new BgaFactory(LearnFromImagePara, MaskLearnRoi).CreateAlg("LearnFromImage");
            alg.Process(Image.SelectObj(1), ucHalcon1.hWindowControl1.HalconWindow);

            var resultValues = alg.GetResultValue();
            List<string> modelColstr2;
            List<string> modelRowstr2;
            resultValues.ResultDic.TryGetValue("工件坐标系Row", out modelRowstr2);
            resultValues.ResultDic.TryGetValue("工件坐标系Column", out modelColstr2);
            var mat2D = new HTuple();
            var r1 = HalconHepler.ConvertListStr2Htuple(modelRowstr2);
            var c1 = HalconHepler.ConvertListStr2Htuple(modelColstr2);
            HOperatorSet.WriteTuple(r1, "R.tuple");
            HOperatorSet.WriteTuple(c1, "C.tuple");
            HOperatorSet.GenEmptyObj(out ucHalcon1.MouseHwindow._objshow);
            ucHalcon1.Window.SetColored(12);
            foreach (var obj in alg.GetResultRegion())
            {
                obj.DispObj(ucHalcon1.Window);
                HOperatorSet.ConcatObj(ucHalcon1.MouseHwindow._objshow, obj, out ucHalcon1.MouseHwindow._objshow);
            }
        }
        /// <summary>
        /// 进行二维测量
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
      private void btn_2dMeasure_Click(object sender, EventArgs e)
        {
            HObject roi;
            HOperatorSet.GenEmptyObj(out roi);
            HOperatorSet.ReadRegion(out roi, "Roi.hobj");
            var algRoi2 = new AlgRoi { roiList = new List<HObject> { roi } };
            var factroFactory = new BgaFactory(BodyLoactionPara, algRoi2);
            var alg = factroFactory.CreateAlg("BodyLoaction");
            HOperatorSet.SelectObj(Image, out Image, 1);
            alg.Process(Image, ucHalcon1.hWindowControl1.HalconWindow);  
            var resultValues2 = alg.GetResultValue();
            ucHalcon1.Window.SetColored(12);
            foreach (var obj in alg.GetResultRegion())
            {
                obj.DispObj(ucHalcon1.Window);
            }
            #region   计算坐标系的偏斜

            List<string> modelColstr2;
            List<string> modelRowstr2;
            resultValues2.ResultDic.TryGetValue("工件坐标系Row", out modelRowstr2);
            resultValues2.ResultDic.TryGetValue("工件坐标系Column", out modelColstr2);
            HTuple mat2d;
            HTuple r2 = HalconHepler.ConvertListStr2Htuple(modelRowstr2);
            HTuple c2 = HalconHepler.ConvertListStr2Htuple(modelColstr2);
            HTuple r1;
            HTuple c1;
            HOperatorSet.ReadTuple("R.tuple", out r1);
            HOperatorSet.ReadTuple("C.tuple", out c1);
            HOperatorSet.VectorToHomMat2d(r1, c1, r2, c2, out mat2d);
            HObject ballRegion;
            HOperatorSet.GenEmptyObj(out ballRegion);
            HOperatorSet.ReadRegion(out ballRegion, "BallRegion.hobj");
            HObject roiAffine;
            HOperatorSet.GenEmptyObj(out roiAffine);
            HOperatorSet.AffineTransRegion(ballRegion, out roiAffine, mat2d, "nearest_neighbor");
            roiAffine.DispObj(ucHalcon1.Window);
            HOperatorSet.ConcatObj(roiAffine, ucHalcon1.MouseHwindow._objshow, out ucHalcon1.MouseHwindow._objshow);
            #endregion
            var algRoi4 = new AlgRoi { roiList = new List<HObject> { roiAffine } };
            var Alg1 = new BgaFactory(MeasureDectectBallPara, algRoi4).CreateAlg("MeasureDectectBall");
            HOperatorSet.SelectObj(Image, out Image, 1);
            Alg1.Process(Image, ucHalcon1.hWindowControl1.HalconWindow);
            var resultRegions4 = Alg1.GetResultRegion();
            var resultValues4 = Alg1.GetResultValue();
            listBox1.Items.Clear();
            foreach (var value in resultValues4.ResultDic)
            {
                listBox1.Items.Add(value.Key);
                var values = value.Value;
                var temp = values.Aggregate("", (current, resultValue) => current + (resultValue + ", "));
                listBox1.Items.Add(temp);
            }
        }
    }
}

 

期末大作业基于python的足球运动员数据分析源码+数据集(高分项目),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于pyth
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值