[Visual C++] GDI+ 투명처리,회전,비트맵 리소스

spring·2020년 11월 9일
0

먼저 Gdi+를 사용하기 위해선

<gdiplus.h> 를 인클루드 해야한다.

그리고 사용할 .cpp 파일에서 전역객체

ULONG_PTR gp_token; 을 전역변수로 선언한다. 이유는 잘 모름 그냥 하셈

그리고 해당 파일 생성자에서

GdiplusStartupInput in;
GdiplusStartup(&gp_token, &in, NULL);

위와 같이 선언하고 소멸자에서는

GdiplusShutdown(gp_token);

위와 같이 작성한다.

####1.비트맵 리소스에서 가져오기

Bitmap* pBitmap = Bitmap::FromResource(::AfxGetInstanceHandle(), MAKEINTRESOURCE(this->m_plus_id));

####2.이미지 회전
Matrix 객체를 사용한다. Matrix::RotateAt 함수로 회전을 시키는데,

중요한건 Graphics 의 객체의 기준점을 잡고 회전 시키기 때문에

어떠한 그림만을 회전시킬때는

더블버퍼링으로 그 그림크기만큼만 잡고 하거나, 전체 클라이언트에 대한 계산이 좀 필요하다.

상황에따라 미세조정을 해야할때도 있다.

####3.투명색 지정

ImageAttributes ia;
Gdiplus::ColorMap cm;
cm.oldColor = Gdiplus::Color(0,0,0); //투명색
cm.newColor = Gdiplus::Color(0, 255, 255, 255); //대체색
ia.SetRemapTable(1, &cm);
profile
Researcher & Developer @ NAVER Corp | Designer @ HONGIK Univ.

0개의 댓글