|
안녕하세요..
bmp 이미지를 각종 효과를 주면서 뿌리는 방법을 알고싶습니다...
아래서 위로 혹은,, 좌에서 우로 등...
그리고 tip에서 장성호 님의...fadein /fadeout 에 대해서 보았습니다...
같은이미지 사이즈를 image1 , image2 에 해놓고...버튼에 코드를 넣었는데...
첫번째 이미지가 잘려나오는것 같아,,,이것이 맞게 동작하고 있는것인지 궁금해... 질문드림니다..
(혹 jpg나 , bmp 이미지를 효과주면서 뿌릴수 있는 라이브러나,컴포넌트... 상용,무료 상관없이 소개해주시면 감사하겠습니다 )
void __fastcall TForm1::ImageComposition(Graphics::TBitmap *OrgBmp,Graphics::TBitmap *NewBmp,Graphics::TBitmap *FadeBmp,int rate)
{
unsigned char *pt1,*pt2,*pt;
for(int h=0;h<OrgBmp->Height;h++)
{
pt1=(unsigned char *)OrgBmp->ScanLine[h];
pt2=(unsigned char *)NewBmp->ScanLine[h];
pt=(unsigned char *)FadeBmp->ScanLine[h];
for(int w=0;w<OrgBmp->Width;w++)
{
pt[0]=pt2[0]*rate/100+pt1[0]*(100-rate)/100; // B
pt[1]=pt2[1]*rate/100+pt1[1]*(100-rate)/100; // G
pt[2]=pt2[2]*rate/100+pt1[2]*(100-rate)/100; // R
pt[3]=pt2[3]*rate/100+pt1[3]*(100-rate)/100;
pt1+=4; //PixelFormat이 pf32bit 이므로 +4하여야 32bit 즉 한 pixcel이 옮겨짐
pt2+=4;
pt+=4;
}
}
}
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Graphics::TBitmap *OrgBmp,*NewBmp,*FadeBmp;
OrgBmp= Image1->Picture->Bitmap;
NewBmp= Image2->Picture->Bitmap;
FadeBmp=new Graphics::TBitmap;
FadeBmp->Width=OrgBmp->Width;
FadeBmp->Height=OrgBmp->Height;
FadeBmp->PixelFormat = pf32bit ;
int iInterval = 5 ; //5% 씩 변화를 준다.
for( int i=iInterval ; i<=100 ; i+=iInterval )
{
ImageComposition(OrgBmp,NewBmp,FadeBmp,i);
Image1->Picture->Bitmap->Assign(FadeBmp);
Application->ProcessMessages();
Sleep(100); // 이미지 변화 속도 50ms씩 간격으로 ...
}
delete FadeBmp;
}
수고하세요.
|