欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# WPF自制簡單的批注工具

 更新時間:2024年11月11日 15:24:23   作者:無熵~  
在教學(xué)和演示中,我們通常需要對重點進行批注,下載安裝第三方工具批注顯得很麻煩,本文將使用WPF開發(fā)了一個批注工具,感興趣的可以了解下

在教學(xué)和演示中,我們通常需要對重點進行批注,下載安裝第三方工具批注顯得很麻煩。本篇使用WPF開發(fā)了一個批注工具,工具小巧,功能豐富,非常使用日常免費使用,或者進行再次開發(fā)。

自制批注工具具有以下功能特點:

支持圖畫,擦除,撤銷,恢復(fù),改變畫板顏色功能

提供顏色選擇和線條大小設(shè)置功能

方便演示教學(xué)

示例代碼如下:

        Stack<StrokeCollection> undoStack = new Stack<StrokeCollection>();//撤銷
        Stack<StrokeCollection> recoverStack = new Stack<StrokeCollection>();//恢復(fù)撤銷
 
        public MainWindow()
        {
            InitializeComponent();
            try
            {
                EraserCanvas.MouseDown += EraserCanvas_MouseDown;
                EraserCanvas.MouseMove += EraserCanvas_MouseMove;
                EraserCanvas.MouseUp += EraserCanvas_MouseUp;
 
                
                Global.Instance.CurrentCanvas.PreviewMouseDown += WriteBorad_PreviewMouseDown;
                InkCanvasRootPanel.Children.Clear();
                InkCanvasRootPanel.Children.Add(Global.Instance.CurrentCanvas);
            }
            catch (Exception)
            {
 
            }
 
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //設(shè)置色板和清空橡皮位置
            Window window = Window.GetWindow(rdoPen);
            Point point = rdoPen.TransformToAncestor(window).Transform(new Point(0, 0));
            translateColor.X = translateColor.X - 100;
            translateEraser.X = translateEraser.X-30;
 
 
            if (rdoPenWidthMin.Content.ToString() == Global.Instance.ColorHelper.selectedPenWidth.Trim())
                rdoPenWidthMin.IsChecked = true;
            else if (rdoPenWidthMedium.Content.ToString() == Global.Instance.ColorHelper.selectedPenWidth.Trim())
                rdoPenWidthMedium.IsChecked = true;
            else if (rdoPenWidthMax.Content.ToString() == Global.Instance.ColorHelper.selectedPenWidth.Trim())
                rdoPenWidthMax.IsChecked = true;
 
            //初始化色板
            foreach (string color in Global.Instance.ColorHelper.colorList)
            {
                RadioButton btntemp = new RadioButton();
                btntemp.SetResourceReference(StyleProperty, "ColorSelectStyle");
                btntemp.Width = 30;
                btntemp.Height = 30;
                btntemp.Margin = new Thickness(2, 2, 2, 0);
                btntemp.Background = new SolidColorBrush((System.Windows.Media.Color)ColorConverter.ConvertFromString(color));
 
                if (btntemp.Background.ToString() == Global.Instance.ColorHelper.selectedColor)
                {
                    btntemp.IsChecked = true;
                    Global.Instance.CurrentCanvas.DefaultDrawingAttributes.Color =(System.Windows.Media.Color)ColorConverter.ConvertFromString((string)Global.Instance.ColorHelper.selectedColor);
                }                    
                uniformColor.Children.Add(btntemp);
            }
 
        }
 
 
        #region InkCanvas操作
        bool transformColorFlag = false;
        bool transformEraserClearFlag = false;
        private void RadioButton_Click(object sender, RoutedEventArgs e)
        {
            //橡皮模式下選擇其他工具關(guān)閉橡皮擦功能
            EraserCanvas.Visibility = Visibility.Collapsed;
            _eraserisDown = false;
 
            //如果色板打開下選擇其他工具,隱藏色板工具
            if (!(bool)rdoPen.IsChecked)
            {
                transformColorFlag = false;
                translateColor.Y = 300;
            }
 
            if (!(bool)rdoEraser.IsChecked)
            {
                transformEraserClearFlag = false;
                translateEraser.Y = 100;
            }
 
            if ((sender as RadioButton).Content.ToString() == "畫筆")
            {
                //Topmost = false;
                this.Background = (Brush)new BrushConverter().ConvertFromString("#01000000");
                if (transformColorFlag)
                {
                    translateColor.Y = -10;
                }
                else
                {
                    translateColor.Y = 300;
                }
                transformColorFlag = !transformColorFlag;
                Global.Instance.CurrentCanvas.EditingMode = InkCanvasEditingMode.Ink;
            }
            else if ((sender as RadioButton).Content.ToString() == "橡皮")
            {
                this.Background = (Brush)new BrushConverter().ConvertFromString("#01000000");
                if (transformEraserClearFlag)
                {
                    translateEraser.Y = -10;
                }
                else
                {
                    translateEraser.Y = 100;
                }
                transformEraserClearFlag = !transformEraserClearFlag;
 
                Global.Instance.CurrentCanvas.EditingMode = InkCanvasEditingMode.None;
                EraserCanvas.Visibility = Visibility.Visible;
                TranslateTransform.X = -1000;
                TranslateTransform.Y = -1000;
 
            }
            else if ((sender as RadioButton).Content.ToString() == "選擇")
            {
                //Topmost = true;
                this.Background = System.Windows.Media.Brushes.Transparent;
                Global.Instance.CurrentCanvas.EditingMode = InkCanvasEditingMode.None;
                // Global.Instance.CurrentCanvas.EditingMode = InkCanvasEditingMode.Select;
            }
            else if ((sender as RadioButton).Content.ToString() == "撤銷")
            {
                if (undoStack.Count > 0)
                {
                    recoverStack.Push(Global.Instance.CurrentCanvas.Strokes.Clone());
                     Global.Instance.CurrentCanvas.Strokes = undoStack.Pop();
                }
            }
            else if ((sender as RadioButton).Content.ToString() == "恢復(fù)")
            {
                if (recoverStack.Count > 0)
                {
                    undoStack.Push( Global.Instance.CurrentCanvas.Strokes.Clone());
                     Global.Instance.CurrentCanvas.Strokes = recoverStack.Pop();
                }
            }
        }
        #endregion

到此這篇關(guān)于C# WPF自制簡單的批注工具的文章就介紹到這了,更多相關(guān)WPF批注工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論