본문 바로가기

개발새발 개발자/C#

[C# GUI 프로그래밍] 이미지 박스와 그래프

픽처 박스에는 jpg, bmp, png 파일 등 대부분의 이미지 파일을 첨부할 수 있다. 도구 상자에서 picture box를 선택하면 윈도우 폼 안에 들어간다.


픽처 박스 컨트롤에 생긴 삼각형을 누르면 이미지 선택 및 크기 모드를 정해줄 수 있다.


좌) 이미지 선택

원하는 이미지를 첨부한다.


gif: 움직이는 그림

jpg: 보통 많이 쓰는 확장자

bmp: 용량이 커서 많이 사용하지 않는다.

wmf: 벡터 파일. 이미지를 크게 늘려도 퀄리티가 낮아지지 않는다. 윈도우 메타 파일도 wmf의 한 종류다.

png: 그림의 윤곽만 정확히 나올 수 있게 하는 이미지.


우) 크기 모드

픽처 박스의 크기 안에 그림을 어떻게 채워넣을지 정의한다.


normal: 픽처 박스나 이미지의 크기 조정 없이 그대로 보여준다.

stretch image: 픽처 박스에 이미지가 꽉 차도록 맞춘다.

auto size: 원래 이미지의 비율에 맞게 픽처박스를 늘려준다.


이미지를 로드했으면 X와 Y좌표를 설정할 수 있다. 참고로 3D 이미지는 지원하지 않고 있다. 3D를 하려면 유니티라는 게임 엔진을 이용하면 된다.


이미지가 움직인다는 것은 이 픽처박스의 X와 Y 좌표 값이 바뀐다는 것이다. 이를 위해 Point라는 클래스를 이용한다. Point에 대한 객체는 생성자의 매개 변수로 두 개의 정수값을 받는다. 


이 객체를 PictureBox.Location에 할당해주면 이미지의 위치가 우리가 원하는 곳으로 바뀌게 된다.


버튼을 누르면 앞으로 쭉 이동하는 예제이다. 먼저, 폼이 생성될 때의 최초 위치를 먼저 x, y에 할당해준다.


버튼이 클릭되면 x의 위치를 10 추가하고 새로운 위치를 담은 객체를 Location에 반영한다.


차트의 종류와 기능은 굉장히 많아서 기본적인 것만 다루어보겠다. 처음 차트를 생성하면 아래와 같이 기본값이 세팅된 그래프가 나타난다. 오른쪽 상단에는 legend(범례)라고 하는 요소를 표시할 수 있다.


하나의 차트 컨트롤엔 여러 가지의 그래프를 동시에 그릴 수 있다. 이 부분은 ChartArea에 반영해준다. Series는 차트 영역에서 해당하는 X, Y 값을 나타내는 요소다.


Legends는 범례, Titles는 차트에 대한 제목을 의미한다.


버튼을 누르면 3차 함수를 그리는 예제이다. 


chart1.Series["범례이름"].Points.AddXY(반영할 값);

해당 범례에 대해 x, y 값을 for문을 반복해 반영시킨 뒤 그래프를 그린다.