تبليغاتX
..: رقص دانش :..

blofa

حسین

blofa

http://blofa.blogfa.com

..: رقص دانش :..

..: رقص دانش :.. - Fade تصوير - محو کردن ... Image Fade Delphi

..: رقص دانش :..

بیوگرافی هرکی بخوای و آموزش و ترفند موبایل نرم افزار سخت افزار اینترنت امنیت و دانلود برنامه و آهنگ

..: رقص دانش :..

Fade تصوير - محو کردن ... Image Fade Delphi


procedure TFormDaisy.FormCreate(Sender: TObject);
begin
  BitmapBase := TBitmap.Create;
  BitmapBase.PixelFormat := pf24bit;
  BitmapBase.Width  := ImageRGB.Width;
  BitmapBase.Height := ImageRGB.Height;
  ImageRGB.Picture.Graphic := BitmapBase;   // White Screen
end;


procedure TFormDaisy.ButtonDrawClick(Sender: TObject);
  CONST
    DaisyStepCount =  1024;
  VAR
    CircleColor  :  INTEGER;
    Diameter     :  INTEGER;
    Divergence   :  DOUBLE;
    GoldenRatio  :  DOUBLE;
    i            :  INTEGER;
    j            :  INTEGER;
    Radius       :  DOUBLE;
    Row          :  pRGBTripleArray;
    Step         :  INTEGER;
    Theta        :  DOUBLE;
begin
  Screen.Cursor := crHourGlass;
  TRY
    BitmapBase.Canvas.Brush.Color := clBlack;
    BitmapBase.Canvas.FillRect(BitmapBase.Canvas.ClipRect);
    Theta := 0;                  // degrees
    GoldenRatio := 0.5*(1.0 + SQRT(5.0));   // see p. 30
    Divergence := 360.0 / GoldenRatio;      // angular interval divergence
    Diameter := BitmapBase.Width DIV 64;    // heuristic
    FOR step := 0 TO DaisyStepCount-1 DO
    BEGIN
      CircleColor := 255 - (step MOD 64);
      BitmapBase.Canvas.Brush.Color := RGB(0,0, CircleColor); // inside
      BitmapBase.Canvas.Pen.Color := RGB(0,0, CircleColor);       // border
      Radius := 0.5 * SQRT(Theta);
      i := BitmapBase.Width  DIV 2 + ROUND(Radius*COS(PI*Theta/180));
      j := BitmapBase.Height DIV 2 + ROUND(Radius*SIN(PI*Theta/180));
      BitmapBase.Canvas.Ellipse(i,j, i+Diameter, j+Diameter);
      Theta := Theta + Divergence
    END;

    FOR j := 0 TO BitmapBase.Height-1 DO
    BEGIN
      Row := BitmapBase.Scanline[j];
      FOR i := 0 TO BitmapBase.Width-1 DO
      BEGIN
        WITH Row[i] DO
        BEGIN
          rgbtRed   := ROUND(255*ABS( SIN(7*PI*i/BitmapBase.Width)*
                                      SIN(7*PI*j/BitmapBase.Height)));
          rgbtGreen := ROUND(255*ABS( SIN(4*PI*i/BitmapBase.Width)*
                                      SIN(4*PI*j/BitmapBase.Height)))
        END
      END
    END;

    // Display on screen
    ImageRGB.Picture.Graphic := BitmapBase;

    ButtonRedisplay.Visible := TRUE;

    //Bitmap.SaveToFile('Daisy.BMP');
  FINALLY
    Screen.Cursor := crDefault
  END
end;


procedure TFormDaisy.FormDestroy(Sender: TObject);
begin
   BitmapBase.Free
end;

procedure TFormDaisy.ButtonRedisplayClick(Sender: TObject);
begin
  ImageRGB.Picture.Graphic := BitmapBase;
end;


procedure TFormDaisy.ButtonFadeOutClick(Sender: TObject);
  VAR
    Bitmap :  TBitmap;
    i      :  INTEGER;
    j      :  INTEGER;
    Row    :  pRGBTripleArray;
    RowBase:  pRGBTripleArray;
    step   :  INTEGER;
begin
  Bitmap := TBitmap.Create;
  TRY
    Bitmap.PixelFormat := pf24bit;
    Bitmap.Width  := ImageRGB.Width;
    Bitmap.Height := ImageRGB.Height;
    FOR step := 32 DOWNTO 0 DO
    BEGIN
      FOR j := 0 TO Bitmap.Height-1 DO
      BEGIN
        RowBase := BitmapBase.Scanline[j];
        Row     := Bitmap.Scanline[j];
        FOR i := 0 TO Bitmap.Width-1 DO
        BEGIN                                          // 32 = 2^5
          Row[i].rgbtRed   :=  (step * RowBase[i].rgbtRed  ) SHR 5;
          Row[i].rgbtGreen :=  (step * RowBase[i].rgbtGreen) SHR 5;
          Row[i].rgbtBlue  :=  (step * RowBase[i].rgbtBlue ) SHR 5
        END      END;
      ImageRGB.Picture.Graphic := Bitmap;
      InvalidateRect(FormDaisy.Handle, NIL {whole window},
                     FALSE {don't erase background});
      RedrawWindow(FormDaisy.Handle, NIL, 0, RDW_UPDATENOW);
    END
  FINALLY
    Bitmap.Free;
  END;
end;


procedure TFormDaisy.ButtonFadeInClick(Sender: TObject);
  VAR
    Bitmap :  TBitmap;
    i      :  INTEGER;
    j      :  INTEGER;
    Row    :  pRGBTripleArray;
    RowBase:  pRGBTripleArray;
    step   :  INTEGER;
begin
  Bitmap := TBitmap.Create;
  TRY
    Bitmap.PixelFormat := pf24bit;
    Bitmap.Width  := ImageRGB.Width;
    Bitmap.Height := ImageRGB.Height;
    FOR step := 0 TO 32 DO
    BEGIN
      FOR j := 0 TO Bitmap.Height-1 DO
      BEGIN
        RowBase := BitmapBase.Scanline[j];
        Row     := Bitmap.Scanline[j];
        FOR i := 0 TO Bitmap.Width-1 DO        BEGIN
          Row[i].rgbtRed   :=  (step * RowBase[i].rgbtRed  ) SHR 5;
          Row[i].rgbtGreen :=  (step * RowBase[i].rgbtGreen) SHR 5;
          Row[i].rgbtBlue  :=  (step * RowBase[i].rgbtBlue ) SHR 5
        END      END;
      ImageRGB.Picture.Graphic := Bitmap;
      ImageRGB.Repaint
    END
  FINALLY
    Bitmap.Free;
  END;

end;

+ نوشته شده در چهاردهم بهمن 1385ساعت توسط حسین |

آخر خنده