//************************************ // Method: InitGifImage // FullName: CGifAnimUI::InitGifImage // Access: private // Returns: void // Qualifier: // Note: //************************************ void CGifAnimUI::InitGifImage() { try { CStdString sImageName = GetBkImage(); CStdString sImagePath = CPaintManagerUI::GetResourcePath(); sImagePath += sImageName; if ( NULL == sImagePath ) return; m_pGifImage = Image::FromFile( sImagePath ); if ( NULL == m_pGifImage ) return; UINT nCount = 0; nCount = m_pGifImage->GetFrameDimensionsCount(); GUID* pDimensionIDs = new GUID[ nCount ]; m_pGifImage->GetFrameDimensionsList( pDimensionIDs, nCount ); m_nFrameCount = m_pGifImage->GetFrameCount( &pDimensionIDs[0] ); int nSize = m_pGifImage->GetPropertyItemSize( PropertyTagFrameDelay ); m_pPropertyItem = (PropertyItem*) malloc( nSize ); m_pGifImage->GetPropertyItem( PropertyTagFrameDelay, nSize, m_pPropertyItem ); delete pDimensionIDs; pDimensionIDs = NULL; long lPause = ((long*) m_pPropertyItem->value)[m_nFramePosition] * 10; if ( lPause == 0 ) lPause = 100; m_pManager->SetTimer( this, EVENT_TIEM_ID, lPause ); } catch (...) { throw "CGifAnimUI::InitGifImage"; } }
void CGifAnimUI::InitGifImage() { m_pGifImage = CRenderEngine::GdiplusLoadImage(GetBkImage()); if ( NULL == m_pGifImage ) return; UINT nCount = 0; nCount = m_pGifImage->GetFrameDimensionsCount(); GUID* pDimensionIDs = new GUID[ nCount ]; m_pGifImage->GetFrameDimensionsList( pDimensionIDs, nCount ); m_nFrameCount = m_pGifImage->GetFrameCount( &pDimensionIDs[0] ); if (m_nFrameCount > 1) { int nSize = m_pGifImage->GetPropertyItemSize(PropertyTagFrameDelay); m_pPropertyItem = (Gdiplus::PropertyItem*) malloc(nSize); m_pGifImage->GetPropertyItem(PropertyTagFrameDelay, nSize, m_pPropertyItem); } delete[] pDimensionIDs; pDimensionIDs = NULL; if (m_bIsAutoSize) { SetFixedWidth(m_pGifImage->GetWidth()); SetFixedHeight(m_pGifImage->GetHeight()); } if (m_bIsAutoPlay) { PlayGif(); } }