유틸리티

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
번호 분류 제목 글쓴이 날짜 조회 수
231 유틸리티 $마우스커서$ 현재 제가쓰는 네온! 4 file 뙓뾁뽥 2010.07.24 2750
230 유틸리티 '강력' 툴바클리너! file 포뇨 2010.03.21 2371
229 2090 바이러스 전용백신 긴급배포 (안철수연구소) 3 독도2005 2009.02.13 2461
228 기타 2D 격투기 메이커 [한글판] 12 아방스 2008.02.14 5999
227 기타 2D 격투기 메이커2 [일어] 3 file 아방스 2008.02.14 4422
226 기타 2D그림은 움직이게 만들어보자! :: E-mote 1 하늘바라KSND 2015.04.02 1489
225 기타 3D RPG 메이커 [일어?] 18 아방스 2008.02.14 6862
224 3D 입체 아이콘 프로그램 31 file ⌒_⌒ 2008.08.13 8286
223 유틸리티 3D 창 선택기 韓國人 2008.08.13 4354
222 3D 3D이미지 제작 프로그램 Anaglyph Maker 10 아방스 2010.08.17 5415
221 유틸리티 AcroEdit Alkaid 2012.02.16 4112
220 기타 Adobe Flash Player Projector file Alkaid 2014.01.15 1590
219 유틸리티 AkelPad (텍스트 편집) Alkaid 2012.02.16 4091
218 멀티미디어 Anvil Studio Alkaid 2015.09.15 475
217 멀티미디어 Audacity (사운드 편집) file Alkaid 2012.03.15 4438
216 멀티미디어 Avanti (FFmpeg GUI frontend for media file encoding/conversion) Alkaid 2012.08.25 2686
215 유틸리티 AVI Movie reader file 타누키 2010.07.23 2317
214 기타 Avira AntiVir Removal Tool (Delphi-Virus W32/Induc.A) 1 독도2005 2009.08.30 3294
213 유틸리티 BabelMap (유니코드 지원 문자표) file Alkaid 2012.12.31 1977
212 유틸리티 BabelPad (유니코드 지원 텍스트 편집기) 1 Alkaid 2012.04.02 3958
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 Next
/ 12