본문 바로가기

C언어120

DirectX-전체 화면 하는 방법 디바이스를 생성할때 InitD3D함수에서. D3DPRESENT_PARAMETERS d3dpp;// 디바이스 생성을 위한 구조체 ZeroMemory( &d3dpp, sizeof( d3dpp ) );// 반드시 ZeroMemory() 함수로 구조체를 지워야 함 d3dpp.Windowed = TRUE;// 창모드로 생성 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;// 가장 효율 적인 SWAP 효과 d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;// 현재 바탕화면 모드에 맞춰 후면 버퍼를 생성​ 다음과 같은 부분이 있었습니다. 전 그냥 Windowed 라는 부분을 FALSE로 해주면 전체화면이 되겠거니, 하였으나, 그렇지 않더군요. 단순히 전체화면을 하고 .. 2010. 5. 19.
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.
DirectX-디바이스 생성 자 이제 DX를 해봅시다! 일단 닥치고 코드를 칩니다. // DX9를 사용하기 위한 헤더 #include #pragma comment(lib, "dxerr9.lib") #pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib") #pragma comment(lib, "dxguid.lib") #pragma comment(lib, "winmm.lib") ////////////////////////////////////////////////////////////////////////// // 전역 변수 LPDIRECT3D9g_pD3D = NULL;// D3D 디바이스를 생성할 D3D 객체 변수 LPDIRECT3DDEVICE9g_pd3dDevice = .. 2010. 5. 17.
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.