/// <summary>Renders the associated <see cref="frame" /> into an image. You can specify <paramref name="width" /> and /// <paramref name="height" />.</summary> /// <param name="frame">The frame which needs to be converted into an image.</param> /// <param name="width">The width of the rendered image.</param> /// <param name="height">The height of the rendered image.</param> public static Task <BitmapSource> ConvertTo_RenderedImage(this IFrame frame, double width = 1920D, double height = 1080D) { var t = new Task <BitmapSource>(() => { var presenter = new FramePresenter { Item = frame, Width = width, Height = height }; presenter.Measure(presenter.DesiredSize); presenter.Arrange(new Rect(presenter.DesiredSize)); presenter.UpdateLayout(); var img = presenter.VisualChilds_By_Condition <Image>(i => true); foreach (var image in img) { BindingOperations.ClearBinding(image, Image.SourceProperty); image.Source = ((IFrameImage)image.DataContext).FrameItemImage; } presenter.StartVideos(TimeSpan.FromSeconds(5)); presenter.UpdateLayout(); var bitmapSource = presenter.ConvertTo_Image(); bitmapSource.Freeze(); return(bitmapSource); }, TaskCreationOptions.LongRunning); t.Start(StaTaskScheduler.Default); return(t); }
protected override void AddNewFrameDataRow(FramePresenter fr) { //Create a new DataRow for the new frame var dr = this.DataView.Table.NewRow(); dr.BeginEdit(); dr[SkaaGameDataLib.Util.DataRowExtensions.ResIdxFrameNameColumn] = fr.Name; dr[SkaaGameDataLib.Util.DataRowExtensions.ResIdxFrameOffsetColumn] = fr.BitmapOffset; dr.EndEdit(); this.DataView.Table.Rows.Add(dr); }
protected override void AddNewFrameDataRow(FramePresenter fr) { //todo: Need data for the other SFRAME columns throw new NotImplementedException(); //Create a new DataRow for the new frame var dr = this.DataView.Table.NewRow(); dr.BeginEdit(); dr[SkaaGameDataLib.Util.DataRowExtensions.SprFrameNameColumn] = fr.Name; dr[SkaaGameDataLib.Util.DataRowExtensions.SprFrameOffsetColumn] = fr.BitmapOffset; dr.EndEdit(); this.DataView.Table.Rows.Add(dr); }