본문 바로가기

프로그래밍/MFC19

MFC-ImageRgn( 이미지의 특정 부분에 특수효과 삽입하기 ) 이번에 살펴볼 것은, 이미지에 대해서 특정 부분만 보여준다거나(감춘다거나), 이미지특성을 반전시키는 것에 대해서 통합해서 살펴보자. 먼저 실행 화면은 다음과 같다. *이미지의 내용은 중요하지 않습니다. 이미지를 보면 특정 원안에 부분만 이미지가 보여지고(저 원은 움직일 수 있고 사이즈 조정이 가능합니다.) 원엔에 특정 사각형은 그 부분의 이미지가 반전되는 것을 확인 할 수 있다. 코드를 살펴보자. 먼저 View클래스에 멤버 변수로, public: CImage m_Image; CRect m_Rect;​ CImage와 Crect를 하나씩 생성해 주자. 그리고 WM_PAINT, WM_KEYDOWN, WM_CREATE 메시지를 각각 추가해 주자. // View::OnCreate // 최초에 Rect(원)의 범위.. 2010. 5. 19.
MFC-TextRgn( 게이지에 따른 텍스트 변화 ) 프로그램을 인스톨 할때라던가, 특정 게이지가 오르락 내리락 할 때 그 안에 글씨를 상황에 맞춰서 색상 변경을 해주어야 한다. 만약 저안에 글자가 처음엔 빨강색 이였다가, 빨간색 배경이 들어 오면 흰색으로 변경하는 거라고 치자. 그에 따른 소스코드를 파악해 가면서 프로그래머는 역시 사기꾼 이라는 생각이 드는 예제인거 같다. 먼저 실행 결과를 보자. 마치 게이지의 위치에 따라서 글자가 자연스럽게 색상이 변경하는 '것'처럼 보인다. 소스를 보자. CRect rectLeft = CRect( 50, 50, RgnSize, 150 ); CRect rectRight( RgnSize, 50, 450, 150 ); dc.FillSolidRect( &rectLeft, RGB( 192, 0, 0 ) ); dc.FillSol.. 2010. 5. 19.
MFC-CImage( 스크린 샷 찍기 ) 화면에 있는 스크린 샷을 찍을땐 어떻게 해야 할까, 그것도 작업 영역에 대해서만, 책에 있는 예제를 조금 변경해서 원하는 결과를 만들었지만, 더 나은 방법이 있는지는 아직 잘 모르겠다. 게임을 하다보면 스크린 샷을 찍게 될 경우가 종종 있다. 그랬을 경우 풀스크린이라면 상관 없을지도 모르나, 창모드라면 윈도우 화면 전체가 아닌 현재 플레이 중인 게임 화면만 이미지로 저장 되어야 한다고 생각한다. 프로젝트에서 WM_PAINT를 추가 하여 아무 이미지나 화면에 띄워 보자. (필자는 이전의 결과 사용) 그 후 원하는 메시지 탭을 하나 추가해 보자. 키보드 라던지, 마우스 라던지, 추가한 이후에 다음처럼 코드를 작성한다. // View::OnLButtonDown // 바탕 화면 윈도우 객체에 대한 포인터를 얻는.. 2010. 5. 17.
MFC-CImage 클래스 기존의 이미지를 출력하는 방식이 아닌 MFC에서 추가된 CImage를 사용해 보자. // View::OnPaint() // 이미지가 저장된 위치 CString strImagePath = _T("Image.bmp"); // CImage 클래스 변수를 생성한다. CImage Image; // 저장 된 위치에 이미지를 불러온다. HRESULT hResult = Image.Load( strImagePath ); // 이미지를 불러 오는데 실패 했을 경우. if( FAILED( hResult ) ) { CString strtmp = _T("ERROR : Failed to load"); strtmp += strImagePath + _T("\n"); TRACE(strtmp); return; } // 프로그램이 종료 .. 2010. 5. 17.
MFC-비트맵 띄우기 MFC의 비트맵도 API와 매우 흡사하다. 일단 비트맵 리소스를 하나 추가하자. 다음과 같은 비트맵이 있다고 하였을 때, 이제 이 비트맵을 가지고 띄우는 일과, 투명값, 알파값, 사이즈 조정등을 하나하나 해보도록 하자. 기본적으로 리소스에 존재하는 이미지를 띄우는 개념에 대해서는 구지 설명하지 않고, 소스 위주로 보도록 하자. 먼저 프로젝트에 WM_PAINT 메시지를 하나 만들자. CDC MemDC; BITMAP bmpInfo; // dc에 대해 메모리DC를 만들어 준다. MemDC.CreateCompatibleDC( &dc ); CBitmap bmp; CBitmap* pOldBmp = NULL; // 비트맵 로드 bmp.LoadBitmap( IDB_BITMAP1 ); // 비트맵에 정보를 저장 bmp... 2010. 5. 16.
MFC-가상 버튼 만들기 가상으로 버튼을 만들어 보자. 먼저 WM_LBUTTONDOWN과 WM_LBUTTONUP, WM_PAINT에 대해서 메시지탭에서 추가해 주자. //View::OnLButtonDown if( m_BtnRect.PtInRect( point ) ) // 현재 마우스 위치가 Rect안에 존재 하는지 확인해 준다. { // 그렇다면 m_bClicked = !m_bClicked; // m_bClicked를 반대로 변경( 아마 false에서 true가 될 것이다.) RedrawWindow( &m_BtnRect ); // 화면 갱신 }​ //View::OnLButtonUp if( m_bClicked ) // 버튼을 땠을 때 그 값이 true라면 { m_bClicked = !m_bClicked; // false로 변경 R.. 2010. 5. 16.