|
Graphics::TBitmap*load_jpg_sized(AnsiString fn,int w,int h)
{
TJPEGImage*a=new TJPEGImage();
a->LoadFromFile(fn);
Graphics::TBitmap*t=new Graphics::TBitmap();
t->Assign(a);
delete a;
Graphics::TBitmap*p=new Graphics::TBitmap();
p->Width=w;
p->Height=h;
StretchBlt(p->Canvas->Handle,0,0,p->Width,p->Height,
t->Canvas->Handle,0,0,t->Width,t->Height,cmSrcCopy);
delete t;
return p;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Graphics::TBitmap*a=load_jpg_sized("c:\\aa.jpg",480,240);
Canvas->Draw(0,0,a);
delete a;
}
좀 지저분한것 같은데,그냥 함수를 하나 만들어서 사용하시는건 어떨까요?...
그리고 제가 올린 슬라이드 효과는 640x480 정도의 크기에서는 좀 버벅델텐데..-_-;;
약 320x240정도를 예상하고 한거라서요.
최준호 님이 쓰신 글 :
: 님 정말 감사합니다.
: 실제로 아래와 같이 코드를 작성하니까 잘됩니다.
: 제가 만들고 있는 프로그램에서는 다른 문제가 있어서 적용이 안된거 같습니다.
:
: 그런데 아래 코드를 보시면 아시겟지만 제가 jpg파일을 로드하여 (실제그림 사이즈가 크지만) 640x480
: 크기에 맞추려고 하는데요
: a(TJPEGimage)에서는 a->Width=640같은 코드가 허용이 안되고요
: p->Width=640; 은 실제로 그림 사이즈에 적용이 안되내여
: 그래서 아래코드를 돌리면 그림이 짤리는데 이문제를 어찌 해결 해야 하나요
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:
: TJPEGImage*a=new TJPEGImage();
: a->LoadFromFile("c:\\1.jpg");
:
:
:
: Graphics::TBitmap*p=new Graphics::TBitmap();
:
: p->Width=640;
: p->Height=480;
: p->Assign(a);
:
: delete a;
: int w=640;
: int h=480;
: int i,j;
:
:
: for(j=0;j<w;j+=2){
: for(i=0;i<w-j;i+=2){
: BitBlt(Canvas->Handle,w-i-1,0,2,h,p->Canvas->Handle,j,0,cmSrcCopy);
: }
: BitBlt(Canvas->Handle,j,0,2,h,p->Canvas->Handle,j,0,cmSrcCopy);
: }
: BitBlt(Canvas->Handle,0,0,w,h,p->Canvas->Handle,0,0,cmSrcCopy);
:
:
: }
: //---------------------------------------------------------------------------
|