본문 바로가기

C#

mschar 명령어들

출처 : http://hoons.net/Board/QACSHAP/Content/59338


이것 질문글 퍼온건데... 거의 대부분 값들이 나열되어 있어서 찾아보기 편하더라구요 ^^;


public Form1()
        {
            InitializeComponent();

            InitChart();

            InitChartSeries(InitDataSet());
        }

        /// <summary>
        /// 차트에 DataTable 형태의 바인딩 시킬 데이터
        /// </summary>
        /// <returns></returns>
        private DataSet InitDataSet()
        {
            DataTable dtResult = new DataTable();

            DataColumn dcName = new DataColumn("Name");
            DataColumn dcValue = new DataColumn("Value");

            dtResult.Columns.Add(dcName);
            dtResult.Columns.Add(dcValue);

            //DataSet ds = null;
            DataRow dr = null;

            dr = dtResult.NewRow();
            dr["Name"] = "물류구간";
            dr["Value"] = 54;
            dtResult.Rows.Add(dr);

            dr = dtResult.NewRow();
            dr["Name"] = "역행구간";
            dr["Value"] = 17;
            dtResult.Rows.Add(dr);

            dr = dtResult.NewRow();
            dr["Name"] = "흐름구간";
            dr["Value"] = 87;
            dtResult.Rows.Add(dr);

            dr = dtResult.NewRow();
            dr["Name"] = "망할구간";
            dr["Value"] = 77;
            dtResult.Rows.Add(dr);

            dr = dtResult.NewRow();
            dr["Name"] = "제길구간";
            dr["Value"] = 26;
            dtResult.Rows.Add(dr);

            dtResult.AcceptChanges();

            DataSet dsResult = new DataSet();
            dsResult.Tables.Add(dtResult);

            DataTable dtResult2 = new DataTable();

            DataColumn dcName1 = new DataColumn("Name");
            DataColumn dcValue1 = new DataColumn("Value");

            dtResult2.Columns.Add(dcName1);
            dtResult2.Columns.Add(dcValue1);

            dr = dtResult2.NewRow();
            dr["Name"] = "a";
            dr["Value"] = 201;
            dtResult2.Rows.Add(dr);

            dr = dtResult2.NewRow();
            dr["Name"] = "b";
            dr["Value"] = 11;
            dtResult2.Rows.Add(dr);

            dr = dtResult2.NewRow();
            dr["Name"] = "c";
            dr["Value"] = 107;
            dtResult2.Rows.Add(dr);

            dr = dtResult2.NewRow();
            dr["Name"] = "d";
            dr["Value"] = 33;
            dtResult2.Rows.Add(dr);

            dr = dtResult2.NewRow();
            dr["Name"] = "e";
            dr["Value"] = 26;
            dtResult2.Rows.Add(dr);

            dtResult2.AcceptChanges();
            dsResult.Tables.Add(dtResult2);

            //ds = new DataSet();
            //ds.Tables.Add(dtResult);

            return dsResult;
        }

        /// <summary>
        /// 차트의 초기 속성 설정
        /// </summary>
        private void InitChart()
        {
            // 기존 차트 영역 삭제
            chart1.Titles.Clear();
            chart1.Legends.Clear();
            chart1.Series.Clear();
            chart1.ChartAreas.Clear();

            // 차트 영역 이름 설정
            string chartName = "ChartArea";
            chart1.ChartAreas.Add(chartName);

            // 차트 영역 배경 설정
            chart1.ChartAreas[chartName].BackColor = Color.WhiteSmoke;
            chart1.ChartAreas[chartName].BackSecondaryColor = Color.WhiteSmoke;

            //string chartSecondName = "ChartSecondName";
            //chart1.ChartAreas.Add(chartSecondName);

            //chart1.ChartAreas[chartSecondName].BackColor = Color.Azure;
            //chart1.ChartAreas[chartSecondName].BackSecondaryColor = Color.Beige;
            //chart1.ChartAreas[chartSecondName].BackGradientStyle = GradientStyle.Center;

            chart1.Titles.Add("오동's 차트연습");
        }

        /// <summary>
        /// 차트의 Series 속성 설정 및 데이타 바인딩
        /// </summary>
        /// <param name="dtResult"></param>
        private void InitChartSeries(DataSet dsResult)
        {
            double maxValue = this.FindMaxValue(dsResult, 1, "Value");
            double minValue = this.FindMinValue(dsResult, 1, "Value");

            string seriesName = "SeriesName";
            chart1.Series.Add(seriesName);

            chart1.Series[seriesName].ChartType = SeriesChartType.Column;
            chart1.Series[seriesName].BorderDashStyle = ChartDashStyle.Solid;
            chart1.Series[seriesName].BorderWidth = 1;
            chart1.Series[seriesName].Enabled = true;
            chart1.Series[seriesName].IsValueShownAsLabel = true; // 데이터 값을 표시
            chart1.Series[seriesName].IsVisibleInLegend = true; // 범례 표시
            chart1.Series[seriesName].LabelToolTip = "#VALX : #VALY점";
            chart1.Series[seriesName].ToolTip = "#VALX : #VALY점";
            chart1.Series[seriesName].Font = new Font("굴림", 12.0F, FontStyle.Regular);
            chart1.Series[seriesName].CustomProperties = "DrawingStyle=Cylinder"; // 이걸 사용하면 원통형으로 나옴

            string seriesSecondName = "seriesSecondName";
            chart1.Series.Add(seriesSecondName);

            chart1.Series[seriesSecondName].ChartType = SeriesChartType.Line;
            chart1.Series[seriesSecondName].MarkerSize = 15;
            chart1.Series[seriesSecondName].MarkerStyle = MarkerStyle.Circle;
            chart1.Series[seriesSecondName].MarkerColor = Color.Yellow;
            chart1.Series[seriesSecondName].BorderWidth = 4;
            chart1.Series[seriesSecondName].BorderColor = Color.Black;
            chart1.Series[seriesSecondName].BorderDashStyle = ChartDashStyle.Solid;
            chart1.Series[seriesSecondName].Enabled = true;
            chart1.Series[seriesSecondName].IsValueShownAsLabel = true;
            chart1.Series[seriesSecondName].IsVisibleInLegend = true;
            chart1.Series[seriesSecondName].LabelToolTip = "#VALX : #VALYm";
            chart1.Series[seriesSecondName].ToolTip = "#VALX : #VALYm";
            chart1.Series[seriesSecondName].Font = new Font("굴림", 12.0F, FontStyle.Regular);
            chart1.Series[seriesSecondName].CustomProperties = "DrawingStyle=Cylinder";

            #region <주, 보조 축의 간격과 속성 설정>

            ChartArea3DStyle chartArea3DStyle = new ChartArea3DStyle();
            chartArea3DStyle.Enable3D = false;
            chartArea3DStyle.LightStyle = LightStyle.Realistic;
            chartArea3DStyle.Rotation = 30;
            chartArea3DStyle.Inclination = 50;
            chartArea3DStyle.PointDepth = 20;
            chart1.ChartAreas["ChartArea"].Area3DStyle = chartArea3DStyle;

            chart1.ChartAreas["ChartArea"].AxisY.LabelStyle.Interval = maxValue / 10;
            chart1.ChartAreas["ChartArea"].AxisY.IntervalType = DateTimeIntervalType.Number;
            //chart1.ChartAreas["ChartArea"].AxisY.IntervalOffset = maxValue / 10;
            //chart1.ChartAreas["ChartArea"].AxisY.IntervalOffsetType = DateTimeIntervalType.Number;
            chart1.ChartAreas["ChartArea"].AxisY.Minimum = 0;
            chart1.ChartAreas["ChartArea"].AxisY.Maximum = maxValue;
            chart1.ChartAreas["ChartArea"].AxisY.IsMarginVisible = true; // 축의 여백을 표시할지 여부를 설정
            chart1.ChartAreas["ChartArea"].AxisY.LabelStyle.Format = "###,0 점";
           
            // 보조 축을 사용하기 위한 설정이며, ChartAreas[...] -> 안에는 차트의 이름을 넣어준다.
            // 지정하지 않았다면, 지정하려는 차트의 인덱스 번호를 넣어준다.
            chart1.ChartAreas["ChartArea"].AxisY.Enabled = AxisEnabled.True;
            chart1.ChartAreas["ChartArea"].AxisY2.Enabled = AxisEnabled.True;
            chart1.ChartAreas["ChartArea"].AxisY2.Minimum = 0;
            chart1.ChartAreas["ChartArea"].AxisY2.Maximum = maxValue; //maxValue + (maxValue / 10) * 3;
            chart1.ChartAreas["ChartArea"].AxisY2.LabelStyle.Interval = maxValue / 10; //(maxValue + (maxValue / 10) * 3) / 10;
            chart1.ChartAreas["ChartArea"].AxisY2.IntervalType = DateTimeIntervalType.Number;
            chart1.ChartAreas["ChartArea"].AxisY2.IsMarginVisible = false; // 이녀석을 설정하던지, 미니멈 맥시멈을 지정해주던지 하면된다.
            chart1.ChartAreas["ChartArea"].AxisY2.LabelStyle.Format = "###,0 m";


            //chart1.ChartAreas["ChartName"].AxisY2.LabelStyle.IntervalOffset = 1;
           
            //if (chart1.ChartAreas["ChartName"].AxisY.LabelStyle.Format != "60")
            //{
            //    chart1.ChartAreas["ChartName"].AxisY2.LineColor = Color.Red;
            //    chart1.ChartAreas["ChartName"].AxisY2.LineDashStyle = ChartDashStyle.DashDot;
            //}

            //chart1.ChartAreas["ChartName"].AxisY.LabelStyle.IsStaggered = true; --> 이 녀석을 사용하면 지그재그 형태로 라벨이 나타남
            //chart1.ChartAreas["ChartName"].AxisY.LabelAutoFitStyle = LabelAutoFitStyles.LabelsAngleStep90;
            //chart1.ChartAreas["ChartName"].AxisY.ScaleBreakStyle.BreakLineStyle = BreakLineStyle.Straight;
            //chart1.ChartAreas["ChartName"].AxisY.MajorGrid.Enabled = true;

            /* 축의 주 모눈선과 눈금 속성을 설정합니다. */
            chart1.ChartAreas["ChartArea"].AxisX.MajorGrid.Enabled = false;
            chart1.ChartAreas["ChartArea"].AxisX.MajorTickMark.Enabled = true;
            chart1.ChartAreas["ChartArea"].AxisY.MajorGrid.Enabled = true;
            chart1.ChartAreas["ChartArea"].AxisY.MajorTickMark.Enabled = true;
            chart1.ChartAreas["ChartArea"].AxisY2.MajorGrid.Enabled = true;
            chart1.ChartAreas["ChartArea"].AxisY2.MajorTickMark.Enabled = true;

            /* 보조 축의 주 모눈선과 눈금 속성을 설정합니다. */
            chart1.ChartAreas["ChartArea"].AxisX.MinorGrid.Enabled = false;
            chart1.ChartAreas["ChartArea"].AxisX.MinorTickMark.Enabled = false;
            chart1.ChartAreas["ChartArea"].AxisY.MinorGrid.Enabled = false;
            chart1.ChartAreas["ChartArea"].AxisY.MinorTickMark.Enabled = false;
            chart1.ChartAreas["ChartArea"].AxisY2.MinorGrid.Enabled = false;
            chart1.ChartAreas["ChartArea"].AxisY2.MinorTickMark.Enabled = false;

            #endregion <주, 보조 축의 간격과 속성 설정>

            int min = -1;
            int index = -1;

            // 최소값을 찾아 빨간색으로 ChartType을 그려주기 위한 로직
            for (int i = 0; i < dsResult.Tables[0].Rows.Count; i++)
            {
                int current = Convert.ToInt32(dsResult.Tables[0].Rows[i]["Value"]);

                if (min == -1)
                {
                    min = current;
                    index = i;
                }
                else
                {
                    // 최소값을 찾을 때 까지, 아래 if문을 탐
                    if (min > current)
                    {
                        min = current;
                        index = i;
                    }
                }
            }

            foreach (DataRow dRow in dsResult.Tables[0].Rows) // 데이타 바인딩
            {
                chart1.Series[seriesName].Points.AddXY(dRow["Name"].ToString(), dRow["Value"].ToString());
            }

            chart1.Series[seriesName].Points[index].Color = Color.Red; // 최소값은 빨간색으로 표시

            foreach (DataRow dRow in dsResult.Tables[1].Rows) // 데이타 바인딩
            {
                chart1.Series[seriesSecondName].Points.AddXY(dRow["Name"].ToString(), dRow["Value"].ToString());
            }


}

 

        /// <summary>
        /// DataSet 형태로 넘어온 사용자가 지정한 테이블 중, 지정한 컬럼 값들의 최대값을 구합니다.
        /// </summary>
        /// <param name="dsResult">DataSet</param>
        /// <param name="tableSeq">DataSet이 포함한 테이블의 시퀀스</param>
        /// <param name="columnName">컬럼명</param>
        /// <returns></returns>
        private double FindMaxValue(DataSet dsResult, int tableSeq, string columnName)
        {
            double minValue = -1;
            double maxValue = 0;

            // 매개변수 DataSet에서 Value의 최대값과 최소값을 찾기위한 로직
            for (int i = 0; i < dsResult.Tables[0].Rows.Count; i++)
            {
                double current = Convert.ToDouble(dsResult.Tables[tableSeq].Rows[i][columnName]);

                if (minValue == -1)
                {
                    minValue = current;
                }
                else
                {
                    // 최대값을 찾을 때 까지, 아래 if문을 탐
                    if (minValue < current)
                    {
                        if (maxValue < current)
                        {
                            maxValue = current;
                        }
                    }
                    else
                    {
                        maxValue = minValue;
                    }

                    // 최소값을 찾을 때 까지, 아래 if문을 탐
                    if (minValue > current)
                    {
                        minValue = current;
                    }
                }
            }
            return maxValue;
        }

        /// <summary>
        /// DataSet 형태로 넘어온 사용자가 지정한 테이블 중, 지정한 컬럼 값들의 최소값을 구합니다.
        /// </summary>
        /// <param name="dsResult">DataSet</param>
        /// <param name="tableSeq">DataSet이 포함한 테이블의 시퀀스</param>
        /// <param name="columnName">컬럼명</param>
        /// <returns></returns>
        private double FindMinValue(DataSet dsResult, int tableSeq, string columnName)
        {
            double minValue = -1;
            double maxValue = 0;

            // 매개변수 DataSet에서 Value의 최대값과 최소값을 찾기위한 로직
            for (int i = 0; i < dsResult.Tables[tableSeq].Rows.Count; i++)
            {
                double current = Convert.ToDouble(dsResult.Tables[0].Rows[i][columnName]);

                if (minValue == -1)
                {
                    minValue = current;
                }
                else
                {
                    // 최대값을 찾을 때 까지, 아래 if문을 탐
                    if (minValue < current)
                    {
                        if (maxValue < current)
                        {
                            maxValue = current;
                        }
                    }
                    else
                    {
                        maxValue = minValue;
                    }

                    // 최소값을 찾을 때 까지, 아래 if문을 탐
                    if (minValue > current)
                    {
                        minValue = current;
                    }
                }
            }
            return minValue;
        }

'C#' 카테고리의 다른 글

String과 string 차이  (0) 2013.09.20
partial Class  (0) 2012.11.23