請教有關TGIFImage 的delay 的問題 |
答題得分者是:senso
|
sc47
一般會員 發表:2 回覆:4 積分:1 註冊:2005-03-21 發送簡訊給我 |
以下程式,取得的 gifExt->Delay 都是 0,請教要取得正確的 Delay 值,要怎麼寫呢?謝謝指導。
TGIFImage *gif=new TGIFImage; OpenDialog1->Execute(); gif->LoadFromFile(OpenDialog1->FileName); Image1->Picture->Assign(gif); for (int i=0;i TGIFGraphicControlExtension *gifExt=new TGIFGraphicControlExtension(gif->Images->SubImages[i]); ShowMessage(gifExt->Delay); } |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
sc47
一般會員 發表:2 回覆:4 積分:1 註冊:2005-03-21 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
sc47
一般會員 發表:2 回覆:4 積分:1 註冊:2005-03-21 發送簡訊給我 |
|
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
不好意思,delphi不熟,我用c++寫~
[code cpp] Image1->Picture->LoadFromFile(....); TGIFImage *gif = NULL; gif = dynamic_cast if (gif != NULL) { Memo1->Clear(); for (int i=0;i < gif->Images->Count; i ) { Memo1->Lines->Add(gif->Images->Frames[i]->GraphicControlExtension->Delay); } } [/code] |
sc47
一般會員 發表:2 回覆:4 積分:1 註冊:2005-03-21 發送簡訊給我 |
程式編譯之後,會出現錯誤:'Frames' is not a member of 'TGIFImageList'
不知道是不是 TGIFImage 的版本不同所致? 感謝指導。 ===================引 用 senso 文 章=================== 不好意思,delphi不熟,我用c 寫~ [code cpp] Image1->Picture->LoadFromFile(....); TGIFImage *gif = NULL; gif = dynamic_cast if (gif != NULL) { Memo1->Clear(); for (int i=0;i < gif->Images->Count; i ) { Memo1->Lines->Add(gif->Images->Frames[i]->GraphicControlExtension->Delay); } } [/code] |
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
我用的是C++Builder2007
可能版本不同吧? 因為我也找不到SubImages Delay會都是0的原因,在new TGIFGraphicControlExtension的時候會把DelayTime設成0 請參考GIFImg.pas,如下code 所以不應該new,應該直接去找Images的某個成員的GraphicControlExtension [code delphi] constructor TGIFGraphicControlExtension.Create(AFrame: TGIFFrame); begin inherited Create(AFrame); FGCExtension.BlockSize := 4; FGCExtension.PackedFields := $00; FGCExtension.DelayTime := 0; FGCExtension.TransparentColorIndex := 0; FGCExtension.Terminator := 0; if (Frame <> nil) then begin if (Frame.GCE = nil) then Frame.GCE := Self else Warning(gsWarning, sMultipleGCE); end; end; [/code] |
sc47
一般會員 發表:2 回覆:4 積分:1 註冊:2005-03-21 發送簡訊給我 |
謝謝指導,已經解決了。直接用
gif->Images->SubImages[0]->GraphicControlExtension->Delay 就可以了。 ===================引 用 senso 文 章=================== 我用的是C Builder2007 可能版本不同吧? 因為我也找不到SubImages Delay會都是0的原因,在new TGIFGraphicControlExtension的時候會把DelayTime設成0 請參考GIFImg.pas,如下code 所以不應該new,應該直接去找Images的某個成員的GraphicControlExtension [code delphi] constructor TGIFGraphicControlExtension.Create(AFrame: TGIFFrame); begin inherited Create(AFrame); FGCExtension.BlockSize := 4; FGCExtension.PackedFields := $00; FGCExtension.DelayTime := 0; FGCExtension.TransparentColorIndex := 0; FGCExtension.Terminator := 0; if (Frame <> nil) then begin if (Frame.GCE = nil) then Frame.GCE := Self else Warning(gsWarning, sMultipleGCE); end; end; [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |