직업은 선물 트레이더

[과제]윈도우프로그래밍. 해양 구조물 부식방지 시스템(제안서3, 최종결과)

잊어버린 과거

지금 생각해보니 이 윈도우프로그래밍 텀프로젝트 과제는 설계작업이 없다. 아마 다들 배우고 있는 중이라 생각하고 안내주신 것 같기도 하다.

 

 

 

팀명: 정내미                                                            

제출일자: 6 13       

 

팀원:

1. 김승규 (발표)                                                         

2. 차희진          

3. 장용하

                         

 

4. 새로운 프로그램 기법 :

 

[알파블랜딩 기법]

 

 : 알파블랜딩 기법은 이미지의 투명화에 목적이 있다. 여기서 말하는 이미지 투명화란, 기존에 화면에 그려져 있는 이미지의 색이 적절하게 섞이어 마치 투명화 되는듯한 느낌을 주는 것을 말한다. 단순히 완전투명 혹은 반투명과같이 몇가지의 투명화 단계가 있는 것이 아니고 0에서부터 255까지의 수치를 이용하여 투명도를 설정 있다.

 

이는 기본적으로 투명화시킬 그림을 그리기 위해 비트맵을 불러와야 하며, 이를 메모리DC 저장한 다음, 화면 DC 불러와 출력하게 되는데, 이를 표현하기 위한 주요 코드는 다음과 같다.

 

MemDC.CreateCompatibleDC( &dc ); // dc 대해 메모리DC 만들어 준다. 

bmp.LoadBitmap( IDB_BITMAP1 ); // 비트맵 로드 

bmp.GetBitmap( &bmpInfo ); // 비트맵에 정보를 저장 

pOldBmp = MemDC.SelectObject( &bmp ); // 메모리DC 저장 

 

알파블랜드

 

이제 여기까지 준비가 되면 가지 추가준비 끝에 알파블랜딩을 사용할 있다. 제일먼저 알파블랜딩 기법에서 투명도를 정할 있는 변수가 하나 있는데 그것을 먼저 선언을 하고, 그리고 설정을 뒤에 초기값으로 여러가지 수치를 넣어주어야 하는데 그중에서 제일 중요한건 투명도이다. 투명도를 설정하면, 이후 알파블랜딩를 사용할 쓰이는 알파블랜드 함수의 파라미터로 투명도를 설정한 변수를 사용하여 얼마나 투명해 것인지 알려줄 있다. 이를 위한 핵심 코드는 다음과 같다.

 

(그림자료 : 실제 프로젝트에서 사용한 알파블랜딩 효과. 바닷물이 투명화되어 바다 지지대가 눈에 보이게 된다. 알파블랜딩이 없었다면 바다 속은 보이지 않았을 것이다)

 

BLENDFUNCTION bf;  // 알파블랜딩 설정을 위한 변수

bf.SourceConstantAlpha = 50;    // 투명값설정. 0 = 완전투명, 255 = 불투명 

dc.AlphaBlend( 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &MemDC, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, bf ); //알파블랜딩 사용하여 화면에 표현

 

여기서 AlphaBlend 함수는 보통 이미지를 화면에 그릴 때 사용하는 BitBlt을 대체하여 사용이 가능하기에 BitBlt를 사용하듯 무리없이 쉽게 사용이 가능하다는 장점이 있다.

 

 

 

소프트웨어 시스템

 

창의적 사고

 

알파블랜드 적용

 

 

 

 

다음은 소스파일인데, 무슨 실행파일을 실행시키려면 mfc100d.dll이 필요하다고 뭐라고 하면서 괴롭힌다.. 애초에 비주얼스튜디오 최신버전이 깔려있으면 문제되지 않을 것 같으나 나는 이클립스로 갈아탄지 오래되었으므로 패스..

 

아 예전에 쓴 글 중에 실행파일과 사진[바로가기] 올려둔게 있다. 참고하면 좋을 것 같다.

다음은 실행파일과 소스들이다. 용량이 왜이렇게 비정상적이네 어쩌네 하면 할말이 없다. 그냥 무지몽매한 학부생 수준의 과제거니.. 하면서 필요한 사람만 봐주기 바란다.