C#/Basics

F015_Chart

페프 2021. 6. 8. 18:45

윈 폼에서는 다양한 차트를 만들 수 있는 Chart 컨트롤들이 제공된다.

그 중 차트 컨트롤에서 사용하는 기본 용어는 다음과 같다.

ChartArea : 차트가 그려지는 영역을 뜻한다. 하나의 차트 객체에서 하나 이상의 차트 영역을 가질 수 있다. 

Series : 차트 영역에 표시되는 데이터를 말한다. 하나의 차트 영역의 두 개 이상의 시리즈가 있을 수도 있다. 또한 차트의 종류를 지정할 수 있다. 

Legends : 범례를 뜻한다.

Titles: 차트 컨트롤 상단의 표시되는 제목이다.

차트 컨트롤의 용어들을 숙지한 후에

차트 컨트롤을 사용해 무작위로 뽑은 10개의 숫자를 차트에 표시되게 만들어보았다!


 

 

첫 번째로 다음과 같이 윈 폼에 차트 컨트롤을 집어 넣어준다.

이 때 다른 설정은 건들지 않아도 된다. 

두 번째디자인 화면(Form1.cs [Design])에서 항목을 두 번 클릭 해주면 로드화면( Form1.cs)이 열린다.

로드화면이 열리면 밑에 첨부된 코드와 같은 코드들이 뜬다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace W015_Chart1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        
        }
    }
}
 
"private void Form1_Load(object sender, EventArgs e)" 의 뜻은?
폼이 시작될 때 실행되는 프로그램

 

로드화면에 관련한 이벤트를 입력할 수 있는 코드가 뜬 것을 확인한 뒤

윈폼의 상단에 뜨는 Form1이라는 글자(하단 사진의 빨간 박스의 글자)를 없애고 "Using Chart Control"란

글자를 넣어주는 코드를 작성해준다.

public Form1()
        {
            InitializeComponent();
            this.Text = "Using Chart Control";
        }

 

 

세 번째로 무작위로 뽑은 10개의 숫자가 차트에 표시되는 것을 만들어준다. 

private void Form1_Load(object sender, EventArgs e)
        {
            Random r = new Random();

            chart1.Titles.Add("중간고사 성적");

            for (int i = 0; i < 10; i++)
                chart1.Series["Series1"].Points.Add(r.Next(50, 100));

            chart1.Series["Series1"].LegendText = "수학";
            chart1.Series[0].ChartType = SeriesChartType.Line;
        }

 

랜덤한 10개의 숫자를 불러줘야하기 때문에

랜덤함수를 만들어 새로운 난수를 생성해준다.

Random r = new Random();

 

차트의 제목을 "중간고사 성적"으로 바꾸어 준다. 

chart1.Titles.Add("중간고사 성적");

 

"Series1" 시리즈에 랜덤하게 오 십에서 백 점 사이의 점수를 추가한다 . 

for (int i = 0; i < 10; i++)
                chart1.Series["Series1"].Points.Add(r.Next(50, 100));
"Series1"은 디폴트로 차트를 생성하면 들어가 있다.

 

"Series1"의 범례를 수학으로 바꾸고 

차트 종류를 Line(선그래프)로 바꾸어준다. 

chart1.Series["Series1"].LegendText = "수학";
chart1.Series[0].ChartType = SeriesChartType.Line;
chart1.Series["Series1"] = chart1.Series[0]
시리지의 이름을 써줘도 되고 시리즈의 순서를 써주어도 된다. 
이 때 순서가 0인 이유는 첫 번째 시리즈이기 때문이다. 
"Series1" 의 차트 종류는 Columm(막대그래프)로 디폴트 설정되어 있다.

 

 


 

최종 코드는 다음과 같다. 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace W015_Chart1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Text = "Using Chart Control";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Random r = new Random();

            chart1.Titles.Add("중간고사 성적");

            for (int i = 0; i < 10; i++)
                chart1.Series["Series1"].Points.Add(r.Next(50, 100));

            chart1.Series["Series1"].LegendText = "수학";
            chart1.Series[0].ChartType = SeriesChartType.Line;
        }
    }
}