示例#1
0
        /// <summary>
        /// Создание анимации из файла *.avi (при этом палитра если возможно берется из одноименного файла *.pal) (TODO: поддрежка формата *.gif)
        /// </summary>
        /// <param name="file"></param>
        public void ImportFromFile(string file)
        {
            if (!File.Exists(file))
            {
                return;
            }
            //Palette = new ushort[0x100];
            //Frames = new List<FrameEdit>();
            //idxextra = 0x00000000; // хз

            ClearFrames();
            switch (Path.GetExtension(file))
            {
            case ".avi":
                var filename = Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file));
                var avi      = new AviManager(filename + ".avi", true);
                var stream   = avi.GetVideoStream();
                stream.GetFrameOpen();
                var frames = new Bitmap[stream.CountFrames];
                for (int pos = 0; pos < stream.CountFrames; ++pos)
                {
                    frames[pos] = stream.GetBitmap(pos);
                }
                stream.GetFrameClose();
                avi.Close();

                if (File.Exists(filename + ".pal"))
                {
                    this.GetPalPalette(filename + ".pal");
                }
                else
                {
                    this.GetImagePalette(frames);
                }

                if (Frames == null)
                {
                    Frames = new List <FrameEdit>();
                }
                foreach (var frame in frames)
                {
                    Frames.Add(new FrameEdit(frame, FrameEdit.GetSingleRect(frame), Palette, frame.Width / 2, -frame.Height / 4));
                }
                //this.AddFrame(frame);

                break;

            case ".gif":
                throw new NotImplementedException();
                break;

            default: throw new FileFormatException();
            }
        }