/// <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); }