|
|
网络上拼凑的代码!
刚刚写好,很多错误没有处理!
而且还修改了几个单元的东西!
不晓得大家有兴趣没!
部分代码!
使用了临时文件
因为我实验直接从流读
次次失败
我都郁闷了
function TSglFile.Aimg(Index, Frame: Integer): TAsphyreImage;
var
I, J, L2 : Integer;
S : string;
Data : PDWord;
Stream : TfileStream;
have : Boolean;
bmp:TBitmapEx;
begin
Result := nil;
if Fimagepack.imgcount > Index then
begin
if Fimagepack.items[Index].Framescount > Frame then
begin
have := true;
end;
end;
if not have then exit;
if Fimagepack.items[Index].Frames[Frame].img = nil then
begin
Data := nil;
try
ImageIndex := Index;
if Frames[Frame] <> nil then
begin
with Frames[Frame]^ do
begin
ReAllocMem(Data, sfHeight * sfWidth * 4);
ZeroMemory(Data, sfHeight * sfWidth * 4);
DecodeFrame32(Frame, PByte(Data), sfWidth * 4);
Stream := TfileStream.Create('./temp.tga', fmCreate);
try
TargaBuild32(Stream, Data, sfWidth, sfHeight, '', true);
Fimagepack.items[Index].Frames[Frame].img := FDevice.NewImage;
//Fimagepack.items[Index].Frames[Frame].img.LoadFromStream('x.tga', Stream);
finally
Stream.Free;
end;
Fimagepack.items[Index].Frames[Frame].img.LoadFromtgafile('./temp.tga');
end;
end;
finally
if Data <> nil then FreeMem(Data);
end;
end;
Result := Fimagepack.items[Index].Frames[Frame].img;
end; |
|