2012년 3월 26일 월요일

[WINAPI] 이미지 출력 함수 GdiTransparentBlt(), GdiAlphaBlend()

아래 두 함수는 비트맵의 일부를 투명하게 출력하는데 이용되는 함수들이다.



TransparentBlt()

AlphaBlend()



자세한 사용법에 대해서는 다른 블로그나 책에 많이 나와있으니 생략하고...

위 두 함수를 사용하려면 MsImg32.lib 라이브러리를 링크시켜 사용해야 한다.

그런데 WINAPI를 공부하면서 위 함수들에 대해서 찾다가 이런 것들을 발견했다.



GdiTransparentBlt()

GdiAlphaBlend()



보는 바와 같이 앞에 Gdi 가 붙은 형태이다.

이 함수들은  윈도우 2000 버전 이상의 Gdi32.lib 에 정의되어 있고 받는 인자나 사용법, 기능 등은 Gdi가 안붙은 버전과 완전히 동일하다.

다만 특별한 라이브러리 추가 없이 Windows.h를 인클루드 하면 그냥 사용가능하다는 것이 가장 큰 차이점이다.

단점은 윈도우 98 이하에서는 위 함수를 사용한 코드가 호환되지 않는다는 점이다.





또 다른 Gdi 형제로는 GdiGradientFill() 이라는 함수도 있다.

기존 FloodFill() 함수나 윈도우가 기본 제공하는 브러시, 펜 등을 이용해서는 단색 밖에 그릴 수가 없으므로 그라데이션으로 색을 칠할 수 있다고 하니 처음 함수 이름을 봤을때는 대박이라고 생각했다.

다만 자세히 들여다보니 아쉽게도 삼각형과 사각형 만을 지원한다고 하여 실망했던 기억이 있다.

몇개의 점 좌표와 각 점에 RGB 값을 인자로 주면 아래처럼 그라데이션 색으로 채워진 삼각형이나 사각형을 그려주는 방식이다.






개인적으로는 그다지 활용방법이 떠오르지 않아서 더이상 깊이는 조사해보지 않았다.

관심이 있다면 MSDN에서 검색해보자. (영어로) 자세히 설명되어 있다.




참고로 이 함수들을 한국어로 된 기존 책이나 블로그에서는 본 기억이 없다.

아마도 이 글이 최초 소개가 아닐까 싶다.


댓글 없음:

댓글 쓰기