Browse Source

内容编辑-解决合并问题,右键菜单和自定义角度

weixiangjie 1 year ago
parent
commit
54e60c0171

+ 117 - 12
Demo/Examples/Compdfkit_Tools/Edit/ContentEditCOntrol/ContentEditControl.xaml.cs

@@ -363,10 +363,10 @@ namespace Compdfkit_Tools.PDFControl
         {
             PdfViewControl.PDFViewTool.GetCPDFViewer().UndoManager.PropertyChanged -= UndoManager_PropertyChanged;
             PdfViewControl.PDFViewTool.GetCPDFViewer().UndoManager.PropertyChanged += UndoManager_PropertyChanged;
-            //PdfViewControl.MouseLeftButtonDownHandler -= PDFToolManager_MouseLeftButtonDownHandler;
-            //PdfViewControl.MouseLeftButtonDownHandler += PDFToolManager_MouseLeftButtonDownHandler;
-            //PdfViewControl.MouseLeftButtonUpHandler -= PDFToolManager_MouseLeftButtonUpHandler;
-            //PdfViewControl.MouseLeftButtonUpHandler += PDFToolManager_MouseLeftButtonUpHandler;
+            PdfViewControl.MouseLeftButtonDownHandler -= PDFToolManager_MouseLeftButtonDownHandler;
+            PdfViewControl.MouseLeftButtonDownHandler += PDFToolManager_MouseLeftButtonDownHandler;
+            PdfViewControl.MouseLeftButtonUpHandler -= PDFToolManager_MouseLeftButtonUpHandler;
+            PdfViewControl.MouseLeftButtonUpHandler += PDFToolManager_MouseLeftButtonUpHandler;
             PdfViewControl.MouseRightButtonDownHandler -= PdfViewControl_MouseRightButtonDownHandler;
             PdfViewControl.MouseRightButtonDownHandler += PdfViewControl_MouseRightButtonDownHandler;
             PdfViewControl = view;
@@ -673,7 +673,7 @@ namespace Compdfkit_Tools.PDFControl
         {
             int index = -1;
             CPDFEditImageArea imageArea = PdfViewControl.PDFToolManager.GetSelectedEditAreaObject(ref index) as CPDFEditImageArea;
-
+            
             MenuItem rotateLeftMenu = new MenuItem();
             rotateLeftMenu.Header = LanguageHelper.CommonManager.GetString("Menu_RotateLeft");
             rotateLeftMenu.Click += (o, p) =>
@@ -686,14 +686,119 @@ namespace Compdfkit_Tools.PDFControl
                 }
             };
             menu.Items.Add(rotateLeftMenu);
-            if (BotaContainer.Child is CPDFBOTABarControl botaControl)
+
+            MenuItem rotateRightMenu = new MenuItem();
+            rotateRightMenu.Header = LanguageHelper.CommonManager.GetString("Menu_RotateRight");
+            rotateRightMenu.Click += (o, p) =>
             {
-                botaControl.ReplaceFunctionEnabled = false;
-            }
-            PDFGrid.Child = null;
-            BotaContainer.Child = null;
-            PropertyContainer.Child = null;
-            displaySettingsControl = null;
+                if (imageArea != null)
+                {
+                    imageArea.Rotate(90);
+                    pdfContentEditControl.RefreshThumb();
+                    UpdateImageArea(imageArea);
+                }
+            };
+            menu.Items.Add(rotateRightMenu);
+
+            MenuItem replaceMenu = new MenuItem();
+            replaceMenu.Header = LanguageHelper.CommonManager.GetString("Menu_Replace");
+            replaceMenu.Click += (o, p) =>
+            {
+                if (imageArea != null)
+                {
+                    OpenFileDialog openFileDialog = new OpenFileDialog();
+                    openFileDialog.Filter = "Image Files(*.jpg;*.jpeg;*.png;*.bmp)|*.jpg;*.jpeg;*.png;*.bmp;";
+                    if (openFileDialog.ShowDialog() == true)
+                    {
+                        //byte[] fileData = File.ReadAllBytes(openFileDialog.FileName);
+                        //Bitmap bitmap = new Bitmap(openFileDialog.FileName);
+                        //imageArea.ReplaceImageArea(imageArea.GetFrame(), fileData, bitmap.Width, bitmap.Height);
+                        imageArea.ReplaceImageArea(imageArea.GetFrame(), openFileDialog.FileName,string.Empty);
+                        pdfContentEditControl.RefreshThumb();
+                        UpdateImageArea(imageArea);
+                    }
+                }
+            };
+            menu.Items.Add(replaceMenu);
+
+            MenuItem exportMenu = new MenuItem();
+            exportMenu.Header = LanguageHelper.CommonManager.GetString("Menu_Export");
+            exportMenu.Click += (o, p) =>
+            {
+                if (PdfViewControl != null && PdfViewControl.PDFView != null)
+                {
+                    try
+                    {
+                        FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
+                        if (folderBrowserDialog.ShowDialog() == DialogResult.OK && imageArea != null)
+                        {
+                            string path = Path.GetTempPath();
+                            string uuid = Guid.NewGuid().ToString("N");
+                            string imagePath = Path.Combine(path, uuid + ".tmp");
+                            imageArea.ExtractImage(imagePath);
+
+                            Bitmap bitmapImage = new Bitmap(imagePath);
+                            string fileName = Path.Combine(folderBrowserDialog.SelectedPath, uuid + ".jpg");
+                            bitmapImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
+                            Process.Start("explorer", "/select,\"" + fileName + "\"");
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+
+                    }
+                }
+            };
+            menu.Items.Add(exportMenu);
+
+            MenuItem opacityMenu = new MenuItem();
+            opacityMenu.Header = LanguageHelper.CommonManager.GetString("Menu_Opacity");
+            menu.Items.Add(opacityMenu);
+
+            AppendOpacityMenu(opacityMenu, imageArea, CPDFEditType.EditImage);
+
+            MenuItem horizonMirror = new MenuItem();
+            horizonMirror.Header = LanguageHelper.CommonManager.GetString("Menu_HFlip");
+            horizonMirror.Click += (o, p) =>
+            {
+                imageArea?.HorizontalMirror();
+                pdfContentEditControl.RefreshThumb();
+                UpdateImageArea(imageArea);
+            };
+            menu.Items.Add(horizonMirror);
+
+            MenuItem verticalMirror = new MenuItem();
+            verticalMirror.Header = LanguageHelper.CommonManager.GetString("Menu_VFlip");
+            verticalMirror.Click += (o, p) =>
+            {
+                if (imageArea != null)
+                {
+                    imageArea?.VerticalMirror();
+                    pdfContentEditControl.RefreshThumb();
+                    UpdateImageArea(imageArea);
+                }
+            };
+            menu.Items.Add(verticalMirror);
+
+            MenuItem cropMenu = new MenuItem();
+            cropMenu.Header = LanguageHelper.CommonManager.GetString("Menu_Crop");
+            cropMenu.Click += (o, p) =>
+            {
+                if (imageArea != null)
+                {
+                    
+                }
+            };
+            menu.Items.Add(cropMenu);
+                
+            menu.Items.Add(new MenuItem() { Header = LanguageHelper.CommonManager.GetString("Menu_Copy"), Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
+            menu.Items.Add(new MenuItem() { Header = LanguageHelper.CommonManager.GetString("Menu_Cut"), Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
+            menu.Items.Add(new MenuItem() { Header = LanguageHelper.CommonManager.GetString("Menu_Delete"), Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
+            menu.Items.Add(new MenuItem() { Header = LanguageHelper.CommonManager.GetString("Menu_Paste"), Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
+            // if (editCommand.TextAreaCopied)
+            // {
+            //     menu.Items.Add(new MenuItem() { Header = LanguageHelper.CommonManager.GetString("Menu_MatchPaste"), Command = CustomCommands.PasteWithoutStyle, CommandTarget = (UIElement)sender });
+            // }
         }
 
         #region Property changed

+ 42 - 43
Demo/Examples/Compdfkit_Tools/Edit/PDFImageEdit/PDFImageEditControl/PDFImageEditControl.xaml.cs

@@ -189,6 +189,7 @@ namespace Compdfkit_Tools.Edit
                     SetImageThumb();
                     ToolView.UpdateRender(oldRect, imageArea);
                     editPage.EndEdit();
+                    RotationTxb.Text = imageArea.GetRotation().ToString();
                 }
             }
 
@@ -417,49 +418,6 @@ namespace Compdfkit_Tools.Edit
             ImasgeOpacitySlider.Value = transparency / 255D;
             OpacityTextBox.Text = string.Format("{0}%", (int)(Math.Round(ImasgeOpacitySlider.Value * 100)));
         }
-        
-        //private void SetAbsRotation(double absRotation, PDFEditEvent editEvent)
-        //{
-        //    absRotation -= editEvent.CurrentRotated;
-        //    if (absRotation != 0)
-        //    {
-        //        editEvent.Rotate = (int)absRotation;
-        //        editEvent.UpdatePDFEditByEventArgs();
-        //        SetImageThumb();
-        //    }
-        //}
-        
-        //private void SetAbsRotation(double absRotation, List<PDFEditEvent> editEvents)
-        //{
-        //    foreach (var editEvent in editEvents)
-        //    {
-        //        SetAbsRotation(absRotation, editEvent);
-        //    }
-        //}
-        
-        private void RotationTxb_LostFocus(object sender, RoutedEventArgs e)
-        {
-            if(!double.TryParse(RotationTxb.Text, out double rotation))
-            {
-                return;
-            }
-            //if(EditEvent!=null)
-            //{
-            //    SetAbsRotation(rotation, EditEvent);
-            //}
-            //else if(EditMultiEvents != null && EditMultiEvents.Count>0)
-            //{
-            //    SetAbsRotation(rotation, EditMultiEvents);
-            //}
-        }
-
-        private void RotationTxb_PreviewKeyDown(object sender, KeyEventArgs e)
-        {
-            if (e.Key == Key.Enter)
-            {
-                RotationTxb_LostFocus(null, null);
-            }
-        }
 
         private void GetImageArea(out CPDFEditImageArea imageArea, out CPDFPage pdfPage, out CPDFEditPage editPage)
         {
@@ -488,6 +446,47 @@ namespace Compdfkit_Tools.Edit
 
             }
         }
+        
+        private void SetAbsRotation(double absRotation)
+        {
+            GetImageArea(out CPDFEditImageArea imageArea, out CPDFPage pdfPage, out CPDFEditPage editPage);
+            if (imageArea != null)
+            {
+                int rotation = (int)absRotation - imageArea.GetRotation();
+                Rect oldRect = DataConversionForWPF.CRectConversionForRect(imageArea.GetFrame());
+                if (imageArea.Rotate(rotation))
+                {
+                    PDFEditHistory editHistory = new PDFEditHistory();
+                    editHistory.EditPage = editPage;
+                    if (pdfPage != null)
+                    {
+                        editHistory.PageIndex = pdfPage.PageIndex;
+                    }
+
+                    ToolView.GetCPDFViewer()?.UndoManager.AddHistory(editHistory);
+                    SetImageThumb();
+                    ToolView.UpdateRender(oldRect, imageArea);
+                    editPage.EndEdit();
+                }
+            }
+        }
+        
+        private void RotationTxb_LostFocus(object sender, RoutedEventArgs e)
+        {
+            if(!double.TryParse(RotationTxb.Text, out double rotation))
+            {
+                return;
+            }
+            SetAbsRotation(rotation);
+        }
+
+        private void RotationTxb_PreviewKeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.Key == Key.Enter)
+            {
+                RotationTxb_LostFocus(null, null);
+            }
+        }
 
     }
 }