유틸리티

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 회사? 이제회사일을집에서 회사컴퓨터조종하기! 5 김성재 2008.12.21 3772
230 기타 환세취호전 세이브 에디터 누아니 2019.12.22 178
229 기타 화면을 뒤집어버리는 무서운 플그램 21 아템 2008.02.29 5591
228 기타 화면 보호기 제조기 17 ⌒_⌒ 2008.08.23 4815
227 해결사 데모 v2 (ARPG) 11 아방스 2007.11.08 4229
226 유틸리티 한글화된 '팀뷰어' (원격 프로그램) 10 루비넨 2010.02.20 3853
225 유틸리티 픽픽(PicPick) v1.7.0 Release - All-in-one Design Tools 3 아방스 2007.11.10 3607
224 유틸리티 픽픽(PicPick) (화면 캡처 & 그래픽 작업) 1 Alkaid 2013.02.19 1794
223 유틸리티 피카츄 4 file 미루루루 2010.07.09 3488
222 유틸리티 폴더 색상이 맘에 들지않는다면 FolderHighlight.(1.2버전) 5 file 아템 2008.05.03 5157
221 유틸리티 폴더 구조를 엑셀또는 이미지로 저장하는 프로그램 5 file 아방스 2013.07.09 3414
220 유틸리티 포토스케이프(PhotoScape) 1 아방스 2007.11.10 5007
219 기타 포토샵으로 만들어본 홈페이지디자인. 2 아방이 2008.01.26 4149
218 유틸리티 포토샵7.0 한글패치 13 독도2005 2008.03.09 6083
217 유틸리티 포토샵 링크가 없어서 직접 올립니다. 6 아방스 2007.11.10 6034
216 멀티미디어 파티클 일루젼 (particleIllusion]) 1 아방스 2011.05.25 9715
215 기타 파이널판타지6 전투음악 1 file 야키다메 2009.11.29 4481
214 유틸리티 특수문자입력기 17 file 아템 2008.05.25 4741
213 토트용 4 file rlatpgh412 2009.02.12 2772
212 유틸리티 클릭한번만으로 바로끄는 프로그램 16 file 포뇨 2010.02.06 3087
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 Next
/ 12