Q&A

  • 책장넘어가는 효과내기
안녕하세요.
책장넘어가는 효과(?)를 구현해볼려고 하는데 잘 안됩니다.
이미지 2개를 겹쳐놓고, 위 이미지의 width를 루프를 돌려서 줄이는 방식으로
생각을 했는데, 이미지가 깨져서 넘어 갑니다.

Jpg1 := TJPEGImage.Create; // 위 이미지
Jpg2 := TJPEGImage.Create; // 아래 이미지
Jpg1.LoadFromFile(위 이미지파일);
Jpg2.LoadFromFile(아래 이미지파일);

Image1.Picture.Assign(Jpg1);
Image2.Picture.Assign(Jpg2);
for i := 1 to Image1.width do
begin
    image1.Width := Image1.width - i;
    Image1.Refresh;
    sleep(100);
end;

이런식으로 해봤는데요.
위 이미지가 작아지기는 하는데, 이미지가 깨져서 넘어갑니다.
stretch는 true상태입니다. 소스에서 sleep를 빼고 해도 비슷합니다.
이미지 줄이는 폭을 바꿔봐도 비슷하고요.
그럼 수고하세요..
1  COMMENTS
  • Profile
    홍성락 2004.10.02 05:51

    hsr///////////////////////////////////////////////////////////
    자료실에 OpenGL로는 해 놓았는데...
    이미지 컴포넌트에서 stretch를 사용하시면 잔상이 남고 실제 Rect과는 다름니다.

    이미지가 깨지는건 이미지컴포의 stretch잔상 또는 사이즈변화로 깨지는데요
    두번째는 Bitmap.ScanLine으로 줄여가면서 복사하면 될 것 같구요.
    첫번째는 그리는 이미지 컴포는 stretch을 False로하시되
    원본 이미지를 다른곳에 두어 copy하시면 잔상은 제거 될것 같습니다.
    위 두개를 같이 쓰면 더 좋겠으나,
    일단 잔상 제거로

    이미지 컴포 stretch는 False입니다
    for i := 1 to Image1.width do
    begin
        image1.Width := Image1.width - i;
        Image1.Canvas.CopyRect(Image1.ClientRect, OrgImage.Canvas,  OrgImage.Canvas.ClipRect);
        Image1.Refresh;

        sleep(100);
    end;