锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
GDI+鐨?/SPAN>Image瀵硅薄鎻愪緵浜嗙洿鎺ョ殑瀵?/SPAN>GIF銆?/SPAN>TIF鏂囦歡鏍煎紡鐨勬敮鎸併傝皟鐢?/SPAN>Image瀵硅薄鐨勬垚鍛樺嚱鏁?/SPAN>GetFrameDimensionsCount鍙互寰楀埌Image瀵硅薄鐨?/SPAN>Dimension鏁般傛瘡涓?/SPAN>Dimension閫氳繃涓涓?/SPAN>GUID鏍囩ず銆傚嚱鏁?/SPAN>GetFrameDimensionsList鍙互榪斿洖鎵鏈?/SPAN>Dimension鐨?/SPAN>GUID鍊箋傜涓涓?/SPAN>GUID鍊間繚瀛樺湪鍑芥暟鍙傛暟pDimensionsIDs鏁扮粍鐨勭儲寮?/SPAN>0澶勩?/SPAN>GetFrameCount鍙互寰楀埌姣忎釜Dimension閲屾湁澶氬皯涓?/SPAN>Frame銆?SPAN lang=ZH-CN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">綆鍗曠ず渚嬩唬鐮侊細
Image* image = new Image(L"Multiframe.gif");
UINT count = 0;
count = image->GetFrameDimensionsCount();
GUID *pDimensionIDs=(GUID*)new GUID[count];
image->GetFrameDimensionsList(pDimensionIDs, count);
WCHAR strGuid[39];
StringFromGUID2(pDimensionIDs[0], strGuid, 39);
UINT frameCount=image->GetFrameCount(&pDimensionIDs[0]);
delete []pDimensionIDs;
騫朵笉鏄墍鏈夌殑GIF鏂囦歡閮芥槸鍚湁澶氬撫鐨勶紝鎵浠ユ垜浠湪鏄劇ずGIF鐨勬椂鍊欏彲浠ラ氳繃涓婇潰鐨勪唬鐮佹牴鎹?/SPAN>frameCount鐨勫煎垽鏂繖涓?/SPAN>GIF鏂囦歡鏄惁鏈夊涓撫銆?/SPAN>
鍦ㄧ‘璁ゆ湁澶氫釜甯х殑鍥懼儚浠ュ悗錛岃繕瑕佸緱鍒版瘡甯у浘鍍忔樉紺虹殑闂撮殧鏃墮棿銆?/SPAN>GDI+鐨?/SPAN>Image瀵硅薄鎻愪緵浜?/SPAN> GetPropertyItem鑾峰彇鍥懼儚鐨勫睘鎬с?/SPAN>GetPropertyItem鍑芥暟闇瑕佺敤鎴蜂紶閫掓暟鎹繑鍥炵紦鍐插尯鍜屽ぇ灝忋傛墍浠ュ湪浣跨敤鍓嶅厛鐢?/SPAN>GetPropertyItemSize寰楀埌闇瑕佺殑緙撳啿鍖哄ぇ灝忥紝鍒嗛厤絀洪棿鍚庡啀鍙栧緱灞炴ф暟鎹?/SPAN>
//PropertyTagFrameDelay鏄?/SPAN>GDI+涓瀹氫箟鐨勪竴涓?/SPAN>GIG灞炴?/SPAN>ID鍊鹼紝琛ㄧず鏍囩甯ф暟鎹殑寤惰繜鏃墮棿
int size = GetPropertySize(PropertyTagFrameDelay);
PropertyItem* pItem = NULL;
pItem = (PropertyItem*)malloc(size);
image->GetPropertyItem(PropertyTagFrameDelay,size,pItem);
榪欐牱灝辨妸鎵鏈夊拰PropertyTagFrameDelay灞炴х浉鍏崇殑鏁版嵁鍙栧埌浜?/SPAN>pItem涓傜劧鍚庨氳繃pItem璁塊棶緇撴瀯涓殑value銆傛瘡涓ゅ撫鍥懼儚涔嬮棿鐨勯棿闅旀椂闂存槸涓嶄竴瀹氱浉鍚岀殑錛屾墍浠ヨ繕闇瑕佸緱鍒板綋鍓嶆鏄劇ず鐨勫撫鍥懼儚鐨勭儲寮曞箋傛渶鍚庤皟鐢?/SPAN>Image瀵硅薄鐨?/SPAN>DrawImage鍑芥暟鎶婃瘡甯у浘鍍忕敾鍑烘潵銆傜畝鍗曚唬鐮佸涓嬶細
int fcount=0;
//Guid鐨勫煎湪鏄劇ずGIF涓?/SPAN>FrameDimensionTime錛屾樉紺?/SPAN>TIF鏃朵負FrameDimensionPage
GUID Guid = FrameDimensionTime;
while(thue)
{
Graphics gh(hDC); //hDC鏄閮ㄤ紶鍏ョ殑鐢誨浘DC
gh.DrawImage(image,0,0,image->GetWidth(),image->GetHeight());
//閲嶆柊璁劇疆褰撳墠鐨勬椿鍔ㄦ暟鎹撫
image->SelectActiveFrame(&Guid,fcount++);
if(fcount == frameCount) //frameCount鏄笂闈?/SPAN>GetFrameCount榪斿洖鍊?BR> fcount= 0; //濡傛灉鍒頒簡鏈鍚庝竴甯ф暟鎹張閲嶆柊寮濮?BR> //璁$畻姝ゅ撫瑕佸歡榪熺殑鏃墮棿
long lPause = ((long*)pItem->value)[fcount]*10;
Sleep(lPause); //榪欓噷綆鍗曚嬌鐢ㄤ簡sleep
}