2009년 11월 6일 금요일

5_3 점과 선 그리기 [Programming Windows(Charles Petzold)]

점과 선 그리기

 

점찍기

* 지정된 x, y 좌표에 특정 색상의 점 찍기

SetPixel ( hdc, x, y, crColor );

// hdc :  디바이스 컨텍스트 핸들,  x, y : 좌표,  crColor : COLORREF 타입으로 색상 지정

* 특정 좌표점의 색상 리턴

crColor = GetPixel  (hdc, x, y);

직선

윈도우즈에서는 직선, 타원 곡선, 베지어 스플라인(Besizer spline)을 그릴 수 있다.

* 윈도우즈 9x 계열의 일곱개의 선 그리기 함

 

                    LineTo()       직선을 그린다.

                    Polyline(), PolylineTo()          일련의 연결된 직선을 그린다.

                    PolyPolyline()           일련의 연결된 직선을 여러 개 그린다.

                    Arc()               타원 곡선을 그린다.

                    PolyGezier(), polyBezierTo()         베지어 스플라인을 그린다.

 

* 직선 그리기

                    MoveToEx (hdc, xBeg, yBeg, NULL);         // 직선의 시작점 지정

                    LineTo (hdc, xEnd, yEnd);                           // 직선의 끝 점 지정

 

(*참고 : 현재의 위치 값이 필요하다면,            GetCurrentPositionEx (hdc, &pt);    )

[ 예제 SINEWAVE.C (첨부) ]

 

경계 상자 함수

Rectangle(), Ellipse(), RoundRect(), Chord(), Pie() 는 엄밀하게 보면 선을 그리는 함수가 아니다.

물론 선을 그리지만 도형 내부를 현재 선택된 브러시로 채우기도 한다.

위에 열거한 함수들은 직사각형 형태의 '경계상자(bounding box - 객체를 둘러싸는 상자)'로부터 만들어진다.

 

 

 내장 펜 사용하기

윈도우즈는 디바이스 컨텍스트에 현재 선택된 펜을 이용하여 선을 그린다.

hPen = GetStockObject (WHITE_PEN);                 // 펜 핸들 얻기

SelectObject (hdc, hPen);                                         // 펜 선택!

 

SelectObject(hdc, GetStockObject(WHITE_PEN));     // 위와 동일한 역할

SelectObject()는 이전에 디바이스 컨택스트에 선택되어 있던 펜에 대한 핸들을 리턴한다.

hPen  =  SelectObject ( hdc, GetStockObject(WHITE_PEN ) );

SelectObject (hdc, hPen);                 // 이전의 펜

댓글 없음:

댓글 쓰기