以下のデモでは、フォームのキャンバスにGIFを描画しようとしています。それは動作しません。画像は前進しません。それを動作させるには?私が達成したい何TGifImageからビットマップにフレームを抽出する方法は?
procedure TForm1.FormCreate(Sender: TObject);
begin
GIF := TGIFImage.Create;
GIF.LoadFromFile('c:\2.gif');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
GIF.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
VAR i: Integer;
begin
REPEAT
for i:= 0 to GIF.Images.Count-1 DO
begin
DisplayGifFrame(i);
Sleep(30);
end;
UNTIL FALSE;
end;
procedure TForm1.DisplayGifFrame(AIndex: Integer);
VAR
Renderer: TGIFRenderer;
begin
Renderer := TGIFRenderer.Create(GIF);
TRY
Renderer.Animate := TRUE;
Renderer.FrameIndex := AIndex;
Renderer.Draw(Canvas, Canvas.ClipRect);
{save frame in a bitmap here. save bitmap to disk}
// xxx
FINALLY
Renderer.Free;
end;
end;
:
私はGIFからすべてのフレームを抽出し、UNIQUEビットマップ内の各フレームを載せていきたいと思います。
更新:
ここに続け:Cannot draw GIF on dynamically created TBitmap(s)
あなたの質問は何ですか?投稿したコードにどのような問題がありますか?期待どおりに動かないのは何ですか?あなたのコードが何をしようとしているのか、何がうまくいかないのかについての情報は絶対に何も知らないことを覚えておいてください。その後、私たちがあなたに手伝ってもらうために、詳細を編集して追加してください。 :-) –
私は誰がすぐにdownvotingを知っているが、停止してください。ポスターには、コメントに応答するために数分を与えてください。特に、人々がすでにそうするように依頼したときは、質問を解決してからdownvoteすることをお勧めします。 @Altar:「うまくいきません」とは、あなた以外の誰にも絶対に何も意味しません。 **最後のコメントをもう一度お読みください**。 –
質問が更新されました。群衆を落ち着かせるためにKenに感謝します:) – Ampere