| 
입력이 종료되는 시점에서 필요한 화면을 동적으로 저장하고
 페이드아웃 시킬때 살짝 이미지와 컨트롤을 바꿔치기 하면 될것 같은데요...
 
 
 
 버그 버그 님이 쓰신 글 :
 : ^^
 :
 : 그런 방법도 있겠군요..
 :
 : 그런데..만약에 .. 판넬에..에디트 박스나 입력을 받을수 있는 컨트롤을 사용한다면..
 :
 : 그것도 또한 힘들겠다는 생각이 드는군요..
 :
 : 사용자는 저장된 이미지를 읽어서 줄인다면..바로 알수 있을테니깐요..아..이미지당.^^
 :
 : win32함수 같은것은 존재 하지 않을까요?
 :
 :
 : civilian 님이 쓰신 글 :
 : : 이렇게 해보시죠.
 : :
 : : () FadeOut하는 경우
 : :    > Panel의 내용을 이미지로 생성
 : :    > Panel 감춤
 : :    > 판넬의 자리에 이미지 보임
 : :    > 이미지 FadeOut
 : :    > 이미지 감춤
 : :
 : : () 작아지면서 없어지기
 : :    > Panel의 내용을 이미지로 생성
 : :    > Panel 감춤
 : :    > 판넬의 자리에 이미지 보임
 : :    > 이미지의 크기를 줄여나감
 : :    > 이미지 감춤
 : :
 : : 꼼수이긴 합니다만 이렇게 하면 될것 같네요.
 : :
 : : 델파이 자료이긴 하지만 FadeIn/FadeOut은 여기 있습니다.
 : :
 : :
 : : // Speichert die Farbwerte / Stores the colors //
 : : type
 : :   PRGBTripleArray = ^TRGBTripleArray;
 : :   TRGBTripleArray = array[0..32767] of TRGBTriple;
 : :
 : : /////////////////////////////////////////////////
 : : //                  Fade In                    //
 : : /////////////////////////////////////////////////
 : :
 : : procedure FadeIn(ImageFileName: TFileName);
 : : var
 : :   Bitmap, BaseBitmap: TBitmap;
 : :   Row, BaseRow: PRGBTripleArray;
 : :   x, y, step: integer;
 : : begin
 : :   // Bitmaps vorbereiten / Preparing the Bitmap //
 : :   Bitmap := TBitmap.Create;
 : :   try
 : :     Bitmap.PixelFormat := pf32bit;  // oder pf24bit / or pf24bit //
 : :     Bitmap.LoadFromFile(ImageFileName);
 : :     BaseBitmap := TBitmap.Create;
 : :     try
 : :       BaseBitmap.PixelFormat := pf32bit;
 : :       BaseBitmap.Assign(Bitmap);
 : :       // Fading //
 : :       for step := 0 to 32 do
 : :       begin
 : :         for y := 0 to (Bitmap.Height - 1) do
 : :         begin
 : :           BaseRow := BaseBitmap.Scanline[y];
 : :           // Farben vom Endbild holen / Getting colors from final image //
 : :           Row := Bitmap.Scanline[y];
 : :           // Farben vom aktuellen Bild / Colors from the image as it is now //
 : :           for x := 0 to (Bitmap.Width - 1) do
 : :           begin
 : :             Row[x].rgbtRed := (step * BaseRow[x].rgbtRed) shr 5;
 : :             Row[x].rgbtGreen := (step * BaseRow[x].rgbtGreen) shr 5; // Fading //
 : :             Row[x].rgbtBlue := (step * BaseRow[x].rgbtBlue) shr 5;
 : :           end;
 : :         end;
 : :         Form1.Canvas.Draw(0, 0, Bitmap);   // neues Bild ausgeben / Output new image //
 : :         InvalidateRect(Form1.Handle, nil, False);
 : :         // Fenster neu zeichnen / Redraw window //
 : :         RedrawWindow(Form1.Handle, nil, 0, RDW_UPDATENOW);
 : :       end;
 : :     finally
 : :       BaseBitmap.Free;
 : :     end;
 : :   finally
 : :     Bitmap.Free;
 : :   end;
 : : end;
 : :
 : : /////////////////////////////////////////////////
 : : //                  Fade Out                   //
 : : /////////////////////////////////////////////////
 : :
 : : procedure FadeOut(ImageFileName: TFileName);
 : : var
 : :   Bitmap, BaseBitmap: TBitmap;
 : :   Row, BaseRow: PRGBTripleArray;
 : :   x, y, step: integer;
 : : begin
 : :   // Bitmaps vorbereiten / Preparing the Bitmap //
 : :   Bitmap := TBitmap.Create;
 : :   try
 : :     Bitmap.PixelFormat := pf32bit;  // oder pf24bit / or pf24bit //
 : :     Bitmap.LoadFromFile(ImageFileName);
 : :     BaseBitmap := TBitmap.Create;
 : :     try
 : :       BaseBitmap.PixelFormat := pf32bit;
 : :       BaseBitmap.Assign(Bitmap);
 : :       // Fading //
 : :      for step := 32 downto 0 do
 : :       begin
 : :         for y := 0 to (Bitmap.Height - 1) do
 : :         begin
 : :           BaseRow := BaseBitmap.Scanline[y];
 : :           // Farben vom Endbild holen / Getting colors from final image //
 : :           Row := Bitmap.Scanline[y];
 : :           // Farben vom aktuellen Bild / Colors from the image as it is now //
 : :           for x := 0 to (Bitmap.Width - 1) do
 : :           begin
 : :             Row[x].rgbtRed := (step * BaseRow[x].rgbtRed) shr 5;
 : :             Row[x].rgbtGreen := (step * BaseRow[x].rgbtGreen) shr 5; // Fading //
 : :             Row[x].rgbtBlue := (step * BaseRow[x].rgbtBlue) shr 5;
 : :           end;
 : :         end;
 : :         Form1.Canvas.Draw(0, 0, Bitmap);   // neues Bild ausgeben / Output new image //
 : :         InvalidateRect(Form1.Handle, nil, False);
 : :         // Fenster neu zeichnen / Redraw window //
 : :         RedrawWindow(Form1.Handle, nil, 0, RDW_UPDATENOW);
 : :       end;
 : :     finally
 : :       BaseBitmap.Free;
 : :     end;
 : :   finally
 : :     Bitmap.Free;
 : :   end;
 : : end;
 : :
 : : procedure TForm1.Button1Click(Sender: TObject);
 : : begin
 : :   FadeIn('C:\TestImage.bmp')
 : : end;
 : :
 : : { Only for 24 ve 32 bits bitmaps }
 : :
 : : procedure FadeOut(const Bmp: TImage; Pause: Integer);
 : : var
 : :   BytesPorScan, counter, w, h: Integer;
 : :   p: pByteArray;
 : : begin
 : :   if not (Bmp.Picture.Bitmap.PixelFormat in [pf24Bit, pf32Bit]) then
 : :     raise Exception.Create('Error, bitmap format is not supporting.');
 : :   try
 : :     BytesPorScan := Abs(Integer(Bmp.Picture.Bitmap.ScanLine[1]) -
 : :       Integer(Bmp.Picture.Bitmap.ScanLine[0]));
 : :   except
 : :     raise Exception.Create('Error!!');
 : :   end;
 : :
 : :   for counter := 1 to 256 do
 : :   begin
 : :     for h := 0 to Bmp.Picture.Bitmap.Height - 1 do
 : :     begin
 : :       P := Bmp.Picture.Bitmap.ScanLine[h];
 : :       for w := 0 to BytesPorScan - 1 do
 : :         if P^[w] > 0 then P^[w] := P^[w] - 1;
 : :     end;
 : :     Sleep(Pause);
 : :     Bmp.Refresh;
 : :   end;
 : : end;
 : :
 : : procedure TForm1.Button2Click(Sender: TObject);
 : : begin
 : :   FadeOut(Image1, 1);
 : : end;
 : :
 : : 버그 버그 님이 쓰신 글 :
 : : : 일단..무엇을 구현 하고 싶은지 부터 적겠습니다.
 : : :
 : : : Panel이 하나 있다고 가정하고 Panel을 숨기는데..그냥..Visible = false로 해서 숨기는것이 아니라..
 : : :
 : : : 천천히..투명해 지다가 사라지게 만들고 싶습니다.
 : : :
 : : : 가능 할까요?
 : : :
 : : : 그리고 또..화면이 사라질때..축소 되면서 사라지게 만들고 싶습니다...
 : : :
 : : : 점점 작아지다가 사라지게 되는거죠....이건..좀..판넬 하나만 있다고 생각지 마시고..그 위에 있는 여러가지 컴포넌트들이 동일한 비율로 점점 작아지다 안보이게 되면 되는거죠..
 : : :
 : : : 가능 할까요?
 |