예제 #1
0
 /// <summary>
 /// Nastavi rozliseni scene a prezvorkuje klicove snimky
 /// </summary>
 /// <param name="width"></param>
 /// <param name="height"></param>
 public void SetResolution(int width, int height)
 {
     mergeWithBackground();
     morphManager.ResampleKeyFrames(width, height);
     selectedFrame.ApplyWarping();
     redraw();
 }
예제 #2
0
        /// <summary>
        /// Ziska morphovany snimek
        /// </summary>
        /// <param name="index">Index pozadovaneho snimku</param>
        /// <param name="startKeyFrame">Prvni klicovy snimek</param>
        /// <param name="endKeyFrame">Druhy klicovy snimek</param>
        /// <returns>Morphovany snimek</returns>
        private Frame getMorphedFrame(int index, Frame startKeyFrame, Frame endKeyFrame)
        {
            // inicializace vrstev pro modifikaci
            if (morphedBitmap == null)
            {
                morphedBitmap = new RenderTargetBitmap(endKeyFrame.Format.PixelWidth, endKeyFrame.Format.PixelHeight, 96, 96, endKeyFrame.WarpedBitmap.Format);
            }

            double ratio = (double)(index - startKeyFrame.Index) / (endKeyFrame.Index - startKeyFrame.Index);


            // Vytvoreni noveho snimku se ziskanou bitmapou
            Frame morphedFrame = new Frame(index);

            interpolateGrid(morphedFrame, startKeyFrame, endKeyFrame, 1 - ratio);
            startKeyFrame.ApplyWarping(morphedFrame.Grid.Nodes);
            endKeyFrame.ApplyWarping(morphedFrame.Grid.Nodes);

            // Prolnuti dvou obrazku
            layerImage.Source          = endKeyFrame.WarpedBitmap;
            layerImage.Opacity         = ratio;
            layerInterleave.Background = startKeyFrame.WarpedBitmap != null ? (Brush) new ImageBrush(startKeyFrame.WarpedBitmap) : Brushes.White;
            layerInterleave.Arrange(new System.Windows.Rect(0, 0, endKeyFrame.Format.PixelWidth, endKeyFrame.Format.PixelHeight));


            morphedBitmap.Render(layerInterleave); // Ulozeni prolnutych snimku do bitmapy
            morphedFrame.SourceBitmap = morphedBitmap;
            //morphedFrame.ApplyWarping();
            return(morphedFrame);
        }