사각형 그리기

Graphics 클래스의 DrawRectangle() 메서드를 이용하면 손쉽게 그릴 수 있으며, 펜의 속성을 변경하여 사각형의 모서리가 각진 것과 둥근 것을 그릴 수 있다. 다음은 둥근 모서리가 확연히 드러나게 펜의 두께를 20으로 하였다.

void CGdiPlusDemoView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 Graphics graphics(dc);
 graphics.SetSmoothingMode(SmoothingModeAntiAlias);


 Pen BlackPen(Color(255,0,0,0), 20.0f);
 graphics.DrawRectangle(&BlackPen, 30,30,100,100);

 BlackPen.SetLineJoin(LineJoinRound);
 graphics.DrawRectangle(&BlackPen, 170,30,100,100);


}



원 그리기

DrawEllipse() 메서드를 이용하여 원과 타원을 그릴 수 있으며 다음 코드는 원과 폭이 두 배인 타원을 그린다.

void CGdiPlusDemoView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 Graphics graphics(dc);
 graphics.SetSmoothingMode(SmoothingModeAntiAlias);


 Pen BlackPen(Color(255,0,0,0), 10.0f);
 graphics.DrawEllipse(&BlackPen, 30,30,100,100);
 graphics.DrawEllipse(&BlackPen, 150,30,200,100);


}



원호와 부채꼴 그리기

원 그리기가 사각형 그리기와 비슷한 것처럼 원호나 부채꼴도 그리는 방법이 유사하다. 그리고 원호나 부채꼴의 시작과 끝을 명시하는 방법도 사각형을 그릴 때처럼 시작 각도를 기준으로 벌어진 각도를 명시한다. 다음은 원 하나를 그리고 여기에 원호와 부채꼴을 겹쳐서 그린다.

void CGdiPlusDemoView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 Graphics graphics(dc);
 graphics.SetSmoothingMode(SmoothingModeAntiAlias);


 Pen BlackPen(Color(255,0,0,0), 2.0f);
 Pen GrayPen(Color(255,192,192,192), 15.0f);

 graphics.DrawEllipse(&GrayPen, 30,30,150,150);


 graphics.DrawArc(&BlackPen, 30,30,150,150, 0.0f, 90.0f);
 graphics.DrawPie(&BlackPen, 30,30,150,150, 180.0f, 90.0f);

 // 수평선을 기준으로 시계 방향으로 각도가 증가하는데 0.0f와 90.0f 의 의미는
 // 0 에서 원호가 시작해서 90 만큼 원호를 그린 후 끝난다는 의미가 된다.

}



다각형 그리기

DrawPolygon() 메서드를 이용하면 사각형이나 원을 제외한 나머지 다각형을 그릴 때 유용하다. 이 함수의 인자나 사용법은 DrawCurve() 함수와 거의 같다. 다음 코드는 'ㄱ'자 모양의 다각형을 그린 예이다.

void CGdiPlusDemoView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 Graphics graphics(dc);
 graphics.SetSmoothingMode(SmoothingModeAntiAlias);


 Pen BlackPen(Color(255,0,0,0), 2.0f);

 Point pts[6] = {
      Point(30,30),
      Point(180,30),
      Point(180,130),
      Point(130,130),
      Point(130,80),
      Point(30,80)
 
 };


 graphics.DrawPolygon(&BlackPen, pts, 6);


}














+ Recent posts