|
아래 코드는 제가 직접 3가지 예제를 만들어서 C++빌더 6.0 에서 테스트 해보고 보내드린 자료 입니다..
제 모니터 설정은 32비트 였구요..
16비트로 바꿔서는 안해봤군요.
outer컬러를 0,0 픽셀이 투명이라고 봤을때 세트 해도 나온다면...ㅡ,.ㅡ;
대상 TImage32 배경색을 폼의 배경색으로 잡고 png 의 비트맵에서 해당 스킵 픽셀을 안찍어 버리는 방법을 함 써보세염
for( i ; i < 세로높이; i++ )
for( j ; j < 가로길이;j++)
if( src->Pixels[i][j] != 투명색) desc->Pixels[i][j];
안녕하세요 님이 쓰신 글 :
: 먼저 답변에 감사드립니다.
: 먼저 제리압빠님께서 테스트해보셨던게 png확장자 파일이셨나요?
: bmp파일로 해서 첨부된 사진처럼 Transparent 속성을 true로 해줬는데도 여전히 흰색
: 바탕이 남아있어요.. 물론 포샵에서 배경을 투명설정하기도 했구요 그런데도 안되는군요.
: 그런데 모니터화면배색 을 16비트로 바꿔주면 또 흰색이 안보이더라구요;;
: 어케 해야 할까요.
:
:
: 제리압빠. 님이 쓰신 글 :
: : bmp배경 님이 쓰신 글 :
: : : 그림을 보시면 형광색 화살표 옆으로 흰색 배경이 나오는데요
: : :
: : : 안나오게 하는 방법 없나요? 화살표만 나오게 하고 싶습니다.
: :
: : png-24 투명 설정 하고 포토샵에서 저장 후 테스트 해보았습니다...
: : TImage랑 TImage32 두개 다 테스트 해봤습니다..
: : 둘다 잘되더군요.
: :
: : 처음 기본 프로퍼티 설정으로는 두 컴포넌트 다 허연색이 붙어 나옴니다.
: : 하지만 TImage 인 경우 Object Inspector에 보면 Transparent 속성을 true로 설정 하면 한방에 됩니다.
: : TImage32 인 경우 Object Inspector설정을 Bitmap->DrawMode 를 기본 dm오빠큐에서 dmTransparent로 변경하고
: : 아래 코드 처럼 Bitmap에 그릴때 제외칼라 설정을 해줘야 합니다
: :
: : img32->Bitmap->OuterColor = png->Canvas->Pixels[0][0]; // 이런식으로 제외 칼라 선정을 해줘야합니다.
: : 0.0좌표의 픽셀이 ... 제외색이 아닌 경우는 대략 난감한 상황이 벌어지겠지만 ㅋㅋ
: :
: : if( OD1->Execute())
: : {
: : //img1->Picture->LoadFromFile( OD1->FileName );
: : TPNGGraphic *png = new TPNGGraphic();
: : png->LoadFromFile( OD1->FileName );
: : //bmp->LoadFromFile( OD1->FileName );
: : img1->Picture->Assign( png );
: : img32->Bitmap->OuterColor = png->Canvas->Pixels[0][0];
: : img32->Bitmap->Assign( png );
: : delete png;
: : }
: :
: : 참고 하시구염.
: : png파일 자체에서 투명도값을 읽어내는 루틴은 차근히 공부 해보시기 바랍니당 수고염~~!
|