Esempio n. 1
0
        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();
         
        }
Esempio n. 3
0
        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);
                                    }
                                }
            }
        }