Browse Source

注释-右键菜单 复制图片

OYXH\oyxh 1 year ago
parent
commit
75a7010a88

+ 1 - 1
PDF Office/PDF Master.csproj.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
-    <ProjectView>ProjectFiles</ProjectView>
+    <ProjectView>ShowAllFiles</ProjectView>
   </PropertyGroup>
 </Project>

+ 42 - 1
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Layout.cs

@@ -11,6 +11,7 @@ using Prism.Regions;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -18,6 +19,7 @@ using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
 using System.Windows.Media;
+using System.Windows.Media.Imaging;
 using System.Windows.Shapes;
 using static Dropbox.Api.TeamLog.AdminAlertSeverityEnum;
 using MenuItem = System.Windows.Controls.MenuItem;
@@ -311,6 +313,39 @@ namespace PDF_Master.ViewModels.Tools
             }
         }
 
+        private void CopyMenu_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                Dictionary<int, List<System.Drawing.Bitmap>> imageDict = PDFViewer?.GetSelectedImages();
+
+                if (imageDict != null && imageDict.Count > 0)
+                {
+                    foreach (int pageIndex in imageDict.Keys)
+                    {
+                        List<System.Drawing.Bitmap> imageList = imageDict[pageIndex];
+                        foreach (System.Drawing.Bitmap image in imageList)
+                        {
+                            MemoryStream ms = new MemoryStream();
+                            image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
+                            BitmapImage imageData = new BitmapImage();
+                            imageData.BeginInit();
+                            imageData.StreamSource = ms;
+                            imageData.CacheOption = BitmapCacheOption.OnLoad;
+                            imageData.EndInit();
+                            imageData.Freeze();
+                            Clipboard.SetImage(imageData);
+                            break;
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
         /// <summary>
         /// 选择文本或者图像的右键菜单
         /// </summary>
@@ -325,11 +360,17 @@ namespace PDF_Master.ViewModels.Tools
             MenuItem menuItem = new MenuItem();
             menuItem = new MenuItem();
             menuItem.CommandTarget = (UIElement)sender;
-            menuItem.Command = ApplicationCommands.Copy;
+            
             menuItem.Header = T_RightMenuSelectionCopy;
             if (annotCommand.CommandTarget == TargetType.ImageSelection && PDFViewer.GetSelectImageCount() > 0)
             {
                 menuItem.IsEnabled = true;
+                menuItem.Click -= CopyMenu_Click;
+                menuItem.Click += CopyMenu_Click;
+            }
+            else
+            {
+                menuItem.Command = ApplicationCommands.Copy;
             }
 
             popMenu.Items.Add(menuItem);

+ 2 - 2
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs

@@ -1073,9 +1073,9 @@ namespace PDF_Master.ViewModels.Tools
 
                         PDFViewer.SetToolParam(annotArgs);
                     }
-                    else if (annot is FreeTextAnnotArgs)
+                    else if (annot is FreeTextAnnotArgs freeText)
                     {
-                        var freeText = annot as FreeTextAnnotArgs;
+                        //var freeText = annot as FreeTextAnnotArgs;
                         Settings.Default.AppProperties.Annotate.TextAnnoteColor = freeText.FontColor;
                         Settings.Default.AppProperties.Annotate.TextFontFamaily = freeText.FontFamily.ToString();
                         Settings.Default.AppProperties.Annotate.TextAlign = freeText.Align;