|
안녕하세요. 바탕폼에 bmp파일 씌우는 것과 관련 아직 문제 해결이 안되서
마지막으로 혹시나 해서리 글을 올려봅니다.
음...결론은 바탕폼에 bmp로 씌우는 것보다 jpg로 씌우는게 더 빠르다는 결론이 나왔어요.
제가 몇일 이것 땜시 고생을 하고 있음--;;
함수 몇가지 테스트를 해봤죠.소스 입니다.
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Graphics::TBitmap *Bitmap=new Graphics::TBitmap; //TBitmap 오브젝트 생성
//TJPEGImage *jpg=new TJPEGImage;
//jpg->LoadFromFile("teken.jpg");
//jpg->SaveToFile(
//Bitmap->Assign(jpg);
// TRect MyRect;
// Canvas->Brush->Color=clBtnFace;
// Canvas->FillRect(Bounds(0,0,Width,Height));
// MyRect=Bounds(0,0,Width,Height);
//Bitmap->LoadFromFile("c:\\Program Files\\Borland\\CBuilder5\\Projects\\zoom\\dreamwiz.bmp");
Bitmap->LoadFromFile("newform.bmp");
5. //Bitmap->LoadFromResourceName((int)HInstance,"BITMAP1");
1. //Canvas->BrushCopy(MyRect,Bitmap,MyRect,clBtnFace); //가장 느림
2. //Canvas->CopyRect(MyRect,Bitmap->Canvas,MyRect); //그 다음 느림
3. Canvas->Draw(0,0,Bitmap);
4. //BitBlt(Canvas->Handle,0,0,Bitmap->Width,Bitmap->Height,Bitmap->Canvas->Handle,0,0,cmSrcCopy);
//delete jpg;
delete Bitmap;
소스에 보면 1,2,3,4 함수 사용을 해봤는데,
그중에서 2,3,4번이 빠르더군요.
그리고 파일로 불러들이는 방법보다 리소스(.)res 에서
불러들이는게 더 빠르다고 해서 해봤는데, 약간 빠르더군요.근데, 문제는 256color밖에 지원을 안 하더라구요.
제가 바탕폼에 깐 bmp 파일크기는 681k,
그런데 혹시나 해서 jpg로 바꿔보니...엄청 놀랐어요..
11k밖에 안 나오더군요.
그래서 인데, jpg를 바탕폼에 씌우는 방법좀 알려주십시요.나름대로 해보고 있지만 좀 버벅이고 있음..^^;;
heartsim 님이 쓰신 글 :
: 안녕하세요.
: 조언하신 대로 jpg파일을 불러와서 bmp로 변환, 폼바탕에 뿌렸습니다.
: 그래도 로딩속도가 느리더군요.내가 잘못했나??--;;
:
: 말씀하신 것이, jpg를 불러와서 jpg로 폼에 그려주라고 하신 겁니가?
: 그렇담, bmp가 아닌 jpg를 폼바탕에 뿌려주는 방법이 있나요?
: 보통은 Canvas->Draw(0,0,Bitmap) 이런식으로 bmp파일을 뿌려주는데...
:
: 이 방법말고, 혹 폼바탕에 이미지를 뿌릴때, TImage컴포넌트를 올려놓은 다음 그 위에
: 버튼 컴포넌트를 올려놓고 하면 속도가 빨라질 수는 있는지...
:
: 운 좋은 날 되세요...
:
: void __fastcall TForm1::FormPaint(TObject *Sender)
: {
: Graphics::TBitmap *Bitmap=new Graphics::TBitmap; //TBitmap 오브젝트 생성
: TJPEGImage *jpg=new TJPEGImage;
: jpg->LoadFromFile("teken.jpg");
: Bitmap->Assign(jpg);
: //Bitmap->SaveToFile("teken.bmp");
:
: TRect MyRect;
: Canvas->Brush->Color=clBtnFace;
: Canvas->FillRect(Bounds(0,0,Width,Height));
: MyRect=Bounds(0,0,Width,Height);
: //Bitmap->LoadFromFile("c:\\Program Files\\Borland\\CBuilder5\\Projects\\zoom\\dreamwiz.bmp");
: //Bitmap->LoadFromFile("newform.bmp");
: Canvas->BrushCopy(MyRect,Bitmap,MyRect,clBtnFace);
: //Canvas->CopyRect(MyRect,Bitmap->Canvas,MyRect);
: //Canvas->Draw(0,0,Bitmap);
: delete jpg;
: delete Bitmap;
:
: }
:
:
:
:
:
:
: heartsim 님이 쓰신 글 :
: : 음..첨에 일반 그림을 bmp로 해서 띄워줬을 때의 파일크기가 1040byte였구요.
: : 음영을 넣어준 그림인 경우 파일 크기 역시 비슷합니다.(1060byte)
: : 그런데, 첨의 경우는 로딩속도에 문제가 없는데,
: : 두번째의 경우가 속도가 엄청 떨어지더군요.
: :
: : 제가 판단하기로는 flatstyle의 transparent속성을 false로 할때는 문제가 안 되는데,
: : true하니 문제가 되는듯........여기에서 로딩속도가 느려지는 듯.....
: :
: : 그러나 조언 주신대로, jpg로 바꾸었을때 문제가 해결 될수도 있기 땜시 한번 고쳐보도록 하겠습니다.^^;;
: :
: : 운 좋은 날 되십시요...
: :
: :
: :
: :
: :
: :
: :
: :
: :
: :
: :
: : 지나가는사람 님이 쓰신 글 :
: : : jpg로 바꿔보세요..
: : :
: : : bmp의 경우 용량이 커지만..
: : :
: : : 처음에 불러들일때.. 시간이 무척 오래걸리더군요..
: : :
: : : heartsim 님이 쓰신 글 :
: : : : 안녕하세요. 낼 모래면 주말이네요^^;;(그러나 밤낮없이 일만 해야할 판--)
: : : :
: : : : 음...일단 통신프로그램을 어느 정도는 완성했습니다.
: : : : 그런데...문제가.............--;
: : : :
: : : : 다름 아니라, 폼바탕색을 일반 색이 아닌 그림을 넣어줬습니다.
: : : : 그러니간, FormShow이벤트를 사용해서 폼바탕에 그림(.bmp)을 로드시켜줬습니다.
: : : : 그리고 flatstyle 컴포넌트를 사용했는데, 각각의 버튼들도 폼바탕의 그림(.bmp)이 나오도록
: : : : transparent속성을 true로 해줬습니다.
: : : : 이렇게 하니 정말 깜끔하고 보기좋은 폼형태가 되더군요.
: : : :
: : : : 그런데, 문제는 지금부터..--;;
: : : : 실행을 했더니, 실행속도가 아니, 폼이 뜨는 속도가 일반속도의 1/5정도 밖에 안되더군요.(정말로..엄청 느려졌음)
: : : : 게다가 각각의 버튼그림이 슬로우비디오 처럼 하나씩 하나씩 뚝뚝 끊어지면서 뜨더군요.--;
: : : : 만약 이 어플을 다른 사용자가 실행시켰다면 실행중간에 하도 지루해서 전원을 끄지나 않을가^^;;
: : : :
: : : : 이런 상황에서는 어케 해야하죠? 실행속도와 그림이 뜨는 속도를 어케 잡아 줄 수는 없는지...
: : : :
: : : : 모양은 참 좋은데...이 문제가 빨랑 해결이 됐음 하는데....정말로
: : : :
: : : : 늘 운 좋은 날 되십시요....
: : : :
: : : : from heartsim
: : : :
: : : :
: : : :
: : : :
: : : :
|