ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 5. 배열/ Chart / Two Charts / 수학함수 그리기/ Timer- 디지털 시계)
    비주얼 프로그래밍 2024. 4. 10. 03:38
    더보기

    # 배열

     

    foreach (var value in a)

    //var은 어떤 자료형에도 사용 가능, foreach 문장은 배열의 크기를 알지 않아도 사용 가능하다.

     

    //Random 클래스
    // 클래스의 객체 생성 클래스_이름 객체_이름 = new 클래스_이름();
    //Random r = new Random();    // Random 클래스의 객체 r을 생성
    //Button btn = new Button();    // Button 클래스의 객체 bnt 생성
    
    //객체의 활용  - 클래스의 속성과 메소드를 사용
    // r.Next();    // 0~20억 사이의 값
    // r.Next(100);  // 0~99 사이의 값
    // r.Next(1,7);  // 1~6 사이의 값
    // r.NextDouble();  // 0에서 1.0 미만의 값
    
     static void Main(string[] args)
     {
         int[] a = new int[10];
    
         for(int i = 0; i < a.Length; i++) // (a.Length를 10이라고 써도 된다. 왜냐하면 a가 배열이고 a.Length는 배열의 길이니깐 10이라고 써도 무관하다.)
         {
            a[i] = int.Parse(Console.ReadLine());
         }
    }
    // 배열에 10개의 랜덤값 저장
     Random r = new Random();
     for (int i = 0; i < 10; i++)
         a[i] = r.Next(1000);
    // 모든 원소 출력
    
    //인덱스 사용
    for(int i = 0; i<10; i++)
    Console.Write(a[i] + " ");
    Console.WriteLine();
    
    //foreach 사용
    
    foreach(var x in a)
        Console.Write(x + " ");
        Console.WriteLine();
    // 원소의 합 출력
    int sum = 0;
    for (int i = 0; i < 10; i++)
        sum += a[i];
        Console.WriteLine("합 =" + sum);
    
    int sum2 = 0;
    foreach (var x in a)
        sum2 += x;
        Console.WriteLine("합 =" + sum2);
    // 가장 큰 값 출력
    int max = a[0];
    for (int i = 1; i <10; i++) 
        if(max < a[i])
            max = a[i];
    
    Console.WriteLine("최대값 =" + max);

     

    더보기

    #chart

    1. 폼 생성

    2. 도구 상자 -> 데이터 -> 차트 선택 

    3. 차트 선택 후 폼 안에 삽입

    4. 속성 레이아웃에서 Dock fill을 클릭하여 꽉찬 화면으로 설정

    5. 코드 작성

    private void Form1_Load(object sender, EventArgs e)
    {
        // 차트컨트롤을 사용하여
        // 랜덤하게 1~100사이의 값을 그래프로 그려라
        Random r = new Random();
    
        for(int i = 0; i < 10; i++)
        {
            chart1.Series[0].Points.Add(r.Next(101));
        }
        chart1.Series[0].LegendText = "비주얼\n프로그래밍";
        chart1.Titles.Add("성적");
    }

     

     

    더보기

    #Two chsrts

    1. 폼을 생성해줍니다.

    2. 도구상자 -> Chart  / 도구상자 -> 버튼 (( Text: 버튼1- 합쳐서 그리기 / 버튼2- 나누어 그리기 ))

      * 폼의 Text : Using Chart Control로 변경해줍니다.

    private void Form1_Load(object sender, EventArgs e)
     {
         chart1.Titles.Add("중간고사 성적");
    
         //Series2 추가
         chart1.Series.Add("Series2");
    
         chart1.Series[0].LegendText = "수학";
         chart1.Series[1].LegendText = "영어";
    
         Random r = new Random();
    
         for(int i =1; i<=10; i++)
         {
             chart1.Series[0].Points.AddXY(i, r.Next(101));
             chart1.Series[1].Points.AddXY(i, r.Next(101));
         }
     }
    // 나누어 그리기 클릭후 작성 코드
     private void button2_Click(object sender, EventArgs e)
     {
         if (chart1.ChartAreas.Count == 1)
         {
             chart1.ChartAreas.Add("ChartArea2");
             chart1.Series[1].ChartArea = "ChartArea2";
         }
     }
    //합쳐서 그리기 클릭 후 작성 코드
     private void button1_Click(object sender, EventArgs e)
     {
         if(chart1.ChartAreas.Count > 1) // 1보다 클때만 지워라
         {
    
         }
         chart1.ChartAreas.RemoveAt(1); // :배열의 첫번째를 지운다
         chart1.Series[1].ChartArea = "ChartArea1";
     }

     

    함수그리기

    1. 전과 동일하게 차트 설정

    2 우클릭 후 코드보기 설정

     protected override void OnPaint(PaintEventArgs e)
     {
         base.OnPaint(e);
    
         chart1.ChartAreas[0].BackColor = Color.Black;
     }
     
     //x축
    chart1.ChartAreas[0].AxisX.Minimum = -20;
    chart1.ChartAreas[0].AxisX.Maximum = 20;
    chart1.ChartAreas[0].AxisX.Interval = 2;
    chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Gray;
    chart1.ChartAreas[0].AxisX.MajorGrid.LineDashStyle =ChartDashStyle.Dash;
    
    //y축
    chart1.ChartAreas[0].AxisY.Minimum = -2;
    chart1.ChartAreas[0].AxisY.Maximum = 2;
    chart1.ChartAreas[0].AxisY.Interval = 0.5;
    chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gray;
    chart1.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
    
    //Series 설정 : sin(x)/ x
    chart1.Series[0].ChartType = SeriesChartType.Line;
    chart1.Series[0].Color = Color.LightGreen;
    chart1.Series[0].BorderWidth = 2;
    chart1.Series[0].LegendText = "sin(x)/x";
    
    // Series 하나 추가
    chart1.Series.Add("Cos");
    
    //Series 설정 : cos(x)/x
    chart1.Series[1].ChartType = SeriesChartType.Line;
    chart1.Series[1].Color = Color.Orange;
    chart1.Series[1].BorderWidth = 2;
    chart1.Series[1].LegendText = "cos(x)/x";
    
    //using System.Windows.Forms.DataVisualization.Charting; 입력하면 추가 입력을 안해도 됨
    
     // Series 추가
        if(chart1.Series.Count == 1)
        {
            chart1.Series.Add("Cos");
        }
     chart1.Series[0].Points.Clear();
     chart1.Series[1].Points.Clear();
    
    for(double x = -20; x<=20; x += 0.1)
    {
    double y = Math.Sin(x) / x;
    chart1.Series[0].Points.AddXY(x, y);
    
    y = Math.Cos(x)/ x;
    chart1.Series["Cos"].Points.AddXY(x, y); // Series["Cos"] = Series[1]
    }

     

    더보기

    # 디지털 시계

     

    1. label2개와 timer를 폼 화면에 띄어줍니다.

    2. label1의 name을 lblDate로 해주시고 label2의 name은 lblTime로 해줍니다.

    private void Form1_Load(object sender, EventArgs e)
     {
         this.Text = "나의 디지털 시계";   //여기서 this는 form1
         lblDate.Text = " ";
         lblTime.Text = " ";
    
         timer1.Enabled = true; // timer1.Start();
         timer1.Interval = 1000; //단위: 밀리초
         timer1.Tick += timer1_Tick;
    
         lblDate.Font = new Font("맑은 고딕", 16, FontStyle.Bold);
         lblDate.ForeColor = Color.DarkOrange;
    
         lblTime.Font = new Font("맑은 고딕", 32, FontStyle.Bold);
         lblTime.ForeColor = Color.DarkBlue;
     }
    
     private void timer1_Tick(object sender, EventArgs e)
     {
         //현재 시간을 가져와서 화면에 표시  (DateTime.Now)
         lblDate.Text = DateTime.Now.ToString("yyyy년 MM월 dd일 ");
         lblTime.Text = DateTime.Now.ToString("tt h:mm:ss");
    
     lblDate.Location = new Point(
         ClientSize.Width / 2 - lblDate.Width / 2,
         ClientSize.Height / 2 - lblDate.Height / 2-30);
    
    //레이블 위치 조정
     lblTime.Location = new Point(
         ClientSize.Width / 2 - lblTime.Width / 2,
         ClientSize.Height / 2 - lblTime.Height / 2 +30 );

     

     

    '비주얼 프로그래밍' 카테고리의 다른 글

    #7주차 아날로그 시계 마무리  (1) 2024.04.28
    6주차 C# 아날로그 시계(1)  (0) 2024.04.17
    VP4주차  (0) 2024.04.02
    비주얼 프로그래밍 3주차 <성적 계산기 만들기>  (0) 2024.03.25
    2주차  (0) 2024.03.20
Designed by Tistory.