improve:截图及浮动栏及代码优化
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern;
|
||||
using System;
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
@@ -8,6 +6,8 @@ using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
@@ -263,10 +263,10 @@ namespace Ink_Canvas
|
||||
{
|
||||
var dops = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
|
||||
var dopsc = dops.ToCharArray();
|
||||
if (dopsc[0] == '2' && isDisplayingOrHidingBlackboard == false) AnimationsHelper.ShowWithFadeIn(LeftBottomPanelForPPTNavigation);
|
||||
if (dopsc[1] == '2' && isDisplayingOrHidingBlackboard == false) AnimationsHelper.ShowWithFadeIn(RightBottomPanelForPPTNavigation);
|
||||
if (dopsc[2] == '2' && isDisplayingOrHidingBlackboard == false) AnimationsHelper.ShowWithFadeIn(LeftSidePanelForPPTNavigation);
|
||||
if (dopsc[3] == '2' && isDisplayingOrHidingBlackboard == false) AnimationsHelper.ShowWithFadeIn(RightSidePanelForPPTNavigation);
|
||||
if (dopsc[0] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(LeftBottomPanelForPPTNavigation);
|
||||
if (dopsc[1] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(RightBottomPanelForPPTNavigation);
|
||||
if (dopsc[2] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(LeftSidePanelForPPTNavigation);
|
||||
if (dopsc[3] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(RightSidePanelForPPTNavigation);
|
||||
}
|
||||
|
||||
if (BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using IWshRuntimeLibrary;
|
||||
using System;
|
||||
using System;
|
||||
using System.Windows;
|
||||
using IWshRuntimeLibrary;
|
||||
using Application = System.Windows.Forms.Application;
|
||||
using File = System.IO.File;
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using iNKORE.UI.WPF.Modern;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using iNKORE.UI.WPF.Modern;
|
||||
using Microsoft.Win32;
|
||||
using Application = System.Windows.Application;
|
||||
|
||||
namespace Ink_Canvas
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
@@ -7,6 +6,7 @@ using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Media;
|
||||
using Ink_Canvas.Helpers;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
@@ -7,6 +6,7 @@ using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using Ink_Canvas.Helpers;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
@@ -766,7 +766,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
PenIcon_Click(null, null);
|
||||
SymbolIconDelete_MouseUp(null, null);
|
||||
if (Settings.Canvas.ClearCanvasAndClearTimeMachine == false) timeMachine.ClearStrokeHistory();
|
||||
if (!Settings.Canvas.ClearCanvasAndClearTimeMachine) timeMachine.ClearStrokeHistory();
|
||||
|
||||
// 根据设置决定是否清空图片
|
||||
if (Settings.Canvas.ClearCanvasAlsoClearImages)
|
||||
|
||||
@@ -1,19 +1,26 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Threading;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Clipboard = System.Windows.Clipboard;
|
||||
using ContextMenu = System.Windows.Controls.ContextMenu;
|
||||
using Cursors = System.Windows.Input.Cursors;
|
||||
using MenuItem = System.Windows.Controls.MenuItem;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
private bool isClipboardMonitoringEnabled = false;
|
||||
private BitmapSource lastClipboardImage = null;
|
||||
private bool isClipboardMonitoringEnabled;
|
||||
private BitmapSource lastClipboardImage;
|
||||
|
||||
// 初始化剪贴板监控
|
||||
private void InitializeClipboardMonitoring()
|
||||
@@ -92,7 +99,7 @@ namespace Ink_Canvas
|
||||
// 显示菜单
|
||||
contextMenu.IsOpen = true;
|
||||
contextMenu.PlacementTarget = inkCanvas;
|
||||
contextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.MousePoint;
|
||||
contextMenu.Placement = PlacementMode.MousePoint;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -124,7 +131,7 @@ namespace Ink_Canvas
|
||||
Source = clipboardImage,
|
||||
Width = clipboardImage.PixelWidth,
|
||||
Height = clipboardImage.PixelHeight,
|
||||
Stretch = System.Windows.Media.Stretch.Fill
|
||||
Stretch = Stretch.Fill
|
||||
};
|
||||
|
||||
// 生成唯一名称
|
||||
@@ -192,7 +199,7 @@ namespace Ink_Canvas
|
||||
// 设置光标
|
||||
elementForEvents.Cursor = Cursors.Hand;
|
||||
}
|
||||
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||
}), DispatcherPriority.Loaded);
|
||||
};
|
||||
|
||||
// 提交到历史记录
|
||||
@@ -272,13 +279,13 @@ namespace Ink_Canvas
|
||||
{
|
||||
public static event Action ClipboardUpdate;
|
||||
|
||||
private static System.Windows.Forms.Timer clipboardTimer;
|
||||
private static Timer clipboardTimer;
|
||||
private static string lastClipboardText = "";
|
||||
private static bool lastHadImage = false;
|
||||
private static bool lastHadImage;
|
||||
|
||||
static ClipboardNotification()
|
||||
{
|
||||
clipboardTimer = new System.Windows.Forms.Timer();
|
||||
clipboardTimer = new Timer();
|
||||
clipboardTimer.Interval = 500; // 每500ms检查一次
|
||||
clipboardTimer.Tick += CheckClipboard;
|
||||
clipboardTimer.Start();
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
@@ -9,6 +8,7 @@ using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Media.Imaging;
|
||||
using Ink_Canvas.Helpers;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Threading;
|
||||
using Ink_Canvas.Helpers;
|
||||
using System.Windows.Input;
|
||||
using System.Linq;
|
||||
using System.Windows.Ink;
|
||||
using Microsoft.Win32;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
@@ -17,7 +19,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
// 当前选中的可操作元素
|
||||
private FrameworkElement currentSelectedElement;
|
||||
private bool isDragging = false;
|
||||
private bool isDragging;
|
||||
private Point dragStartPoint;
|
||||
|
||||
#region Image
|
||||
@@ -62,7 +64,7 @@ namespace Ink_Canvas
|
||||
BindElementEvents(image);
|
||||
|
||||
LogHelper.WriteLogToFile($"图片插入完成: {image.Name}");
|
||||
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||
}), DispatcherPriority.Loaded);
|
||||
};
|
||||
|
||||
timeMachine.CommitElementInsertHistory(image);
|
||||
@@ -396,7 +398,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
|
||||
// 保存初始变换状态用于历史记录
|
||||
var initialTransform = transformGroup.Clone() as TransformGroup;
|
||||
var initialTransform = transformGroup.Clone();
|
||||
|
||||
// 创建新的 TransformGroup 并添加 MatrixTransform
|
||||
var newTransformGroup = new TransformGroup();
|
||||
@@ -719,7 +721,7 @@ namespace Ink_Canvas
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 记录错误但不中断程序
|
||||
System.Diagnostics.Debug.WriteLine($"旋转图片时发生错误: {ex.Message}");
|
||||
Debug.WriteLine($"旋转图片时发生错误: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -740,7 +742,7 @@ namespace Ink_Canvas
|
||||
Width = image.Width,
|
||||
Height = image.Height,
|
||||
Stretch = image.Stretch,
|
||||
RenderTransform = image.RenderTransform?.Clone() as Transform
|
||||
RenderTransform = image.RenderTransform?.Clone()
|
||||
};
|
||||
|
||||
// 设置位置,稍微偏移以避免重叠
|
||||
@@ -790,7 +792,7 @@ namespace Ink_Canvas
|
||||
Width = image.Width,
|
||||
Height = image.Height,
|
||||
Stretch = image.Stretch,
|
||||
RenderTransform = image.RenderTransform?.Clone() as Transform
|
||||
RenderTransform = image.RenderTransform?.Clone()
|
||||
};
|
||||
|
||||
// 设置位置,稍微偏移以避免重叠
|
||||
@@ -809,7 +811,7 @@ namespace Ink_Canvas
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 记录错误但不中断程序
|
||||
System.Diagnostics.Debug.WriteLine($"克隆图片到新页面时发生错误: {ex.Message}");
|
||||
Debug.WriteLine($"克隆图片到新页面时发生错误: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -862,7 +864,7 @@ namespace Ink_Canvas
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 记录错误但不中断程序
|
||||
System.Diagnostics.Debug.WriteLine($"缩放图片时发生错误: {ex.Message}");
|
||||
Debug.WriteLine($"缩放图片时发生错误: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -888,7 +890,7 @@ namespace Ink_Canvas
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 记录错误但不中断程序
|
||||
System.Diagnostics.Debug.WriteLine($"删除图片时发生错误: {ex.Message}");
|
||||
Debug.WriteLine($"删除图片时发生错误: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -907,7 +909,7 @@ namespace Ink_Canvas
|
||||
Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
CenterAndScaleElement(element);
|
||||
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||
}), DispatcherPriority.Loaded);
|
||||
};
|
||||
return;
|
||||
}
|
||||
@@ -919,8 +921,8 @@ namespace Ink_Canvas
|
||||
// 如果画布尺寸为0,使用窗口尺寸作为备选
|
||||
if (canvasWidth <= 0 || canvasHeight <= 0)
|
||||
{
|
||||
canvasWidth = this.ActualWidth;
|
||||
canvasHeight = this.ActualHeight;
|
||||
canvasWidth = ActualWidth;
|
||||
canvasHeight = ActualHeight;
|
||||
}
|
||||
|
||||
// 如果仍然为0,使用屏幕尺寸
|
||||
@@ -1058,11 +1060,9 @@ namespace Ink_Canvas
|
||||
return new Rect(left, top, width, height);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 没有变换时直接使用位置和大小
|
||||
return new Rect(left, top, width, height);
|
||||
}
|
||||
|
||||
// 没有变换时直接使用位置和大小
|
||||
return new Rect(left, top, width, height);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -1165,7 +1165,7 @@ namespace Ink_Canvas
|
||||
UpdateImageSelectionToolbarPosition(currentSelectedElement);
|
||||
}
|
||||
|
||||
LogHelper.WriteLogToFile($"图片左旋转完成");
|
||||
LogHelper.WriteLogToFile("图片左旋转完成");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -1189,7 +1189,7 @@ namespace Ink_Canvas
|
||||
UpdateImageSelectionToolbarPosition(currentSelectedElement);
|
||||
}
|
||||
|
||||
LogHelper.WriteLogToFile($"图片右旋转完成");
|
||||
LogHelper.WriteLogToFile("图片右旋转完成");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -1214,7 +1214,7 @@ namespace Ink_Canvas
|
||||
UpdateImageSelectionToolbarPosition(currentSelectedElement);
|
||||
}
|
||||
|
||||
LogHelper.WriteLogToFile($"图片缩放减小完成");
|
||||
LogHelper.WriteLogToFile("图片缩放减小完成");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -1239,7 +1239,7 @@ namespace Ink_Canvas
|
||||
UpdateImageSelectionToolbarPosition(currentSelectedElement);
|
||||
}
|
||||
|
||||
LogHelper.WriteLogToFile($"图片缩放增大完成");
|
||||
LogHelper.WriteLogToFile("图片缩放增大完成");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
@@ -7,6 +6,7 @@ using System.Windows.Controls;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using Ink_Canvas.Helpers;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
@@ -13,6 +11,8 @@ using System.Windows.Interop;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Media.Imaging;
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern;
|
||||
using Application = System.Windows.Application;
|
||||
using Button = System.Windows.Controls.Button;
|
||||
using Cursors = System.Windows.Input.Cursors;
|
||||
@@ -641,6 +641,9 @@ namespace Ink_Canvas
|
||||
ICCWaterMarkWhite.Visibility = Visibility.Visible;
|
||||
ICCWaterMarkDark.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
// 新增:确保在白板模式下基础浮动栏被隐藏
|
||||
ViewboxFloatingBar.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -651,10 +654,10 @@ namespace Ink_Canvas
|
||||
{
|
||||
var dops = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
|
||||
var dopsc = dops.ToCharArray();
|
||||
if (dopsc[0] == '2' && isDisplayingOrHidingBlackboard == false) AnimationsHelper.ShowWithFadeIn(LeftBottomPanelForPPTNavigation);
|
||||
if (dopsc[1] == '2' && isDisplayingOrHidingBlackboard == false) AnimationsHelper.ShowWithFadeIn(RightBottomPanelForPPTNavigation);
|
||||
if (dopsc[2] == '2' && isDisplayingOrHidingBlackboard == false) AnimationsHelper.ShowWithFadeIn(LeftSidePanelForPPTNavigation);
|
||||
if (dopsc[3] == '2' && isDisplayingOrHidingBlackboard == false) AnimationsHelper.ShowWithFadeIn(RightSidePanelForPPTNavigation);
|
||||
if (dopsc[0] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(LeftBottomPanelForPPTNavigation);
|
||||
if (dopsc[1] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(RightBottomPanelForPPTNavigation);
|
||||
if (dopsc[2] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(LeftSidePanelForPPTNavigation);
|
||||
if (dopsc[3] == '2' && !isDisplayingOrHidingBlackboard) AnimationsHelper.ShowWithFadeIn(RightSidePanelForPPTNavigation);
|
||||
}
|
||||
// 修复PPT放映时点击白板按钮后翻页按钮不显示的问题
|
||||
if (BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
@@ -693,6 +696,9 @@ namespace Ink_Canvas
|
||||
BlackBoardWaterMark.Visibility = Visibility.Collapsed;
|
||||
ICCWaterMarkDark.Visibility = Visibility.Collapsed;
|
||||
ICCWaterMarkWhite.Visibility = Visibility.Collapsed;
|
||||
|
||||
// 新增:退出白板模式时恢复基础浮动栏的显示
|
||||
ViewboxFloatingBar.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
BtnSwitch_Click(BtnSwitch, null);
|
||||
@@ -1295,7 +1301,7 @@ namespace Ink_Canvas
|
||||
if (MarginFromEdge == 60) MarginFromEdge = 55;
|
||||
await Dispatcher.InvokeAsync(() =>
|
||||
{
|
||||
if (Topmost == false)
|
||||
if (!Topmost)
|
||||
MarginFromEdge = -60;
|
||||
else
|
||||
ViewboxFloatingBar.Visibility = Visibility.Visible;
|
||||
@@ -1337,7 +1343,7 @@ namespace Ink_Canvas
|
||||
|
||||
pos.X = (screenWidth - floatingBarWidth) / 2;
|
||||
|
||||
if (PosXCaculatedWithTaskbarHeight == false)
|
||||
if (!PosXCaculatedWithTaskbarHeight)
|
||||
{
|
||||
// 如果任务栏高度为0(隐藏状态),则使用固定边距
|
||||
if (toolbarHeight == 0)
|
||||
@@ -1405,7 +1411,7 @@ namespace Ink_Canvas
|
||||
await Dispatcher.InvokeAsync(() =>
|
||||
{
|
||||
ViewboxFloatingBar.Margin = new Thickness(pos.X, pos.Y, -2000, -200);
|
||||
if (Topmost == false) ViewboxFloatingBar.Visibility = Visibility.Hidden;
|
||||
if (!Topmost) ViewboxFloatingBar.Visibility = Visibility.Hidden;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2560,6 +2566,9 @@ namespace Ink_Canvas
|
||||
ClearStrokes(true);
|
||||
RestoreStrokes(true);
|
||||
|
||||
// 新增:在屏幕模式下恢复基础浮动栏的显示
|
||||
ViewboxFloatingBar.Visibility = Visibility.Visible;
|
||||
|
||||
if (BtnSwitchTheme.Content.ToString() == "浅色")
|
||||
{
|
||||
BtnSwitch.Content = "黑板";
|
||||
@@ -2598,6 +2607,9 @@ namespace Ink_Canvas
|
||||
// PPT墨迹和白板墨迹应该分别管理,不应该互相影响
|
||||
RestoreStrokes();
|
||||
|
||||
// 新增:在白板模式下隐藏基础浮动栏
|
||||
ViewboxFloatingBar.Visibility = Visibility.Collapsed;
|
||||
|
||||
BtnSwitch.Content = "屏幕";
|
||||
if (BtnSwitchTheme.Content.ToString() == "浅色")
|
||||
{
|
||||
@@ -2737,11 +2749,23 @@ namespace Ink_Canvas
|
||||
StackPanelCanvasControls.Visibility = Visibility.Collapsed;
|
||||
CheckEnableTwoFingerGestureBtnVisibility(false);
|
||||
HideSubPanels("cursor");
|
||||
|
||||
// 新增:在屏幕模式下显示基础浮动栏
|
||||
if (currentMode == 0)
|
||||
{
|
||||
ViewboxFloatingBar.Visibility = Visibility.Visible;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AnimationsHelper.ShowWithSlideFromLeftAndFade(StackPanelCanvasControls);
|
||||
CheckEnableTwoFingerGestureBtnVisibility(true);
|
||||
|
||||
// 新增:在批注模式下显示基础浮动栏
|
||||
if (currentMode == 0)
|
||||
{
|
||||
ViewboxFloatingBar.Visibility = Visibility.Visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3224,26 +3248,27 @@ namespace Ink_Canvas
|
||||
{
|
||||
return "select";
|
||||
}
|
||||
else if (inkCanvas.EditingMode == InkCanvasEditingMode.Ink)
|
||||
|
||||
if (inkCanvas.EditingMode == InkCanvasEditingMode.Ink)
|
||||
{
|
||||
// 检查是否是荧光笔模式
|
||||
if (drawingAttributes != null && drawingAttributes.IsHighlighter)
|
||||
{
|
||||
return "color";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "pen";
|
||||
}
|
||||
|
||||
return "pen";
|
||||
}
|
||||
else if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint)
|
||||
|
||||
if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint)
|
||||
{
|
||||
// 检查是面积擦还是线擦
|
||||
if (Eraser_Icon != null && Eraser_Icon.Visibility == Visibility.Visible)
|
||||
{
|
||||
return "eraser";
|
||||
}
|
||||
else if (EraserByStrokes_Icon != null && EraserByStrokes_Icon.Visibility == Visibility.Visible)
|
||||
|
||||
if (EraserByStrokes_Icon != null && EraserByStrokes_Icon.Visibility == Visibility.Visible)
|
||||
{
|
||||
return "eraserByStrokes";
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
@@ -11,8 +10,14 @@ using System.Windows.Controls;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Threading;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Application = System.Windows.Application;
|
||||
using Color = System.Drawing.Color;
|
||||
using Cursors = System.Windows.Input.Cursors;
|
||||
using Image = System.Windows.Controls.Image;
|
||||
using PixelFormat = System.Drawing.Imaging.PixelFormat;
|
||||
using Point = System.Windows.Point;
|
||||
using Size = System.Drawing.Size;
|
||||
|
||||
namespace Ink_Canvas
|
||||
@@ -21,9 +26,9 @@ namespace Ink_Canvas
|
||||
public struct ScreenshotResult
|
||||
{
|
||||
public Rectangle Area;
|
||||
public List<System.Windows.Point> Path;
|
||||
public List<Point> Path;
|
||||
|
||||
public ScreenshotResult(Rectangle area, List<System.Windows.Point> path = null)
|
||||
public ScreenshotResult(Rectangle area, List<Point> path = null)
|
||||
{
|
||||
Area = area;
|
||||
Path = path;
|
||||
@@ -172,7 +177,7 @@ namespace Ink_Canvas
|
||||
var bitmapSource = ConvertBitmapToBitmapSource(bitmap);
|
||||
|
||||
// 创建WPF Image控件
|
||||
var image = new System.Windows.Controls.Image
|
||||
var image = new Image
|
||||
{
|
||||
Source = bitmapSource,
|
||||
Stretch = Stretch.Uniform
|
||||
@@ -202,7 +207,7 @@ namespace Ink_Canvas
|
||||
CenterAndScaleScreenshot(image);
|
||||
// 绑定事件处理器
|
||||
BindScreenshotEvents(image);
|
||||
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||
}), DispatcherPriority.Loaded);
|
||||
};
|
||||
|
||||
// 添加到画布
|
||||
@@ -221,7 +226,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
|
||||
// 初始化截图的TransformGroup
|
||||
private void InitializeScreenshotTransform(System.Windows.Controls.Image image)
|
||||
private void InitializeScreenshotTransform(Image image)
|
||||
{
|
||||
var transformGroup = new TransformGroup();
|
||||
transformGroup.Children.Add(new ScaleTransform(1, 1));
|
||||
@@ -231,7 +236,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
|
||||
// 绑定截图事件处理器
|
||||
private void BindScreenshotEvents(System.Windows.Controls.Image image)
|
||||
private void BindScreenshotEvents(Image image)
|
||||
{
|
||||
// 鼠标事件
|
||||
image.MouseLeftButtonDown += Element_MouseLeftButtonDown;
|
||||
@@ -245,7 +250,7 @@ namespace Ink_Canvas
|
||||
image.ManipulationCompleted += Element_ManipulationCompleted;
|
||||
|
||||
// 设置光标
|
||||
image.Cursor = System.Windows.Input.Cursors.Hand;
|
||||
image.Cursor = Cursors.Hand;
|
||||
|
||||
// 禁用InkCanvas对截图的选择处理
|
||||
image.IsHitTestVisible = true;
|
||||
@@ -253,7 +258,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
|
||||
// 专门为截图优化的居中缩放方法
|
||||
private void CenterAndScaleScreenshot(System.Windows.Controls.Image image)
|
||||
private void CenterAndScaleScreenshot(Image image)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -270,8 +275,8 @@ namespace Ink_Canvas
|
||||
// 如果画布尺寸为0,使用窗口尺寸作为备选
|
||||
if (canvasWidth <= 0 || canvasHeight <= 0)
|
||||
{
|
||||
canvasWidth = this.ActualWidth;
|
||||
canvasHeight = this.ActualHeight;
|
||||
canvasWidth = ActualWidth;
|
||||
canvasHeight = ActualHeight;
|
||||
}
|
||||
|
||||
// 如果仍然为0,使用屏幕尺寸
|
||||
@@ -338,7 +343,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
|
||||
// 应用形状遮罩到截图
|
||||
private Bitmap ApplyShapeMask(Bitmap bitmap, List<System.Windows.Point> path, Rectangle area)
|
||||
private Bitmap ApplyShapeMask(Bitmap bitmap, List<Point> path, Rectangle area)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -360,7 +365,7 @@ namespace Ink_Canvas
|
||||
using (var resultGraphics = Graphics.FromImage(resultBitmap))
|
||||
{
|
||||
// 清除位图,设置为完全透明
|
||||
resultGraphics.Clear(System.Drawing.Color.Transparent);
|
||||
resultGraphics.Clear(Color.Transparent);
|
||||
|
||||
// 设置高质量渲染
|
||||
resultGraphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows;
|
||||
using Ink_Canvas.Helpers;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern;
|
||||
using Microsoft.Office.Core;
|
||||
using Microsoft.Office.Interop.PowerPoint;
|
||||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography;
|
||||
@@ -12,6 +8,10 @@ using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Threading;
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern;
|
||||
using Microsoft.Office.Core;
|
||||
using Microsoft.Office.Interop.PowerPoint;
|
||||
using Application = System.Windows.Application;
|
||||
using File = System.IO.File;
|
||||
using MessageBox = System.Windows.MessageBox;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using Ink_Canvas.Helpers;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using Color = System.Drawing.Color;
|
||||
using File = System.IO.File;
|
||||
using Image = System.Windows.Controls.Image;
|
||||
using OpenFileDialog = Microsoft.Win32.OpenFileDialog;
|
||||
|
||||
namespace Ink_Canvas
|
||||
@@ -150,7 +157,7 @@ namespace Ink_Canvas
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowNotification("墨迹保存失败");
|
||||
LogHelper.WriteLogToFile("墨迹保存失败 | " + ex.ToString(), LogHelper.LogType.Error);
|
||||
LogHelper.WriteLogToFile("墨迹保存失败 | " + ex, LogHelper.LogType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,7 +198,7 @@ namespace Ink_Canvas
|
||||
|
||||
// 保存元数据信息
|
||||
string metadataFile = Path.Combine(tempDir, "metadata.txt");
|
||||
using (var writer = new StreamWriter(metadataFile, false, System.Text.Encoding.UTF8))
|
||||
using (var writer = new StreamWriter(metadataFile, false, Encoding.UTF8))
|
||||
{
|
||||
writer.WriteLine($"保存时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
|
||||
writer.WriteLine($"总页数: {allPageStrokes.Count}");
|
||||
@@ -219,7 +226,7 @@ namespace Ink_Canvas
|
||||
File.Delete(zipFileName);
|
||||
|
||||
// 使用System.IO.Compression.FileSystem来创建ZIP
|
||||
System.IO.Compression.ZipFile.CreateFromDirectory(tempDir, zipFileName);
|
||||
ZipFile.CreateFromDirectory(tempDir, zipFileName);
|
||||
|
||||
if (newNotice) ShowNotification($"多页面墨迹成功保存至压缩包 {zipFileName}");
|
||||
}
|
||||
@@ -233,13 +240,13 @@ namespace Ink_Canvas
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"清理临时目录失败: {ex.ToString()}", LogHelper.LogType.Warning);
|
||||
LogHelper.WriteLogToFile($"清理临时目录失败: {ex}", LogHelper.LogType.Warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"保存多页面墨迹压缩包失败: {ex.ToString()}", LogHelper.LogType.Error);
|
||||
LogHelper.WriteLogToFile($"保存多页面墨迹压缩包失败: {ex}", LogHelper.LogType.Error);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
@@ -250,16 +257,16 @@ namespace Ink_Canvas
|
||||
private void SaveSinglePageStrokesAsImage(string savePathWithName, bool newNotice)
|
||||
{
|
||||
// 全页面保存模式 - 保存整个墨迹页面的图像
|
||||
var bitmap = new System.Drawing.Bitmap(
|
||||
(int)System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width,
|
||||
(int)System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
|
||||
var bitmap = new Bitmap(
|
||||
Screen.PrimaryScreen.Bounds.Width,
|
||||
Screen.PrimaryScreen.Bounds.Height);
|
||||
|
||||
using (var g = System.Drawing.Graphics.FromImage(bitmap))
|
||||
using (var g = Graphics.FromImage(bitmap))
|
||||
{
|
||||
// 创建黑色或透明背景
|
||||
System.Drawing.Color bgColor = Settings.Canvas.UsingWhiteboard
|
||||
? System.Drawing.Color.White
|
||||
: System.Drawing.Color.FromArgb(22, 41, 36); // 黑板背景色
|
||||
Color bgColor = Settings.Canvas.UsingWhiteboard
|
||||
? Color.White
|
||||
: Color.FromArgb(22, 41, 36); // 黑板背景色
|
||||
g.Clear(bgColor);
|
||||
|
||||
// 将InkCanvas墨迹渲染到Visual
|
||||
@@ -287,7 +294,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
encoder.Save(ms);
|
||||
ms.Seek(0, SeekOrigin.Begin);
|
||||
var imgBitmap = new System.Drawing.Bitmap(ms);
|
||||
var imgBitmap = new Bitmap(ms);
|
||||
|
||||
// 将生成的墨迹图像绘制到屏幕截图上
|
||||
// 居中绘制,确保墨迹位于屏幕中央
|
||||
@@ -297,7 +304,7 @@ namespace Ink_Canvas
|
||||
|
||||
// 保存为PNG
|
||||
string imagePathWithName = Path.ChangeExtension(savePathWithName, "png");
|
||||
bitmap.Save(imagePathWithName, System.Drawing.Imaging.ImageFormat.Png);
|
||||
bitmap.Save(imagePathWithName, ImageFormat.Png);
|
||||
|
||||
// 仍然保存墨迹文件以兼容旧版本
|
||||
var fs = new FileStream(savePathWithName, FileMode.Create);
|
||||
@@ -337,7 +344,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"保存页面图像失败: {ex.ToString()}", LogHelper.LogType.Error);
|
||||
LogHelper.WriteLogToFile($"保存页面图像失败: {ex}", LogHelper.LogType.Error);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
@@ -376,7 +383,7 @@ namespace Ink_Canvas
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowNotification("墨迹打开失败");
|
||||
LogHelper.WriteLogToFile($"墨迹打开失败: {ex.ToString()}", LogHelper.LogType.Error);
|
||||
LogHelper.WriteLogToFile($"墨迹打开失败: {ex}", LogHelper.LogType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -394,7 +401,7 @@ namespace Ink_Canvas
|
||||
try
|
||||
{
|
||||
// 解压ZIP文件
|
||||
System.IO.Compression.ZipFile.ExtractToDirectory(zipFilePath, tempDir);
|
||||
ZipFile.ExtractToDirectory(zipFilePath, tempDir);
|
||||
|
||||
// 读取元数据文件
|
||||
string metadataFile = Path.Combine(tempDir, "metadata.txt");
|
||||
@@ -447,13 +454,13 @@ namespace Ink_Canvas
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"清理临时目录失败: {ex.ToString()}", LogHelper.LogType.Warning);
|
||||
LogHelper.WriteLogToFile($"清理临时目录失败: {ex}", LogHelper.LogType.Warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"打开ICC压缩包失败: {ex.ToString()}", LogHelper.LogType.Error);
|
||||
LogHelper.WriteLogToFile($"打开ICC压缩包失败: {ex}", LogHelper.LogType.Error);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
@@ -465,7 +472,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
var metadata = new Dictionary<string, string>();
|
||||
|
||||
using (var reader = new StreamReader(metadataPath, System.Text.Encoding.UTF8))
|
||||
using (var reader = new StreamReader(metadataPath, Encoding.UTF8))
|
||||
{
|
||||
string line;
|
||||
while ((line = reader.ReadLine()) != null)
|
||||
@@ -556,7 +563,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"恢复PPT墨迹失败: {ex.ToString()}", LogHelper.LogType.Error);
|
||||
LogHelper.WriteLogToFile($"恢复PPT墨迹失败: {ex}", LogHelper.LogType.Error);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
@@ -609,7 +616,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
// 创建历史记录
|
||||
var history = new TimeMachineHistory(strokes, TimeMachineHistoryType.UserInput, false);
|
||||
TimeMachineHistories[pageNumber] = new TimeMachineHistory[] { history };
|
||||
TimeMachineHistories[pageNumber] = new[] { history };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -628,7 +635,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"恢复白板墨迹失败: {ex.ToString()}", LogHelper.LogType.Error);
|
||||
LogHelper.WriteLogToFile($"恢复白板墨迹失败: {ex}", LogHelper.LogType.Error);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
@@ -42,10 +43,10 @@ namespace Ink_Canvas
|
||||
using (var memoryGraphics = Graphics.FromImage(bitmap))
|
||||
{
|
||||
// 设置高质量渲染
|
||||
memoryGraphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
||||
memoryGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
||||
memoryGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||
memoryGraphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
|
||||
memoryGraphics.CompositingQuality = CompositingQuality.HighQuality;
|
||||
memoryGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||
memoryGraphics.SmoothingMode = SmoothingMode.HighQuality;
|
||||
memoryGraphics.CompositingMode = CompositingMode.SourceOver;
|
||||
|
||||
memoryGraphics.CopyFromScreen(rc.X, rc.Y, 0, 0, rc.Size, CopyPixelOperation.SourceCopy);
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
using iNKORE.UI.WPF.Modern.Controls;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using iNKORE.UI.WPF.Modern.Controls;
|
||||
using Point = System.Windows.Point;
|
||||
using System.Linq;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
@@ -308,7 +308,7 @@ namespace Ink_Canvas
|
||||
|
||||
// 检查是否有图片元素被选中
|
||||
var selectedElements = inkCanvas.GetSelectedElements();
|
||||
bool hasImageElement = selectedElements.Any(element => element is System.Windows.Controls.Image);
|
||||
bool hasImageElement = selectedElements.Any(element => element is Image);
|
||||
|
||||
// 如果有图片元素被选中,不显示选择框
|
||||
if (hasImageElement)
|
||||
@@ -551,11 +551,9 @@ namespace Ink_Canvas
|
||||
return new Rect(left, top, width, height);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 没有变换时直接使用位置和大小
|
||||
return new Rect(left, top, width, height);
|
||||
}
|
||||
|
||||
// 没有变换时直接使用位置和大小
|
||||
return new Rect(left, top, width, height);
|
||||
}
|
||||
|
||||
return new Rect(0, 0, 0, 0);
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
using Hardcodet.Wpf.TaskbarNotification;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using OSVersionExtension;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
@@ -13,6 +9,11 @@ using System.Windows.Input;
|
||||
using System.Windows.Interop;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Threading;
|
||||
using Hardcodet.Wpf.TaskbarNotification;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using OSVersionExtension;
|
||||
using Application = System.Windows.Application;
|
||||
using CheckBox = System.Windows.Controls.CheckBox;
|
||||
using ComboBox = System.Windows.Controls.ComboBox;
|
||||
@@ -2709,7 +2710,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
LogHelper.WriteLogToFile($"重新计算高光位置和浮动栏位置失败: {ex.Message}", LogHelper.LogType.Error);
|
||||
}
|
||||
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||
}), DispatcherPriority.Loaded);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using Hardcodet.Wpf.TaskbarNotification;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using OSVersionExtension;
|
||||
using System;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
@@ -10,6 +6,10 @@ using System.Windows.Ink;
|
||||
using System.Windows.Interop;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using Hardcodet.Wpf.TaskbarNotification;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using OSVersionExtension;
|
||||
using File = System.IO.File;
|
||||
using OperatingSystem = OSVersionExtension.OperatingSystem;
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern.Controls;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
@@ -10,6 +8,8 @@ using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern.Controls;
|
||||
using MessageBox = System.Windows.MessageBox;
|
||||
using Point = System.Windows.Point;
|
||||
|
||||
@@ -499,20 +499,18 @@ namespace Ink_Canvas
|
||||
catch { }
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
||||
// 其他情况正常删除临时笔画
|
||||
try
|
||||
{
|
||||
// 其他情况正常删除临时笔画
|
||||
try
|
||||
{
|
||||
inkCanvas.Strokes.Remove(lastTempStroke);
|
||||
inkCanvas.Strokes.Remove(lastTempStrokeCollection);
|
||||
}
|
||||
catch
|
||||
{
|
||||
Trace.WriteLine("lastTempStrokeCollection failed.");
|
||||
}
|
||||
return;
|
||||
inkCanvas.Strokes.Remove(lastTempStroke);
|
||||
inkCanvas.Strokes.Remove(lastTempStrokeCollection);
|
||||
}
|
||||
catch
|
||||
{
|
||||
Trace.WriteLine("lastTempStrokeCollection failed.");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// 修复:双曲线绘制时,第二笔应该基于第一笔的起点,而不是触摸实时位置
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
@@ -9,6 +8,7 @@ using System.Windows.Controls;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Point = System.Windows.Point;
|
||||
|
||||
namespace Ink_Canvas
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Windows;
|
||||
@@ -7,6 +6,7 @@ using System.Windows.Controls;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using Ink_Canvas.Helpers;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
@@ -12,6 +11,7 @@ using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Ink_Canvas.Helpers;
|
||||
|
||||
namespace Ink_Canvas
|
||||
{
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -8,6 +7,8 @@ using System.Windows.Controls;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Threading;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Point = System.Windows.Point;
|
||||
|
||||
namespace Ink_Canvas
|
||||
@@ -398,10 +399,10 @@ namespace Ink_Canvas
|
||||
private InkCanvasEditingMode palmEraserLastEditingMode = InkCanvasEditingMode.Ink;
|
||||
private bool palmEraserLastIsHighlighter;
|
||||
private bool palmEraserWasEnabledBeforeMultiTouch;
|
||||
private bool palmEraserTouchDownHandled = false; // 新增:标记手掌擦触摸按下是否已处理
|
||||
private bool palmEraserTouchDownHandled; // 新增:标记手掌擦触摸按下是否已处理
|
||||
private DateTime palmEraserActivationTime; // 新增:记录手掌擦激活时间
|
||||
private const int PALM_ERASER_TIMEOUT_MS = 3000; // 修改:减少手掌擦超时时间(3秒)
|
||||
private System.Windows.Threading.DispatcherTimer palmEraserRecoveryTimer; // 新增:手掌擦恢复定时器
|
||||
private DispatcherTimer palmEraserRecoveryTimer; // 新增:手掌擦恢复定时器
|
||||
private HashSet<int> palmEraserTouchIds = new HashSet<int>(); // 新增:记录参与手掌擦的触摸点ID
|
||||
|
||||
private void inkCanvas_PreviewTouchDown(object sender, TouchEventArgs e)
|
||||
@@ -983,7 +984,7 @@ namespace Ink_Canvas
|
||||
{
|
||||
if (palmEraserRecoveryTimer == null)
|
||||
{
|
||||
palmEraserRecoveryTimer = new System.Windows.Threading.DispatcherTimer();
|
||||
palmEraserRecoveryTimer = new DispatcherTimer();
|
||||
palmEraserRecoveryTimer.Interval = TimeSpan.FromMilliseconds(1000); // 每秒检查一次
|
||||
palmEraserRecoveryTimer.Tick += PalmEraserRecoveryTimer_Tick;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
using Hardcodet.Wpf.TaskbarNotification;
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern.Controls;
|
||||
using System;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Interop;
|
||||
using Hardcodet.Wpf.TaskbarNotification;
|
||||
using Ink_Canvas.Helpers;
|
||||
using iNKORE.UI.WPF.Modern.Controls;
|
||||
using Application = System.Windows.Application;
|
||||
using ContextMenu = System.Windows.Controls.ContextMenu;
|
||||
using MenuItem = System.Windows.Controls.MenuItem;
|
||||
|
||||
Reference in New Issue
Block a user