public ReframingEffectProcessor() { Name = "Reframing Effect"; m_ReframingEffect = new ReframingEffect(); SetupEffectCategory(m_ReframingEffect); m_propertyDescriptions = new Dictionary <string, PropertyDescription>(); m_propertyDescriptions.Add("Angle", new PropertyDescription(0, 360, 0)); m_propertyDescriptions.Add("Left", new PropertyDescription(0, 1.0, 0)); m_propertyDescriptions.Add("Top", new PropertyDescription(0, 1.0, 0)); m_propertyDescriptions.Add("Right", new PropertyDescription(0, 1.0, 0.5)); m_propertyDescriptions.Add("Bottom", new PropertyDescription(0, 1.0, 0.5)); AddEditors(); }
public ReframingEffectProcessor() { Name = "Reframing Effect"; m_ReframingEffect = new ReframingEffect(); SetupEffectCategory(m_ReframingEffect); m_propertyDescriptions = new Dictionary<string, PropertyDescription>(); m_propertyDescriptions.Add("Angle", new PropertyDescription(0, 360, 0)); m_propertyDescriptions.Add("Left", new PropertyDescription(0, 1.0, 0)); m_propertyDescriptions.Add("Top", new PropertyDescription(0, 1.0, 0)); m_propertyDescriptions.Add("Right", new PropertyDescription(0, 1.0, 0.5)); m_propertyDescriptions.Add("Bottom", new PropertyDescription(0, 1.0, 0.5)); AddEditors(); }
private async void SaveBoth_Click(object sender, RoutedEventArgs e) { using (var scribblesStream = new MemoryStream()) { var scribbleOutputStream = scribblesStream.AsOutputStream(); await MyInkCanvas.InkPresenter.StrokeContainer.SaveAsync(scribbleOutputStream); scribblesStream.Position = 0; var absoluteBoudningRect = MyInkCanvas.InkPresenter.StrokeContainer.BoundingRect; using (var scribblesSource = new StreamImageSource(scribblesStream)) using (var scribbleBlender = new BlendEffect(new ColorImageSource(new Size(MyInkCanvas.ActualWidth, MyInkCanvas.ActualHeight), Color.FromArgb(0, 0, 0, 0)), scribblesSource)) using (var reframe = new ReframingEffect(scribbleBlender, await InkHelper.GetDrawArea(ImageElement.Source, MyInkCanvas), 0, new Point(0, 0))) using (var overlayBlender = new BlendEffect(ImageElement.Source, reframe)) using (var overlayRenderer = new JpegRenderer(overlayBlender) { RenderOptions = RenderOptions.Cpu }) { var relativeBoundingRect = new Rect(absoluteBoudningRect.Left / MyInkCanvas.ActualWidth, absoluteBoudningRect.Top / MyInkCanvas.ActualHeight, absoluteBoudningRect.Width / MyInkCanvas.ActualWidth, absoluteBoudningRect.Height / MyInkCanvas.ActualHeight); scribbleBlender.TargetArea = relativeBoundingRect; scribbleBlender.BlendFunction = BlendFunction.Normal; scribbleBlender.GlobalAlpha = 1.0; var buffer = await overlayRenderer.RenderAsync(); var file = await KnownFolders.SavedPictures.CreateFileAsync("ScribblesBoth.jpg", CreationCollisionOption.GenerateUniqueName); using (var outputStream = (await file.OpenStreamForWriteAsync())) { await buffer.AsStream().CopyToAsync(outputStream); } } } }