프로그래밍/MFC

MFC 그리기 모드, 속성함수

에어버스 2016. 6. 14. 19:16

1. DC 는 내부적으로 다양한 속성을 가지며, 이 속성에 따라 GDI 출력 함수의 결과가 다르다.

속성 

초기값 

속성을 얻는 함수 

속성을 변경하는 함수 

 문자색상

 검정색 

 GetTextColor() 

 SetTextColor()

 배경색상

 흰색

 GetBkColor()

 SetBkColor()

 배경모드

 OPAQUE (불투명)

 GetBkMode()

 SetBkMode()

 매핑모드

 MM_TEXT

 GetMapMode()

 SetMapMode()

 그리기모드

 R2_COPTPEN

 GetROP2()

 SetROP2()

 현재위치

 (0, 0)

 GetCurrentPosition()

 MoveTo()

 BALACK_PEN

 SelectObject()

 SelectObject()

 브러시

 WHITE_BRUSH

 SelectObject()

 SelectObject()

 폰트

 SYSTEM_FONT

 SelectObject()

 SelectObject()

 비트맵

 -

 SelectObject()

 SelectObject()

 팔레트

 -

 SelectPalette()

 SelectPalette()

 영역

 -

 SelectObject()

 SelectObject()

- 그림이나 문자 출력할때 배경모드는 OPAQUE (불투명, DC에 설정된 배경색사용), TRANSPARENT(투명) 가 있다.

1
2
3
4
5
6
7
8
9
10
void CMFCApplication3View::OnPaint()
{
    CPaintDC dc(this); // device context for painting
    dc.SelectStockObject(LTGRAY_BRUSH);
    CRect rect;
    GetClientRect(&rect);
    dc.Rectangle(&rect);
    dc.SetBkMode(TRANSPARENT);
    dc.TextOutW(5050, CString("Hello"));
}
cs

 배경모드 : TRANSPARENT

 배경모드 : OPAQUE

 

2. 그리기 모드

그림을 그릴때 사용하는 색상이 스크린의 원래 색상과 섞이는 방법을 정의한다.

그리기모드

연산 

그리기모드 

연산 

 R2_NOP

 D = D 

 R2_NOT 

 D = ~D 

 R2_BLACK

 D = BALCK 

 R2_WHITE 

 D = WHITE 

 R2_COPYPEN

 D = S 

 R2_NOTCOPYPEN 

 D = ~S 

 R2_MERGEPENNOT

 D = ~D | S 

 R2_MASKPENNOT 

 D = ~D & S 

 R2_MERGENOTPEN

 D = ~S | D 

 R2_MASKNOTPEN 

 D = ~S & D 

 R2_MERGEPEN

 D = D | S 

 R2_NOTMERGEPEN 

 D = ~D | S

 R2_MASKPEN

 D = D & S 

 R2_NOTMASKPEN

 D = ~(D | S) 

 R2_XORPEN

 D = S ^ D 

 R2_NOTXORPEN 

 D + ~(S ^ D) 

D : Destination, S : Source