请问如何实现directx高彩模式下的淡入淡出(100分)

S

Scrate

Unregistered / Unconfirmed
GUEST, unregistred user!
图象的淡入:
procedure TMainForm.fadeinClick(Sender: TObject);//三个分量同时增加相同的比例,直至
//到原图的R,G,B值
VAR
Bitmap : TBitmap;
i : INTEGER;
j : INTEGER;
Row : pRGBTripleArray; //包含在imageprocessingprimivate.pas中
RowBase: pRGBTripleArray;
step : INTEGER;
begin
Bitmap := TBitmap.Create;
TRY
Bitmap.PixelFormat := pf24bit;
Bitmap.Width := childForm.Image1.Width;
Bitmap.Height := childForm.Image1.Height;

FOR step := 0 TO 128 DO
BEGIN

FOR j := 0 TO Bitmap.Height-1 DO
BEGIN
RowBase := Backbmp.Scanline[j];
Row := Bitmap.Scanline[j];

FOR i := 0 TO Bitmap.Width-1 DO
BEGIN // 128 = 2^7
Row.rgbtRed := (step * RowBase.rgbtRed ) SHR 7;//相当于div 128
Row.rgbtGreen := (step * RowBase.rgbtGreen) SHR 7;
Row.rgbtBlue := (step * RowBase.rgbtBlue ) SHR 7;
END
END;

// This is just as effective as the API calls.
// (See API call alternative in FadeOut.)
childForm.Image1.Picture.Graphic := Bitmap;
childForm.Image1.Repaint
END
FINALLY
Bitmap.Free;
END;

end;
 
接受答案了.
 
顶部