из файловов GIF (анимированных) вытаскивает каждую картинку в отдельности, или записывает в отдельный BMP по очереди Для этих программок нужен всеми любимый RX Lib !!!
procedure TForm1.Button4Click(Sender: TObject);
var
i, a: integer;
bm: TBItmap;
begin
a := 0;
bm := TBItmap.Create;
bm.Height := RxGIFAnimator1.Height;
bm.Width := RxGIFAnimator1.Image.Count * RxGIFAnimator1.width;
for i := 0 to RxGIFAnimator1.Image.Count - 1 do
begin
RxGIFAnimator1.FrameIndex := i;
bm.Canvas.Draw(a, 0, RxGIFAnimator1.Image.Frames[i].Bitmap);
a := a + RxGIFAnimator1.Height;
end;
//form1.Canvas.Draw(0,0,bm);
bm.SaveToFile(Edit1.Text + ‘.bmp’);
bm.free;
end;
Filed in Графика by admin | Февраль 27, 2008 | No Comments
Этот код, делает следующее, загружаем в листбох список Gif файлов, затем это все дело обьединяетсяв один BMP файл,картинка к картинке, кто знает DirectX поймет для чего это надо (спрайты)
procedure TForm1.Button2Click(Sender: TObject);
begin
if opendialog1.Execute then
begin
ListBox1.Items := opendialog1.Files;
Edit2.Text := inttostr(ListBox1.Items.Count);
end;
end;
Read more »
Filed in Графика by admin | Февраль 27, 2008 | No Comments
type
TImageSize = record
Width: Integer;
Height: Integer;
end;
function ReadGIFSize(Stream: TStream): TImageSize;
type
TGifHeader = record
Signature: array [0..5] of Char;
Width, Height: Word;
end;
var
Header: TGifHeader;
begin
FillChar(Header, SizeOf(TGifHeader), #0);
Result.Width := -1;
Result.Height := -1;
with Stream do
begin
Seek(0, soFromBeginning);
ReadBuffer(Header, SizeOf(TGifHeader));
end;
if (AnsiUpperCase(Header.Signature) = ‘GIF89A’) or
(AnsiUpperCase(Header.Signature) = ‘GIF87A’) then
begin
Result.Width := Header.Width;
Result.Height := Header.Height;
end;
end;
Read more »
Filed in Графика by admin | Февраль 27, 2008 | No Comments