Exemplo n.º 1
0
        public void DrawText(Color color, Point point, string text)
        {
            SKPaint paint = new SKPaint {
                Color = FromColor(color), TextSize = 18, IsAntialias = true
            };

            CurrentCanvas.DrawText(text, FromPoint(point), paint);
        }
Exemplo n.º 2
0
        public void DrawSquare(Color color, Point point, Size size)
        {
            SKPaint paint = new SKPaint {
                Color = FromColor(color)
            };

            CurrentCanvas.DrawRect(new SKRect(point.X, point.Y, point.X + size.Width, point.Y + size.Height), paint);
        }
Exemplo n.º 3
0
        public void ShowPrevCanvas()
        {
            if (CanvasHistory.Count < 1)
            {
                return;
            }

            if (CurrentCanvas != null)
            {
                CurrentCanvas.HideCanvas();
            }

            CurrentCanvas = CanvasHistory.Pop();
            CurrentCanvas.ShowCanvas();
        }
Exemplo n.º 4
0
        public void DrawTriangle(Color color, Point point, int rotationDegrees = 0)
        {
            SKPaint paint = new SKPaint {
                Color = FromColor(color), Style = SKPaintStyle.Fill, IsAntialias = true
            };

            SKPath path = new SKPath();

            // TODO - Make the triangle variable size
            path.MoveTo(new SKPoint(point.X, point.Y));
            path.LineTo(new SKPoint(point.X + 100, point.Y));
            path.LineTo(new SKPoint(point.X + 50f, point.Y + 86.6f));
            path.MoveTo(new SKPoint(point.X, point.Y));
            path.Close();
            CurrentCanvas.Save();
            CurrentCanvas.RotateDegrees(rotationDegrees, point.X + 50, point.Y + 28.86f);
            CurrentCanvas.DrawPath(path, paint);
            CurrentCanvas.Restore();
        }
Exemplo n.º 5
0
        /// <summary>
        /// 展示当前图表
        /// </summary>
        public void Draw()
        {
            if (CurrentCanvas != null)
            {
                if (CurrentCanvas.Parent == null)
                {
                    CurrentCanvas.Parent = this.chartCanvas;
                }

                CurrentCanvas.DataContext = this.DataContext;

                this.LayoutRoot.Children.Clear();
                this.chartCanvas.Children.Clear();

                if (IsShowLegend)
                {
                    this.CurrentCanvas.LegendPanel.Visibility = System.Windows.Visibility.Visible;
                    ///初始化图例容器
                    /////根据图例位置,排例图表与图例的位置
                    switch (CurrentCanvas.LegendLabelPosition)
                    {
                    case EnumLegendLabelPosition.Bottom:
                    {
                        this.LayoutRoot.Children.Add(this.chartCanvas);
                        this.CurrentCanvas.LegendPanel.Orientation         = Orientation.Horizontal;
                        this.CurrentCanvas.LegendPanel.VerticalAlignment   = System.Windows.VerticalAlignment.Bottom;
                        this.CurrentCanvas.LegendPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                        this.LayoutRoot.Children.Add(this.CurrentCanvas.LegendPanel);
                        chartCanvas.Margin = new Thickness(MarginSize);

                        CurrentCanvas.Width  = this.ActualWidth - MarginSize * 2;
                        CurrentCanvas.Height = this.ActualHeight - CurrentCanvas.LegendSize.Height - MarginSize;
                        break;
                    }

                    case EnumLegendLabelPosition.Right:
                    {
                        this.LayoutRoot.Children.Add(this.chartCanvas);
                        this.CurrentCanvas.LegendPanel.Orientation         = Orientation.Vertical;
                        this.CurrentCanvas.LegendPanel.VerticalAlignment   = System.Windows.VerticalAlignment.Top;
                        this.CurrentCanvas.LegendPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;
                        this.LayoutRoot.Children.Add(this.CurrentCanvas.LegendPanel);
                        chartCanvas.Margin = new Thickness(24, 24, 24, 30);

                        CurrentCanvas.Width  = this.ActualWidth - CurrentCanvas.LegendSize.Width - MarginSize;
                        CurrentCanvas.Height = this.ActualHeight - MarginSize * 2;
                        break;
                    }

                    case EnumLegendLabelPosition.Top:
                    {
                        this.CurrentCanvas.LegendPanel.Orientation         = Orientation.Horizontal;
                        this.CurrentCanvas.LegendPanel.VerticalAlignment   = System.Windows.VerticalAlignment.Top;
                        this.CurrentCanvas.LegendPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                        this.LayoutRoot.Children.Add(this.CurrentCanvas.LegendPanel);
                        this.LayoutRoot.Children.Add(this.chartCanvas);

                        CurrentCanvas.Width  = this.ActualWidth - MarginSize * 2;
                        CurrentCanvas.Height = this.ActualHeight - CurrentCanvas.LegendSize.Height - MarginSize;

                        chartCanvas.Margin = new Thickness(24, CurrentCanvas.LegendSize.Height, MarginSize, MarginSize);
                        break;
                    }

                    case EnumLegendLabelPosition.Left:
                    {
                        this.CurrentCanvas.LegendPanel.Orientation         = Orientation.Vertical;
                        this.CurrentCanvas.LegendPanel.VerticalAlignment   = System.Windows.VerticalAlignment.Top;
                        this.CurrentCanvas.LegendPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                        this.LayoutRoot.Children.Add(this.CurrentCanvas.LegendPanel);
                        this.LayoutRoot.Children.Add(this.chartCanvas);

                        CurrentCanvas.Width  = this.ActualWidth - CurrentCanvas.LegendSize.Width - MarginSize;
                        CurrentCanvas.Height = this.ActualHeight - MarginSize - MarginSize;

                        chartCanvas.Margin = new Thickness(CurrentCanvas.LegendSize.Width, MarginSize, MarginSize, MarginSize);
                        break;
                    }
                    }
                }
                else
                {
                    CurrentCanvas.Width  = this.ActualWidth - MarginSize * 2;
                    CurrentCanvas.Height = this.ActualHeight - MarginSize;
                    this.CurrentCanvas.LegendPanel.Visibility = System.Windows.Visibility.Collapsed;
                    this.LayoutRoot.Children.Add(this.chartCanvas);
                }
                if (CurrentCanvas.Width > 0 && CurrentCanvas.Height > 0)
                {
                    CurrentCanvas.Draw();
                }
            }
        }
Exemplo n.º 6
0
        public void LoadToolBar()
        {
            AdornerLayer al = null;

            if (CurrentCanvas != null)
            {
                al = AdornerLayer.GetAdornerLayer(CurrentCanvas);
            }
            SetCanvasSize();

            //判断当前页面编辑状态  如果是 则显示工具栏 反之。。。
            //DesignMode = MODE.EDIT;
            if (!(Toolbox != null && PropertyViewWindow != null && ToolbarContent != null && Bd != null))
            {
                return;
            }
            if (DesignMode == MODE.EDIT)
            {
                Grid grid = this.Template.FindName("gridToolbox", this) as Grid;
                grid.Visibility = System.Windows.Visibility.Visible;
                PropertyViewWindow.Visibility = Visibility.Collapsed;
                ToolbarContent.Visibility     = Visibility.Visible;
                Toolbar.Visibility            = Visibility.Visible;
                Toolbar.IsEnabled             = true;
                if (CurrentCanvas != null)
                {
                    Toolbox.Visibility      = Visibility.Visible;
                    CurrentCanvas.AllowDrop = true;
                    CurrentCanvas.IsEnabled = true;
                    CurrentCanvas.Focusable = true;
                    if (CurrentCanvas.ContextMenu != null)
                    {
                        CurrentCanvas.ContextMenu.Visibility = Visibility.Visible;
                        CurrentCanvas.ContextMenu.Focus();
                    }

                    CurrentCanvas.Focus();
                }
                if (al != null)
                {
                    al.IsEnabled = true;
                }
                Bd.BorderThickness = new Thickness(1);
            }
            else
            {
                if (CurrentCanvas != null)
                {
                    CurrentCanvas.SelectionService.SelectedDesignerContainer.Clear();
                    CurrentCanvas.AllowDrop = false;
                    CurrentCanvas.ContextMenu.Visibility = Visibility.Collapsed;
                }
                Toolbox.Visibility = Visibility.Collapsed;
                Grid grid = this.Template.FindName("gridToolbox", this) as Grid;
                grid.Visibility = System.Windows.Visibility.Collapsed;
                PropertyViewWindow.Visibility = Visibility.Collapsed;
                ToolbarContent.Visibility     = Visibility.Collapsed;
                Bd.BorderThickness            = new Thickness(0);
                if (CurrentCanvas != null)
                {
                    CurrentCanvas.Visibility = System.Windows.Visibility.Visible;
                    foreach (var item in CurrentCanvas.Children.OfType <DesignerContainer>())
                    {
                        item.IsSelected = false;
                    }
                }

                if (al != null)
                {
                    al.IsEnabled = false;
                }
            }

            if (CurrentCanvas == null)
            {
                return;
            }
            CurrentCanvas.DesignMode = DesignMode;
            foreach (var item in CurrentCanvas.Children.OfType <DesignerContainer>())
            {
                //em.Editable = editable;
                //string str = ((DesignerItem)item.DesignerChild)._displayName;
                //item.IsHitTestVisible = editable;
                item.IsHitTestVisible = true;
                if (item.Item == null)
                {
                    continue;
                }
                item.Item.ToolTip = null;
            }
        }
Exemplo n.º 7
0
 public void DrawTurtle(Point point)
 {
     CurrentCanvas.DrawBitmap(TurtleImage, FromPoint(point));
 }
Exemplo n.º 8
0
 public void Fill(Color color)
 {
     CurrentCanvas.Clear(FromColor(color));
 }