示例#1
0
        public static bool LoadGifFromDisk(string path)
        {
            try
            {
                LoadedGifImage      = Image.FromFile(path);
                LoadedGifFrameDim   = new FrameDimension(LoadedGifImage.FrameDimensionsList[0]);
                LoadedGifFrameCount = LoadedGifImage.GetFrameCount(LoadedGifFrameDim);

                var delayPropertyBytes = LoadedGifImage.GetPropertyItem(0x5100).Value;

                int averageFrameLen = 0;
                for (int i = 0; i < LoadedGifFrameCount; i++)
                {
                    averageFrameLen += (BitConverter.ToInt32(delayPropertyBytes, i * 4) * 10);
                }
                averageFrameLen /= LoadedGifFrameCount;
                GifMillisconds   = averageFrameLen;

                LoadedGifImage.SelectActiveFrame(LoadedGifFrameDim, 0);
                WorkingBitmap = new Bitmap(LoadedGifImage);

                ImageLoadState = LoadState.None;
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
示例#2
0
        public static void DisposeGif()
        {
            if (LoadedStillBitmap != null)
            {
                LoadedStillBitmap.Dispose();
            }

            if (LoadedGifImage != null)
            {
                LoadedGifImage.Dispose();
            }
        }