달력

12

« 2018/12 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 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
  •  
  •  
  •  
  •  
  •  






이번에 살펴볼 것은,

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

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

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

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


코드를 살펴보자.
먼저 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 안식의후크