Ejemplo n.º 1
0
		/// <summary>Create the morphed images and video.</summary>
        public void Render(IImageWriter imageWriter, LinePairCollection lines, Bitmap startImageBmp, Bitmap endImageBmp)
        {
            _curFrame = 0;
            double percentagePerFrame = 1.0 / (_options.NumberOfOutputFrames - 1);

            using (Bitmap clonedStart = Utilities.CreateNewBitmapFrom(startImageBmp))
            using (Bitmap clonedEnd = Utilities.CreateNewBitmapFrom(endImageBmp))
            {
                // Write out the starting picture
                imageWriter.AddFrame(clonedStart);
                _curFrame = 1;
                UpdateProgressChanged();

                using (FastBitmap startImage = new FastBitmap(startImageBmp))
                using (FastBitmap endImage = new FastBitmap(endImageBmp))
                {
                    for (int i = 1; i < _options.NumberOfOutputFrames - 1; i++)
                    {
                        _cancellationToken.ThrowIfCancellationRequested();
                        using (Bitmap frame = RenderFrame(lines, startImage, endImage, percentagePerFrame * i))
                        {
                            imageWriter.AddFrame(frame);
                        }
                        _curFrame++;
                        UpdateProgressChanged();
                    }
                }

                imageWriter.AddFrame(clonedEnd);
                _curFrame++;
                UpdateProgressChanged();
            }
        }
        /// <summary>Create the morphed images and video.</summary>
        public void Render(IImageWriter imageWriter, LinePairCollection lines, Bitmap startImageBmp, Bitmap endImageBmp)
        {
            _curFrame = 0;
            double percentagePerFrame = 1.0 / (_options.NumberOfOutputFrames - 1);

            using (Bitmap clonedStart = Utilities.CreateNewBitmapFrom(startImageBmp))
                using (Bitmap clonedEnd = Utilities.CreateNewBitmapFrom(endImageBmp)) {
                    // Write out the starting picture
                    imageWriter.AddFrame(clonedStart);
                    _curFrame = 1;
                    UpdateProgressChanged();

                    using (FastBitmap startImage = new FastBitmap(startImageBmp))
                        using (FastBitmap endImage = new FastBitmap(endImageBmp)) {
                            for (int i = 1; i < _options.NumberOfOutputFrames - 1; i++)
                            {
                                _cancellationToken.ThrowIfCancellationRequested();
                                using (Bitmap frame = RenderFrame(lines, startImage, endImage, percentagePerFrame * i)) {
                                    imageWriter.AddFrame(frame);
                                }
                                _curFrame++;
                                UpdateProgressChanged();
                            }
                        }

                    imageWriter.AddFrame(clonedEnd);
                    _curFrame++;
                    UpdateProgressChanged();
                }
        }
 public void AddFrame(Bitmap frame)
 {
     if (_handlers != null)
     {
         foreach (var handler in _handlers)
         {
             handler(frame);
         }
     }
     _writer.AddFrame(frame);
 }