달력

05

« 2018/05 »

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  





이번 새로 이력서를 넣기 위해 게임 동영상을 찍다 보니, 여기에 올리는것도 좋을것 같아서 올리게 되네 ㅎ
Posted by 안식의후크
2011.01.24 11:34

MapTool - Ver 1.0 게임이야기/제작2011.01.24 11:34






이번 졸작때 완성된 맵툴의 스크린샷.

'게임이야기 > 제작' 카테고리의 다른 글

맵툴 시연용 영상  (0) 2011.02.01
KGCA 19기 졸업 프로젝트 -팀 : Pathfinder, 터치다운(함정을 달리다)-  (0) 2011.02.01
MapTool - Ver 1.0  (0) 2011.01.24
WrapUp!  (0) 2010.12.08
MapTool - 완성본  (0) 2010.12.06
API-Catch Me If You Can  (0) 2010.06.10
Posted by 안식의후크






이번에 살펴볼 것은,

이미지에 대해서 특정 부분만 보여준다거나(감춘다거나), 이미지특성을 반전시키는 것에 대해서 통합해서 살펴보자.

먼저 실행 화면은 다음과 같다.

*이미지의 내용은 중요하지 않습니다.

이미지를 보면 특정 원안에 부분만 이미지가 보여지고(저 원은 움직일 수 있고 사이즈 조정이 가능합니다.)
원엔에 특정 사각형은 그 부분의 이미지가 반전되는 것을 확인 할 수 있다.


코드를 살펴보자.
먼저 View클래스에 멤버 변수로,


CImage와 Crect를 하나씩 생성해 주자.

그리고 WM_PAINT, WM_KEYDOWN, WM_CREATE 메시지를 각각 추가해 주자.



소스에 대한 기본 설명은 주석에 다 포함 시켜 놓았다. 특별히 어려운 부분이 존재하진 않고,
특정 영역을 분할한다는 개념만 잡으면 어렵지 않다.
Posted by 안식의후크




프로그램을 인스톨 할때라던가,

특정 게이지가 오르락 내리락 할 때 그 안에 글씨를 상황에 맞춰서 색상 변경을 해주어야 한다.


만약 저안에 글자가 처음엔 빨강색 이였다가, 빨간색 배경이 들어 오면 흰색으로 변경하는 거라고 치자.

그에 따른 소스코드를 파악해 가면서

프로그래머는 역시 사기꾼 이라는 생각이 드는 예제인거 같다.

먼저 실행 결과를 보자.


마치 게이지의 위치에 따라서 글자가 자연스럽게 색상이 변경하는 '것'처럼 보인다.

소스를 보자.

하나하나 집어 가면서 설명을 하자면,
소스에 있는 RgnSize View클래스의 int형 멤버 변수이다.(초기값 250)


무슨 짓을 할지는 모르겠지만, 최초 2개의 Rect를 사용해 사각 영역을 생성해 주었다.
수치를 보니 2개의 사각형을 연달아 그려주고 있다.
여기서 부터 사기는 시작된다.

각각의 사각 영역에 다른 색상을 지정해 주었다.

2개의 사각 영영에 대해서 별도의 영역을 만들어 주고 있다.


다음으로 글자 폰트의 크기, 글꼴을 지정한 후 폰트를 생성하였다.


마지막으로 글자를 출력해 주고 있는데,
코드를 보면 알겠지만 글자를 2번 출력해 주고 있다. 한번은 rgnLeft에
한번은 rgnRight에 해주고 있다.

즉 2개의 사각 영역을 붙혀서 각각의 사각형에 영역을 만들고, 그 영역안에
다른 색상의 글자를 2번 출력 함으로써,
마치 하나의 글자가 자연스러운 색상변환이 이루어 지는거 같아 보이는 '것'일 뿐이다.

만약 사용자에 입력에 따라 사각 영역의 사이즈를 변경하고 싶다면(실행 화면처럼)
RgnSize 변수를 +,- 시켜 주는 것만으로 충분하다.(소스 생략)
Posted by 안식의후크
2010.05.17 02:39

MFC-CImage( 스크린 샷 찍기 ) 프로그래밍/MFC2010.05.17 02:39






화면에 있는 스크린 샷을 찍을땐 어떻게 해야 할까,

그것도 작업 영역에 대해서만,

책에 있는 예제를 조금 변경해서 원하는 결과를 만들었지만,

더 나은 방법이 있는지는 아직 잘 모르겠다.

게임을 하다보면 스크린 샷을 찍게 될 경우가 종종 있다.

그랬을 경우 풀스크린이라면 상관 없을지도 모르나,

창모드라면 윈도우 화면 전체가 아닌 현재 플레이 중인 게임 화면만 이미지로 저장 되어야 한다고 생각한다.

프로젝트에서 WM_PAINT를 추가 하여 아무 이미지나 화면에 띄워 보자.
(필자는 이전의 결과 사용)

그 후 원하는 메시지 탭을 하나 추가해 보자.

키보드 라던지, 마우스 라던지,

추가한 이후에 다음처럼 코드를 작성한다.

기본적인 구조 설명은 주석으로 달아 놓았고.
살작 자세히 보아야 할 부분은
Create() 함수화 Save(), ShellExecute부분 인것 같다고 생각한다.
Create는 x, y의 크기 만큼, 이미지를 생성한다.
3번째 인자는 어떤 속성인지 정하는 부분인데, 예제에서는 바탕화면과 동일한 색상수를 사용한다고 보면 된다.
다음으로 Save는 먼저 파일의 이름을 지정하고, 그 포멧 타입을 지정한다.
JPEG, BMP, GIF, PNG등이 같이 존재한다.
마지막으로 파일을 실행하는 ShellExecute인데,
1번째 인자로 부모 핸들( 예제에서는 NULL이기 때문에 바탕 화면이 되고 )
2번째 인자는 어떤 동작을 할 것인지에 대해 지정해 준다. open이기 때문에 실행을 의미한다.(또한 explore, edit, find, print등이 존재)
3번째로는 어떤 대상을 사용할 것이가에 대해서 이며(여기서는 open할 대상)
4번째는 3번째 인자가 실행 파일인 경우 실행 파일의 실행 인자를 명시,
5번째는 실행할 프로그램의 현재 폴더 경로 이 값이 NULL이면 윈도우 기본 설정을 적용한다고 한다.
마지막인자는 nShowCmd인데,
어떤식으로 보여 줄지에 대한 플래그 값정도로 예상된다.

// 실행 화면

// 스크린 샷을 찍은 후 저장된 파일,
Posted by 안식의후크
2010.05.17 01:41

MFC-CImage 클래스 프로그래밍/MFC2010.05.17 01:41






기존의 이미지를 출력하는 방식이 아닌
MFC에서 추가된 CImage를 사용해 보자.


소스 코드 자체가 딱히 어려운 부분은 없다. 마지막에 흑백으로 출력 하는 부분이 있는데,
RGBtoGray라는 부분은 inline으로 선언되 있다.

흑백으로 변경하는 알고리즘은 거의 공식화 되어 있다고 하니 그냥 단순하게 기억해 두자.
CImage에서는 bmp뿐만 아니라 jpg, gif, png등이 있다고 한다.

CImage를 사용하기 위해서는 반드시
#include <atlimage.h> 를 해 주어야 한다.

// 실행 화면

단점은, 이미지에 대해서 모든 픽셀을 변경해서 다시 픽셀을 설정해 주기 때문에, 예제 처럼 WM_PAINT에서 매번 처리하기에는 비효율 적이다.
WM_CREATE나 또는 한번만 불러오게 변경하여, 추가 이미지를 생성하여 그 안에 변경후 저장해 두는 것이 훨씬 나은 구현 방법일 것이다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-TextRgn( 게이지에 따른 텍스트 변화 )  (0) 2010.05.19
MFC-CImage( 스크린 샷 찍기 )  (0) 2010.05.17
MFC-CImage 클래스  (0) 2010.05.17
MFC-비트맵 띄우기  (0) 2010.05.16
MFC-가상 버튼 만들기  (0) 2010.05.16
MFC-부채꼴 그리기  (0) 2010.05.16
Posted by 안식의후크
2010.05.16 21:39

MFC-비트맵 띄우기 프로그래밍/MFC2010.05.16 21:39







MFC의 비트맵도 API와 매우 흡사하다.

일단 비트맵 리소스를 하나 추가하자.

다음과 같은 비트맵이 있다고 하였을 때,

이제 이 비트맵을 가지고 띄우는 일과, 투명값, 알파값, 사이즈 조정등을 하나하나 해보도록 하자.

기본적으로 리소스에 존재하는 이미지를 띄우는 개념에 대해서는 구지 설명하지 않고,

소스 위주로 보도록 하자.

먼저 프로젝트에 WM_PAINT 메시지를 하나 만들자.


기본 적인 설명은 주석을 달아 놓았다.
큰 구조 자체는 변화가 없다. MemDC를 생성하고 그 안에 Bitmap을 넣은 후 DC에 MemDC를 복사 하는 방법이다.
BitBlt의 인자는 출력할 윈도우 좌표 x,y
비트맵의 폭과 높이.
출력할 비트맵을 저장한 메모리 DC의 주소
메모리 DC에 들어 있는 비트맵의 시작 좌표
적용할 래스터 연산 이다.

// 실행 화면


두번째로 기본의 이미지를 상태로 크기를 조정하는 예제를 살펴 보자.

다른 부분은 전혀 바뀐게 없다. 단지,

BitBlt의 부분을

로만 변경해 주어도 이미지의 크기가 좌우 2배씩 늘어 난 것을 알 수 있다.

각각의 인자는 BitBlt과 비슷 하지만, 3,4번째 인자로 이미지 확대를 가능케 하고,
8,9번째 인자에 원본 이미지의 폭과 높이를 추가로 지정하는것이 차이점이다.
// 실행 화면


다음으로 이미지에 특정 RGB값에 대해서 투명하게 처리하는 함수를 살펴 보자.

이전 함수와 차이라고는 마지막 변수에 RGB값을 컬러키로 지정해서 그 부분만 투명하게 한다는 것!
// 실행 화면

마지막으로 알파블랜딩에 대해서 알아 보자.

기존과는 조금 차이가 있는데, 마지막에 들어 가는 인자가 BLENDFUNCTION이라는 구조체에 대한 정보를 삽입하게 된다.


// 실행 화면

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-CImage( 스크린 샷 찍기 )  (0) 2010.05.17
MFC-CImage 클래스  (0) 2010.05.17
MFC-비트맵 띄우기  (0) 2010.05.16
MFC-가상 버튼 만들기  (0) 2010.05.16
MFC-부채꼴 그리기  (0) 2010.05.16
MFC-도형 그리기  (0) 2010.05.16
Posted by 안식의후크
2010.05.16 19:56

MFC-가상 버튼 만들기 프로그래밍/MFC2010.05.16 19:56






가상으로 버튼을 만들어 보자.

먼저 WM_LBUTTONDOWN과 WM_LBUTTONUP, WM_PAINT에 대해서 메시지탭에서 추가해 주자.



여기까지는 특별히 어려운게 없다.
단순히 클릭을 하면 메시지 박스를 띄우는 것이라 생각 할 수 있지만,
우리가 원하는건 가상 버튼이다, 이제 WM_PAINT를 살펴 보자.

중요한 내용은 다 주석을 달아 놓았다.
처음 보는 부분도 존재하지만 특별히 이해가 가지 않는 부분은 없는거 같다.
Draw3dRect는 2번째 인자로 왼쪽과 위쪽의 색상을,
3번째 인자로 오른쪽과 아래의 색상을 추가 정의 할 수 있다.(즉 입체감을 주기 위해 존재한다고 보면 될듯 하다)

// 실행 화면
실제 버튼도 아닌 것이 입체적인 효과를 내고 있다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-CImage 클래스  (0) 2010.05.17
MFC-비트맵 띄우기  (0) 2010.05.16
MFC-가상 버튼 만들기  (0) 2010.05.16
MFC-부채꼴 그리기  (0) 2010.05.16
MFC-도형 그리기  (0) 2010.05.16
MFC-선 그리기  (0) 2010.05.16
Posted by 안식의후크
2010.05.16 19:11

MFC-부채꼴 그리기 프로그래밍/MFC2010.05.16 19:11






원을 그리는 것은 쉽지만 부채꼴을 그리기 위해서는 조금더 알아야 할것이 존재한다.

먼저 코드와 실행 화면을 보자.



// 실행 화면


일단 다음 처럼 부채꼴을 띄울 수 있는데

사용해야 할 함수는 CDC에 존재하는 Pie 함수 이다.

Pie 함수는 시작점과, 끝점을 지정해 주면,
시작점을 기준으로 끝점까지 반시계 방향으로 그림을 그리게 된다.

이 부분을 보면, 먼저 PieRect라는 CRect를 넘겨주면서,
2번째 인자로 부채꼴의 시작점, 3번째 인자로 부채꼴의 끝점을 보내준다.
즉 PieRect안에서 반시계 방향으로 시작부터 끝까지 그려준다고 볼 수 있다.
CRect 클래스 안에는 CenterPoint라는 함수가 존재 하는데,
예제에서는 x축이 20~140까지의 사각 영역중에 중간, 80이라는 위치가 나오게 될 것이다.
(y축도 마찬가지)
그런 식으로 부채꼴의 시작, 끝을 잡아 주고 있다.
마찬가지로, 2번째의 부채꼴 역시,

PieRect를 안을 기준으로,
시작점, 끝점을 각각 잡아 주고 부채꼴의 도형을 그리고 있다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-비트맵 띄우기  (0) 2010.05.16
MFC-가상 버튼 만들기  (0) 2010.05.16
MFC-부채꼴 그리기  (0) 2010.05.16
MFC-도형 그리기  (0) 2010.05.16
MFC-선 그리기  (0) 2010.05.16
MFC-GDI의 개념  (0) 2010.05.16
Posted by 안식의후크
2010.05.16 18:28

MFC-선 그리기 프로그래밍/MFC2010.05.16 18:28






이전 GDI개념에 대해 설명할때 간단하게 선의 속성을 잡아 주는 것을 보았다.

이번엔 여러개의 선을 그리고, 그 선에 따른 스타일 값에 따른 변화를 살짝 살펴 보자.

WM_PAINT메시지를 추가 하고.


소스 코드를 작성하고 실행하면,

다음과 같은 결과를 볼 수 있다.
//실행 화면

기존의 Pen 생성처럼 단순히
CPen Pen(____)가 아닌,
배열로 생성해서 생성자에 속성을 넣는것이 아닌.
CreatePen()을 사용한다는 것과,
공통적인 속성에 대해서 LOGBRUSH 를 사용해 그 값을 &로 넘겨 준다는것이 차이가 있을 뿐이다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-부채꼴 그리기  (0) 2010.05.16
MFC-도형 그리기  (0) 2010.05.16
MFC-선 그리기  (0) 2010.05.16
MFC-GDI의 개념  (0) 2010.05.16
MFC-마우스 입력( TRACKMOUSEEVENT )  (0) 2010.05.16
MFC-새로운 클래스 추가 하기  (0) 2010.05.16
Posted by 안식의후크