RGBAtoBitmap

rgba 데이타를 wxBitmap 으로 변환하는 코드

#include <wx/rawbmp.h> 
typedef wxAlphaPixelData PixelData; 
wxBitmap *RGBAtoBitmap(unsigned char *rgba, int w, int h) 
{ 
        wxBitmap *bitmap=new wxBitmap(w, h, 32); 
        if(!bitmap->Ok()) { 
                delete bitmap; 
                return NULL; 
        } 

        PixelData bmdata(*bitmap); 
        if(bmdata==NULL) { 
                wxLogDebug(wxT("getBitmap() failed")); 
                delete bitmap; 
                return NULL; 
        } 

        bmdata.UseAlpha(); 
        PixelData::Iterator dst(bmdata); 

        for(int y=0; y<h; y++) { 
                dst.MoveTo(bmdata, 0, y); 
                for(int x=0; x<w; x++) { 
                        // wxBitmap contains rgb values pre-multiplied with alpha 
                        unsigned char a=rgba[3]; 
                        dst.Red()=rgba[0]*a/255; 
                        dst.Green()=rgba[1]*a/255; 
                        dst.Blue()=rgba[2]*a/255; 
                        dst.Alpha()=a; 
                        dst++; 
                        rgba+=4; 
                } 
        } 
        return bitmap; 
}

Leave a Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.