커스텀 속성

차트를 꾸미는 속성이 충분히 많지만 현실의 요구는 이보다 훨씬 더 다양하고 특수해서 더 예쁘게 꾸미고 싶어한다. 그래서 더 복잡한 꾸미기 기능을 CustomProperties 속성으로 제공한다. 다음 예제를 보자.

 

private void Form1_Load(object sender, EventArgs e)

{

       chart1.Series.Add("");

       chart1.Series.Add("");

       chart1.Series.Add("");

       Random R = new Random(100);

       for (int i = 0; i < 3; i++)

       {

                  chart1.Series[0].Points.AddY(R.Next(10, 100));

                  chart1.Series[1].Points.AddY(R.Next(10, 100));

                  chart1.Series[2].Points.AddY(R.Next(10, 100));

                  chart1.Series[3].Points.AddY(R.Next(10, 100));

       }

}

컬럼 차트 4개를 그렸는데 색색깔로 채색되어 있지만 다 막대 모양이라 뭔가 밋밋하다. 좀 더 예쁘고 입체적인 모양을 그리고 싶다면 DrawingStyle 속성을 지정한다. 다음 코드를 추가해 보자.

 

chart1.Series[0].CustomProperties = "DrawingStyle=Cylinder";

chart1.Series[1].CustomProperties = "DrawingStyle=Emboss";

chart1.Series[2].CustomProperties = "DrawingStyle=Wedge";

chart1.Series[3].CustomProperties = "DrawingStyle=LightToDark";

DrawingStyle별로 입체적인 모양이 그려진다. CustomProperties 속성은 문자열 형태로 A=B 식으로 추가 속성을 지정한다. 여러 개의 속성을 콤마로 구분하여 지정할 수 있으며 속성의 이름은 대소문자를 구분한다.

시리즈의 인덱서로도 커스텀 속성을 지정할 수 있다. [ ] 괄호안에 속성의 이름을 쓰고 속성값을 대입하면 된다. 이 방식은 커스텀 속성을 하나씩 따로 대입할 수 있어 편리하다.

 

chart1.Series[0]["DrawingStyle"] = "Cylinder";

 

DrawingStyle을 시리즈의 속성을 정의하지 않고 문자열 형태의 커스텀 속성으로 정의하는 이유는 무엇일까? Series 클래스의 멤버로 선언해 두면 다음과 같이 더 편리하고 오타 발생의 위험도 없다.

 

chart1.Series[0].DrawingStyle = DrawingStyle.Cylinder;

 

이렇게 하지 않은 이유는 커스텀 속성은 차트 타입별로 적용 여부가 다르기 때문이다. DrawingStyle은 면을 장식하는 속성이므로 Line, Spline 등의 타입에는 아무짝에도 쓸모가 없다. 35개나 되는 차트 타입별로 필요한 속성을 다 멤버로 정의하다가는 Series 클래스가 너무 거대해지고 무거워진다.

그래서 차트 타입별로 적용되는 속성을 커스텀 속성으로 정의해 두고 필요할 때만 문자열안에 A=B 식으로 정의하도록 되어 있다. 앞에서도 이런 예를 본 적이 있는데 캔들 차트의 커스텀 속성을 다음과 같이 정의했었다.

 

"PriceDownColor=Blue, PriceUpColor=Red"

 

캔들 차트는 주로 주식 시세를 그릴 때 사용하는데 주가가 올라갈 때와 내려갈 때의 색상이 다르며 각각 PriceDownColor, PriceUpColor 커스텀 속성으로 정의한다. 이 속성은 캔들 차트에만 필요하며 다른 차트에는 쓸 일이 없기 때문에 커스텀 속성이다.

커스텀 속성은 총 80개 있으며 앞으로 더 늘어날 수도 있다. 차트 타입별로 다르기 때문에 각 타입을 연구할 때 같이 살펴 보는 것이 좋다. 레퍼런스에 속성의 의미와 적용되는 차트 타입이 잘 정리되어 있으니 시간 날 때마다 어떤 속성이 더 있는지 구경해 보자.