유틸리티

RPGXP 이상의 소스를 캐릭터 레이더로 수정하면 투명색이 없어져서 캐릭터를 넣으면 네모 배경색이 나오죠?

이걸 제거하러면 포토샵으로 옮겨서 투명색 입히고 다시 저장해야되는데

포토샵이 없으면 못할뿐더러 파일 용량도 늘어나고 무엇보다 저장한걸 캐릭터레이더로 다시 못열어서 난감했죠


이 프로그램은 캐릭터 레이더로 수정해저 저장한 PNG 그래픽 소재의 사라진 투명색을 복구시켜줍니다.

투명색이 복구된 파일은 캐릭터 레이더로 열 수 있으며 팔레트도 유지됩니다.


* 24 bpp의 png 파일을 고려하지 않았기 때문에 넣으면 문제가 생길 수도 있습니다.(애초에 24 bpp의 png를 여기에 돌릴 필요가 전혀 없긴 하지만...)





이거 원래 멀티스레딩 연습하려고 짠 프로그램인데 멀티 스레딩이 안되서 그냥 올림.

MFC 고수님 계시면 아래 코드 뭐가 잘못됬는지 말해주시고 코딩 방식에 대한 조언도 좀 부탁드림...

저 멘탈 터졌음


struct THREADPARAMS

{

CWaitWorkDlg * m_workdlg;

CListBox * m_DataListbox;

std::map<CString, CxImage> * m_DataMap; 

};


...


void CPractice3MultiThreadDlg::OnBnClickedButton3()

{

// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

CWaitWorkDlg dlg;

dlg.m_iCompletedNum = dlg.m_iSucceedNum = dlg.m_iAlreadySucceedNum = 0;

dlg.m_iTotalNum = m_ctrListbox.GetCount();

THREADPARAMS * params = new THREADPARAMS;

params->m_workdlg = &dlg;

params->m_DataListbox = &this->m_ctrListbox;

params->m_DataMap = &this->m_mapImages;


::AfxBeginThread( Thread_Translate, params, 0, 

262144U);

if (dlg.DoModal() == IDOK) {} else {}

this->MessageBox(L"저장 완료.", L"끝남 :)");

}



UINT Thread_Translate(LPVOID pParam)

{

std::map<CString, CxImage> * pMap = ((THREADPARAMS *)pParam)->m_DataMap;

CWaitWorkDlg * pDialog = ((THREADPARAMS *)pParam)->m_workdlg;

std::map<CString, CxImage>::iterator iter; 

for(iter = pMap->begin(); iter != pMap->end(); )

{

CxImage * image = &iter->second;

if ( !image->AlphaPaletteIsValid() )

{

int i;

int nWidth = image->GetWidth();

int nHeight = image->GetHeight();


RGBQUAD quad;

quad = image->GetPaletteColor(0);

quad.rgbReserved = 0;

image->SetPaletteColor(0, quad);

for (i=1; i<256; ++i)

{

quad = image->GetPaletteColor(i);

quad.rgbReserved = 255;

image->SetPaletteColor(i, quad);

}

image->AlphaPaletteEnable(true);

if ( !image->Save(iter->first, CXIMAGE_FORMAT_PNG) )

{

++iter;

++pDialog->m_iSucceedNum;

}

else

{

++iter;

}

++pDialog->m_iCompletedNum;

}

else

{

++iter;

++pDialog->m_iCompletedNum;

++pDialog->m_iAlreadySucceedNum;

}

}

// 다이얼로그를 종료시키고 Modal 상태를 해제한다.

pDialog->EndDialog(IDCANCEL);

// pDialog->PostMessageW(WM_DESTROY); // <- 이것도 안됨

delete (THREADPARAMS *)pParam;

return 0;

}

 

Who's A.미스릴

profile

어드벤쳐는 선보류 후감상하고싶다...


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
211 3D Blender (3D 모델링/렌더링/애니메이션) Alkaid 2012.02.15 5226
210 유틸리티 CamStudio Alkaid 2013.07.17 1083
209 포터블 CCleaner ver_2.2.9.1111 포터블 버전 file 아방스 2011.05.25 3609
208 멀티미디어 Cool Edit Alkaid 2012.12.31 1697
207 CPU 사양을 측정하는 CPU-Z 입니다. 3 file 독도2005 2009.01.17 2544
206 기타 css 사전 다운로드 1 file 아방스 2011.11.17 4259
205 유틸리티 dexpot 바탕화면분할프로그램 2 맵만드는중.. 2014.03.05 1339
204 유틸리티 Everest UEdition-550-2194b-portable2 [포터블] 아방스 2011.05.31 3019
203 멀티미디어 Finale Notepad Alkaid 2013.10.10 1285
202 기타 FocusWriter file Alkaid 2016.10.16 15305
201 기타 FontForge file Alkaid 2013.02.16 1443
200 유틸리티 Game Booster 3 + 한글패치 0.5 5 file 맛난호빵 2011.10.14 4412
199 유틸리티 Game Booster 3.1 + 한글패치 0.8 1 file 맛난호빵 2011.11.05 4063
198 3D Genetica Viewer Alkaid 2014.06.23 875
197 유틸리티 GIMP(GNU Image Manipulation Program) file Alkaid 2012.02.15 3579
196 멀티미디어 GNU LilyPond (사보 프로그램) file Alkaid 2012.09.23 2294
195 멀티미디어 Hybrid (ffmpeg 프론트엔드) Alkaid 2018.03.06 349
194 포터블 IconBox (PNG -> ICO 변환) 3 file 허걱 2011.12.10 5248
193 유틸리티 imageshackert 4 독도2005 2008.03.09 4180
192 유틸리티 ImgBurn file Alkaid 2013.10.12 1734
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 Next
/ 12