유틸리티

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
번호 분류 제목 글쓴이 날짜 조회 수
51 기타 윤디자인 웹돋움 폰트 (무료) file 아방스 2011.08.11 17844
50 기타 윤디자인 웹바탕 폰트 file 아방스 2011.08.11 9164
49 유틸리티 음성대화 프로그렘! 네이버,한게임 아이디만 있으면 가능! 게임톡! 6 달탱이 2010.02.23 3040
48 기타 음악제작. 41 file 메루스 2010.03.01 3550
47 유틸리티 이젠 컴퓨터로도 TV를 본다! 엔젤TV 7 아템 2008.02.29 4749
46 유틸리티 이지-리네임 (EZ-Rename) 2.1b 버전 아방스 2010.08.31 5437
45 유틸리티 익스플로러 6으로 되돌아가기 ㅎㅎ 4 ⌒_⌒ 2008.08.23 4550
44 유틸리티 임시로 웹서버만들어서 파일 공유하기 4 file Arowana 2011.02.13 3079
43 유틸리티 임시폴더 청소기 7 file 아템 2008.05.25 4307
42 자바가필요하신가? 여기서받의시면되겠네 3 김성재 2008.12.21 2925
41 작업 관리자도 찾을 수 없는 프로그램 숨기는 파일 8 file Man... 2008.11.21 5423
40 유틸리티 제가 만든 간단한 TV보기 프로그램 6 file 독도2005 2008.08.18 4038
39 유틸리티 제가만든 whois 검색기 8 file 독도2005 2008.05.12 3397
38 기타 조... 좋은 게임이다...![Ragdoll Masters v3.1] 9 - 하늘 - 2009.09.16 4965
37 유틸리티 조각모음 화면보호기 file 아방스 2013.04.16 1455
36 기타 직쏘 얼굴1 14 file histogram 2010.07.13 3288
35 기타 직접 만든 벨소리[La La bey] 1 file 제로스톤 2010.08.22 2751
34 유틸리티 추억의 화면보호기ㅎ 무설치 Marine Aquarium v3 그때 그 감성으로~~ file Brody 2021.04.05 100
33 유틸리티 칼무리 (최신판은아니지만 안카메라보다 더좋음;;) 7 아템 2008.03.22 3246
» 유틸리티 캐릭터 레이더 결과물에 투명색 씌우는 프로그램 1 file A.미스릴 2013.08.20 1778
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 Next
/ 12