사용자 삽입 이미지


위에가 원본 bitmap 밑이 투명처리와 색 변환을 적용한 CachedBitmap.
자주색은 투명처리, 파란색은 노란색으로 변환.

투명처리 및 색 변화 모두 ImageAttributes 라는 객체에 값을 설정해서 Graphics객체의 DrawImage 등을 호출할때 인자로 넣어주면 된다.

[CODE] CachedBitmap* MarkTemplate::CreateCachedBitmap( Graphics* g, Color innerColor )
{
 Bitmap tmpBit( markTp_.GetWidth(), markTp_.GetHeight(), PixelFormat32bppARGB );
 Graphics* pMemGraphics = Graphics::FromImage(&tmpBit);

 ColorMap tplToinner;
 tplToinner.oldColor = tplColor_;
 tplToinner.newColor = innerColor;

 ImageAttributes imgAttr;
 imgAttr.SetRemapTable(1, &tplToinner,ColorAdjustTypeBitmap);
 imgAttr.SetColorKey(transColor_, transColor_,ColorAdjustTypeBitmap );
 pMemGraphics->DrawImage(&markTp_, Rect(0,0,tmpBit.GetWidth(),tmpBit.GetHeight()), 0.0,0.0,markTp_.GetWidth(), markTp_.GetHeight(), UnitPixel, &imgAttr, NULL, NULL);

 delete pMemGraphics;
 CachedBitmap* ccBit = new CachedBitmap(&tmpBit, g);

 return ccBit;
}
[/CODE]


코드는 대략 이런 느낌.
주의할 점은 Bitmap->CachedBitmap으로 바꾸면서 위의 내용을 적용할수가 없기때문에 Bitmap -> 변환된 Bitmap -> CachedBitmap 으로 간다. Bitmap의 변환에는 Graphics객체를 따로 생성해서 그려주는 수밖에 없는듯하다.

'알고리즘 > 이미지 처리' 카테고리의 다른 글

이미지 와핑 소스(그나마 낳은거)  (0) 2008.02.20
이미지 와핑에 관해서  (0) 2008.02.19
GDI+에서의 투명색 처리...  (0) 2008.01.25
이미지 회전 알고리즘  (0) 2008.01.18
Image Processing  (0) 2008.01.18
그림 띄우기  (0) 2008.01.07

+ Recent posts