📄 demo.pas
字号:
unit demo;
interface
uses Windows, Messages, SysUtils, Classes, Graphics,
DDraw,DDDD,math,Defs,alphalib;
type
Tdemo = class(TObject)
private
public
BackBuf : TDDDDSurface; //寢壥弌椡
constructor Create;
destructor Destroy;
procedure Present; // Presented By Ko-Ta
procedure ImageDraw;
end;
implementation
//
procedure TDemo.ImageDraw;
begin
DD.FrontBuffer.surface.BltFast(170,90,BackBuf.surface,rect(0,0,300,300),
DDBLTFAST_WAIT or DDBLTFAST_NOCOLORKEY);
end;
//惗惉丒夝曻
constructor TDemo.Create;
begin
BackBuf := TDDDDSurface.CreateOnSystemMemory(DD,300,300,0);
end;
destructor TDemo.Destroy;
begin
BackBuf.Free;
end;
// Presented By Ko-Ta
procedure TDemo.Present;
var
kota : TDDDDSurface;
make : TDDDDSurface;
iii,jjj,aaa,a1,a2 : Integer;
//Palette曐懚梡
sr,sg,sb : array[0..255] of Byte;
begin
//BMP偺撉傒崬傒
kota := TDDDDSurface.CreateOnSystemMemory(DD,300,80,0);
make := TDDDDSurface.CreateOnSystemMemory(DD,300,300,0);
kota.LoadBMP('bmp\op01.bmp');
make.loadBMP('bmp\op00.bmp');
//僷儗僢僩傪堦帪曐懚偟偰僼僃亅僪僀儞
for iii := 0 to 255 do
begin
sr[iii] := DD.Palette[iii].peRed;
sg[iii] := DD.Palette[iii].peGreen;
sb[iii] := DD.Palette[iii].peBlue;
end;
//僼僃亅僪僀儞
for iii := 0 to 60 do
begin
for jjj := 0 to 255 do
begin
case iii of
0..30 : aaa := iii;
31..60 : aaa := 60-iii;
else aaa := 0;
end;
DD.Palette[jjj].peRed := (sr[jjj]*aaa+0) div 30;
DD.Palette[jjj].peGreen := (sg[jjj]*aaa+0) div 30;
DD.Palette[jjj].peBlue := (sb[jjj]*aaa+0) div 30;
DD.Palette[jjj].peFlags := PC_NOCOLLAPSE;
end;
DD.UpdatePalette;
BackBuf.BltFast(make,0,0,rect(0,0,300,300),DDBLTFAST_NOCOLORKEY);
ImageDraw;
sleep(25);
end;
AL.FillRect(BackBuf,rect(0,0,300,300),0);
ImageDraw;
//Palette暅尦
for jjj := 0 to 255 do
begin
DD.Palette[jjj].peRed := sr[jjj];
DD.Palette[jjj].peGreen := sg[jjj];
DD.Palette[jjj].peBlue := sb[jjj];
DD.Palette[jjj].peFlags := PC_NOCOLLAPSE;
end;
DD.UpdatePalette;
//Ko-Ta
for iii := 0 to 60 do
begin
case iii of
0..30 : aaa := iii*16;
31..60 : aaa := 510-(iii-30)*16;
else aaa := 0;
end;
AL.FillRect(BackBuf,rect(0,0,300,300),0);
a1 := 255-abs(aaa-255);
a2 := aaa-255;if (aaa < 255)then a2 := 0;
Al.AlphBlend(BackBuf,0,120,kota,rect(0,0,300,40),a1,BM_SCREEN);
AL.Noise(BackBuf,rect(0,100,300,200),80,10+aaa div 32,BM_SCREEN);
AL.Noise(BackBuf,rect(0,100,300,200),80,10+aaa div 32,BM_SCREEN);
AL.TVDisplay(BackBuf,rect(0,100,300,200));
Al.AlphBlend(BackBuf,0,120,kota,rect(0,40,300,80),a2,BM_SCREEN);
ImageDraw;
sleep(25);
end;
//傑偢偙偺僜僼僩偱巊傢傟偰偄傞儘僑偨偪
kota.free;
make.free;
DD.Clear;
DD.Flip;
DD.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -