Esempio n. 1
0
        // drawing a comment rectangle - comment flyout when pressed
        public Rectangle DrawRectangle(Comment comment)
        {
            Rectangle rectangle = new Rectangle
            {
                Fill            = new SolidColorBrush(comment.fill),
                Width           = comment.width,
                Height          = comment.height,
                Opacity         = comment.opacity,
                RenderTransform = new RotateTransform {
                    Angle = comment.angle
                }
            };

            rectangle.DataContext = comment;
            Canvas.SetLeft(rectangle, comment.left);
            Canvas.SetTop(rectangle, comment.top);

            // Add flyout
            var   flyout      = new Flyout();
            Style flyoutStyle = new Style();

            flyoutStyle.TargetType = typeof(FlyoutPresenter);
            flyoutStyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(comment.fill)));
            flyout.FlyoutPresenterStyle = flyoutStyle;

            // Add delete button
            Button deleteButton = new Button();

            deleteButton.Content = new SymbolIcon(Symbol.Delete);
            deleteButton.Click  += delegate(object e, RoutedEventArgs evt)
            {
                canvas.Children.Remove(rectangle);
                comments.Remove(comment);
            };

            // Add canvas
            InkCanvas flyoutInkCanvas = new InkCanvas
            {
                Width  = 250,
                Height = 250
            };

            flyoutInkCanvas.InkPresenter.InputDeviceTypes =
                Windows.UI.Core.CoreInputDeviceTypes.Mouse |
                Windows.UI.Core.CoreInputDeviceTypes.Touch |
                Windows.UI.Core.CoreInputDeviceTypes.Pen;

            // Set up stroke container for serialization
            if (comment.ic != null)
            {
                flyoutInkCanvas.InkPresenter.StrokeContainer = comment.ic;
            }
            comment.ic = flyoutInkCanvas.InkPresenter.StrokeContainer;

            InkToolbar flyoutInkToolbar = new InkToolbar();

            flyoutInkToolbar.TargetInkCanvas = flyoutInkCanvas;

            // Add panels
            StackPanel stackPanel = new StackPanel();

            stackPanel.HorizontalAlignment = HorizontalAlignment.Center;
            stackPanel.VerticalAlignment   = VerticalAlignment.Center;

            StackPanel rightAlignment = new StackPanel();

            rightAlignment.HorizontalAlignment = HorizontalAlignment.Right;
            rightAlignment.Children.Add(deleteButton);

            stackPanel.Children.Add(rightAlignment);
            stackPanel.Children.Add(flyoutInkCanvas);
            stackPanel.Children.Add(flyoutInkToolbar);

            // Additional settings
            flyout.Content = stackPanel;
            //flyout.LightDismissOverlayMode = LightDismissOverlayMode.On;
            rectangle.ContextFlyout = flyout;

            // settings for dragging comments
            rectangle.ManipulationMode   = ManipulationModes.TranslateX | ManipulationModes.TranslateY;
            rectangle.ManipulationDelta += new ManipulationDeltaEventHandler(DragComment);
            canvas.Children.Add(rectangle);

            return(rectangle);
        }