feat(docstring):添加部分docstring (#376)

* feat(docstring):添加docstring

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>

* fix(docstring):修复部分docstring格式错误

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>

* fix(docstring):修复部分docstring

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>

* chore(Docstring):MW_* 前14

* chore(Docstring):MW_* part 2

* chore(Docstring):MW_* part 3

* chore:优化缩进

* fix: 修复数学计算中的潜在除零错误和数值稳定性问题

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>

* chore:删除Rebase时多余的OOBE函数

* chore: 更新代码注释和文档格式

修复XML文档注释中的格式问题,统一使用<c>和<see>标签
更新ConfigHelper类的预留说明,明确未来扩展用途
优化TimerDisplayDate_Elapsed方法的注释,说明UI异步更新机制
合并重复的注释摘要行,提高文档可读性
添加形状识别功能的64位进程限制说明
修正视频呈现器设备选择逻辑的文档说明

* chore(IPPTLinkManager): 更新TryEndSlideShow方法的XML注释格式

* chore: 修正代码注释中的术语和格式问题

更新多个文件中的XML注释,统一使用<see langword="..."/>标记代替<c>...</c>标记
规范术语使用(如"延迟初始化"代替"懒惰初始化")
修正注释中的格式错误和补充说明
调整代码区域的注释对齐格式

---------

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>
This commit is contained in:
doudou0720
2026-02-22 10:14:12 +08:00
committed by GitHub
parent 3e3db27296
commit 656863a7d0
48 changed files with 6220 additions and 192 deletions
+470 -34
View File
@@ -1,4 +1,4 @@
using Ink_Canvas.Helpers;
using Ink_Canvas.Helpers;
using Microsoft.Win32;
using System;
using System.Diagnostics;
@@ -19,12 +19,40 @@ namespace Ink_Canvas
{
public partial class MainWindow : Window
{
// 当前选中的可操作元素
/// <summary>
/// 当前选中的可操作元素
/// </summary>
private FrameworkElement currentSelectedElement;
/// <summary>
/// 是否正在拖动
/// </summary>
private bool isDragging;
/// <summary>
/// 拖动起始点
/// </summary>
private Point dragStartPoint;
#region Image
/// <summary>
/// 处理图片插入按钮点击事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 打开文件选择对话框,选择图片文件
/// - 创建并压缩图片
/// - 设置图片属性,避免被InkCanvas选择系统处理
/// - 初始化InkCanvas选择设置
/// - 添加图片到画布
/// - 等待图片加载完成后进行后续处理
/// - 初始化TransformGroup
/// - 居中缩放图片
/// - 绑定事件处理器
/// - 提交到时间机器历史记录
/// - 插入图片后切换到选择模式并刷新浮动栏高光显示
/// </remarks>
private async void BtnImageInsert_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
@@ -79,7 +107,15 @@ namespace Ink_Canvas
}
}
// 初始化元素的TransformGroup
/// <summary>
/// 初始化元素的TransformGroup
/// </summary>
/// <param name="element">要初始化的元素</param>
/// <remarks>
/// - 创建TransformGroup
/// - 添加ScaleTransform、TranslateTransform和RotateTransform
/// - 设置元素的RenderTransform
/// </remarks>
private void InitializeElementTransform(FrameworkElement element)
{
var transformGroup = new TransformGroup();
@@ -89,7 +125,17 @@ namespace Ink_Canvas
element.RenderTransform = transformGroup;
}
// 绑定元素事件处理器
/// <summary>
/// 绑定元素事件处理器
/// </summary>
/// <param name="element">要绑定事件的元素</param>
/// <remarks>
/// - 绑定鼠标事件(MouseLeftButtonDown、MouseLeftButtonUp、MouseMove、MouseWheel
/// - 启用触摸操作
/// - 绑定触摸事件(ManipulationDelta、ManipulationCompleted
/// - 设置光标为手形
/// - 禁用InkCanvas对图片的选择处理
/// </remarks>
private void BindElementEvents(FrameworkElement element)
{
// 鼠标事件
@@ -111,7 +157,19 @@ namespace Ink_Canvas
element.Focusable = false;
}
// 鼠标左键按下事件
/// <summary>
/// 处理元素鼠标左键按下事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查编辑模式是否为选择模式
/// - 取消之前选中的元素
/// - 选中当前元素
/// - 开始拖动
/// - 捕获鼠标
/// - 设置光标为全尺寸光标
/// </remarks>
private void Element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (sender is FrameworkElement element)
@@ -145,7 +203,16 @@ namespace Ink_Canvas
}
}
// 鼠标左键释放事件
/// <summary>
/// 处理元素鼠标左键释放事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 停止拖动
/// - 释放鼠标捕获
/// - 恢复光标为手形
/// </remarks>
private void Element_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (sender is FrameworkElement element)
@@ -158,7 +225,16 @@ namespace Ink_Canvas
}
}
// 触摸释放事件
/// <summary>
/// 处理元素触摸释放事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 停止拖动
/// - 释放触摸捕获
/// - 恢复光标为手形
/// </remarks>
private void Element_TouchUp(object sender, TouchEventArgs e)
{
if (sender is FrameworkElement element)
@@ -171,7 +247,19 @@ namespace Ink_Canvas
}
}
// 鼠标移动事件
/// <summary>
/// 处理元素鼠标移动事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查是否正在拖动且鼠标已捕获
/// - 获取当前鼠标位置
/// - 应用鼠标拖动变换
/// - 如果是图片元素,更新工具栏位置
/// - 如果是图片元素,更新选择点位置
/// - 更新拖动起始点
/// </remarks>
private void Element_MouseMove(object sender, MouseEventArgs e)
{
if (sender is FrameworkElement element && isDragging && element.IsMouseCaptured)
@@ -198,7 +286,16 @@ namespace Ink_Canvas
}
}
// 鼠标滚轮事件 - 缩放
/// <summary>
/// 处理元素鼠标滚轮事件 - 缩放
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 应用滚轮缩放变换
/// - 如果是图片元素,更新工具栏位置
/// - 如果是图片元素,更新选择点位置
/// </remarks>
private void Element_MouseWheel(object sender, MouseWheelEventArgs e)
{
if (sender is FrameworkElement element)
@@ -224,7 +321,19 @@ namespace Ink_Canvas
}
}
// 触摸按下事件
/// <summary>
/// 处理元素触摸按下事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查编辑模式是否为选择模式
/// - 取消之前选中的元素
/// - 选中当前元素
/// - 开始拖动
/// - 捕获触摸
/// - 设置光标为全尺寸光标
/// </remarks>
private void Element_TouchDown(object sender, TouchEventArgs e)
{
if (sender is FrameworkElement element)
@@ -258,7 +367,18 @@ namespace Ink_Canvas
}
}
// 触摸操作事件
/// <summary>
/// 处理元素触摸操作事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查是否是双指手势
/// - 双指手势时,让画布级别的手势处理
/// - 单指手势时,应用触摸拖动变换
/// - 如果是图片元素,更新工具栏位置
/// - 如果是图片元素,更新选择点位置
/// </remarks>
private void Element_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
if (sender is FrameworkElement element)
@@ -291,13 +411,30 @@ namespace Ink_Canvas
}
}
// 触摸操作完成事件
/// <summary>
/// 处理元素触摸操作完成事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 可以在这里添加操作完成后的处理逻辑
/// </remarks>
private void Element_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
{
// 可以在这里添加操作完成后的处理逻辑
}
// 应用平移变换
/// <summary>
/// 应用平移变换到元素
/// </summary>
/// <param name="element">要变换的元素</param>
/// <param name="deltaX">X轴偏移量</param>
/// <param name="deltaY">Y轴偏移量</param>
/// <remarks>
/// - 获取元素的TransformGroup
/// - 查找TranslateTransform
/// - 应用平移变换
/// </remarks>
private void ApplyTranslateTransform(FrameworkElement element, double deltaX, double deltaY)
{
if (element.RenderTransform is TransformGroup transformGroup)
@@ -311,7 +448,19 @@ namespace Ink_Canvas
}
}
// 应用缩放变换
/// <summary>
/// 应用缩放变换到元素
/// </summary>
/// <param name="element">要变换的元素</param>
/// <param name="scaleFactor">缩放因子</param>
/// <param name="center">缩放中心</param>
/// <remarks>
/// - 获取元素的TransformGroup
/// - 查找ScaleTransform
/// - 设置缩放中心
/// - 应用缩放
/// - 限制缩放范围(0.1到5.0
/// </remarks>
private void ApplyScaleTransform(FrameworkElement element, double scaleFactor, Point center)
{
if (element.RenderTransform is TransformGroup transformGroup)
@@ -334,7 +483,16 @@ namespace Ink_Canvas
}
}
// 应用旋转变换
/// <summary>
/// 应用旋转变换到元素
/// </summary>
/// <param name="element">要变换的元素</param>
/// <param name="angle">旋转角度</param>
/// <remarks>
/// - 获取元素的TransformGroup
/// - 查找RotateTransform
/// - 应用旋转变换
/// </remarks>
private void ApplyRotateTransform(FrameworkElement element, double angle)
{
if (element.RenderTransform is TransformGroup transformGroup)
@@ -347,7 +505,19 @@ namespace Ink_Canvas
}
}
// 选中元素
/// <summary>
/// 选中元素
/// </summary>
/// <param name="element">要选中的元素</param>
/// <remarks>
/// - 设置当前选中元素
/// - 根据元素类型显示不同的选择工具栏
/// - 如果是图片元素,显示图片选择工具栏和缩放选择点
/// - 如果不是图片元素,隐藏图片选择工具栏和缩放选择点
/// - 确保选择框不显示,避免蓝色边框
/// - 禁用InkCanvas的选择功能,去除控制点
/// - 保持选择模式,这样用户可以直接点击墨迹来选择
/// </remarks>
private void SelectElement(FrameworkElement element)
{
currentSelectedElement = element;
@@ -400,7 +570,16 @@ namespace Ink_Canvas
}
}
// 取消选中元素
/// <summary>
/// 取消选中元素
/// </summary>
/// <param name="element">要取消选中的元素</param>
/// <remarks>
/// - 隐藏图片选择工具栏
/// - 隐藏图片缩放选择点
/// - 确保选择框隐藏
/// - 确保InkCanvas处于选择模式,这样用户可以直接点击墨迹来选择
/// </remarks>
private void UnselectElement(FrameworkElement element)
{
// 去除选中效果
@@ -430,7 +609,16 @@ namespace Ink_Canvas
}
}
// 应用矩阵变换到元素
/// <summary>
/// 应用矩阵变换到元素
/// </summary>
/// <param name="element">要变换的元素</param>
/// <param name="matrix">变换矩阵</param>
/// <remarks>
/// - 获取元素的RenderTransform,如果不存在则创建新的TransformGroup
/// - 创建MatrixTransform
/// - 将MatrixTransform添加到TransformGroup
/// </remarks>
private void ApplyElementMatrixTransform(FrameworkElement element, Matrix matrix)
{
if (element.RenderTransform is TransformGroup transformGroup)
@@ -443,7 +631,19 @@ namespace Ink_Canvas
}
}
// 滚轮缩放的核心机制
/// <summary>
/// 处理滚轮缩放的核心机制
/// </summary>
/// <param name="element">要缩放的元素</param>
/// <param name="e">鼠标滚轮事件参数</param>
/// <remarks>
/// - 根据滚轮方向确定缩放比例(向上1.1倍,向下0.9倍)
/// - 计算选中元素的中心点作为缩放中心
/// - 创建 Matrix 对象并应用 ScaleAt 变换
/// - 对选中的图片元素应用矩阵变换
/// - 对选中的笔画应用 Transform 方法
/// - 包含异常处理
/// </remarks>
private void ApplyWheelScaleTransform(FrameworkElement element, MouseWheelEventArgs e)
{
try
@@ -476,7 +676,20 @@ namespace Ink_Canvas
}
}
// 矩阵变换的完整实现
/// <summary>
/// 矩阵变换的完整实现
/// </summary>
/// <param name="element">要变换的元素</param>
/// <param name="matrix">变换矩阵</param>
/// <param name="saveHistory">是否保存历史记录</param>
/// <remarks>
/// - 获取元素的 RenderTransform,如果不存在则创建新的 TransformGroup
/// - 保存初始变换状态用于历史记录
/// - 创建新的 TransformGroup 并添加 MatrixTransform
/// - 将新的变换组添加到现有的变换组中
/// - 如果启用了历史记录,提交变换历史
/// - 包含异常处理
/// </remarks>
private void ApplyMatrixTransformToElement(FrameworkElement element, Matrix matrix, bool saveHistory = true)
{
try
@@ -513,7 +726,20 @@ namespace Ink_Canvas
}
}
// 鼠标拖动的完整实现机制
/// <summary>
/// 鼠标拖动的完整实现机制
/// </summary>
/// <param name="element">要拖动的元素</param>
/// <param name="currentPoint">当前鼠标位置</param>
/// <param name="startPoint">起始鼠标位置</param>
/// <remarks>
/// - 计算鼠标移动的位移向量
/// - 创建 Matrix 对象并应用 Translate 变换
/// - 对选中的图片元素应用矩阵变换
/// - 对选中的笔画应用变换
/// - 更新选择框的位置(如果有选择框)
/// - 包含异常处理
/// </remarks>
private void ApplyMouseDragTransform(FrameworkElement element, Point currentPoint, Point startPoint)
{
try
@@ -546,7 +772,15 @@ namespace Ink_Canvas
}
}
// 更新选择框位置
/// <summary>
/// 更新选择框位置
/// </summary>
/// <param name="delta">位移向量</param>
/// <remarks>
/// - 更新选择框位置的逻辑
/// - 更新 BorderStrokeSelectionControl 的位置
/// - 包含异常处理
/// </remarks>
private void UpdateSelectionBorderPosition(Vector delta)
{
try
@@ -570,7 +804,17 @@ namespace Ink_Canvas
}
}
// 提交变换历史
/// <summary>
/// 提交变换历史
/// </summary>
/// <param name="element">变换的元素</param>
/// <param name="initialTransform">初始变换</param>
/// <param name="finalTransform">最终变换</param>
/// <remarks>
/// - 提交变换历史到时间机器的逻辑
/// - 记录变换前后的状态
/// - 包含异常处理
/// </remarks>
private void CommitTransformHistory(FrameworkElement element, TransformGroup initialTransform, TransformGroup finalTransform)
{
try
@@ -585,7 +829,21 @@ namespace Ink_Canvas
}
}
// 触摸拖动的完整实现
/// <summary>
/// 触摸拖动的完整实现
/// </summary>
/// <param name="element">要操作的元素</param>
/// <param name="e">操作事件参数</param>
/// <remarks>
/// - 支持单指拖动和多指手势
/// - 可以同时进行平移、旋转和缩放
/// - 通过 ManipulationDelta 获取手势变化信息
/// - 应用平移
/// - 支持两指缩放和旋转操作
/// - 应用变换到元素
/// - 应用变换到选中的笔画
/// - 包含异常处理
/// </remarks>
private void ApplyTouchManipulationTransform(FrameworkElement element, ManipulationDeltaEventArgs e)
{
try
@@ -643,6 +901,19 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 创建并压缩图片
/// </summary>
/// <param name="filePath">图片文件路径</param>
/// <returns>创建的Image对象</returns>
/// <remarks>
/// - 创建文件依赖目录
/// - 复制文件到依赖目录
/// - 创建BitmapImage
/// - 如果图片尺寸大于1920x1080且设置了压缩图片,则压缩图片
/// - 否则使用原始尺寸
/// - 返回创建的Image对象
/// </remarks>
private async Task<Image> CreateAndCompressImageAsync(string filePath)
{
string savePath = Path.Combine(Settings.Automation.AutoSavedStrokesLocation, "File Dependency");
@@ -697,6 +968,21 @@ namespace Ink_Canvas
#endregion
#region Media
/// <summary>
/// 处理媒体插入按钮点击事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 打开文件选择对话框,选择媒体文件
/// - 读取媒体文件字节
/// - 创建MediaElement
/// - 居中缩放MediaElement
/// - 设置位置并添加到画布
/// - 设置LoadedBehavior和UnloadedBehavior为Manual
/// - 媒体加载完成后播放并立即暂停
/// - 提交到时间机器历史记录
/// </remarks>
private async void BtnMediaInsert_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
@@ -732,6 +1018,20 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 创建MediaElement
/// </summary>
/// <param name="filePath">媒体文件路径</param>
/// <returns>创建的MediaElement对象</returns>
/// <remarks>
/// - 创建文件依赖目录
/// - 创建MediaElement
/// - 设置Source、名称、LoadedBehavior和UnloadedBehavior
/// - 设置宽度和高度
/// - 复制文件到依赖目录
/// - 更新Source为新文件路径
/// - 返回创建的MediaElement对象
/// </remarks>
private async Task<MediaElement> CreateMediaElementAsync(string filePath)
{
string savePath = Path.Combine(Settings.Automation.AutoSavedStrokesLocation, "File Dependency");
@@ -988,6 +1288,29 @@ namespace Ink_Canvas
#endregion
/// <summary>
/// 居中并缩放元素
/// </summary>
/// <param name="element">要居中缩放的元素</param>
/// <remarks>
/// - 确保元素已加载且有有效尺寸
/// - 如果元素尺寸无效,等待加载完成后再处理
/// - 获取画布的实际尺寸
/// - 如果画布尺寸为0,使用窗口尺寸作为备选
/// - 如果仍然为0,使用屏幕尺寸
/// - 计算最大允许尺寸(画布的70%)
/// - 获取元素的当前尺寸
/// - 计算缩放比例
/// - 如果元素本身比最大尺寸小,不进行缩放
/// - 计算新的尺寸
/// - 设置元素尺寸
/// - 计算居中位置
/// - 确保位置不为负数
/// - 设置位置
/// - 保持TransformGroup,不清除RenderTransform
/// - 只有在没有TransformGroup时才创建
/// - 包含异常处理
/// </remarks>
private void CenterAndScaleElement(FrameworkElement element)
{
try
@@ -1079,7 +1402,13 @@ namespace Ink_Canvas
}
}
// 初始化InkCanvas选择设置
/// <summary>
/// 初始化InkCanvas选择设置
/// </summary>
/// <remarks>
/// - 清除当前选择,避免显示控制点
/// - 设置编辑模式为非选择模式
/// </remarks>
private void InitializeInkCanvasSelectionSettings()
{
if (inkCanvas != null)
@@ -1091,7 +1420,17 @@ namespace Ink_Canvas
}
}
// 更新图片选择工具栏位置
/// <summary>
/// 更新图片选择工具栏位置
/// </summary>
/// <param name="element">图片元素</param>
/// <remarks>
/// - 获取元素的实际边界(考虑变换)
/// - 计算工具栏位置(显示在图片下方)
/// - 确保工具栏不超出画布边界
/// - 设置工具栏位置
/// - 包含异常处理
/// </remarks>
private void UpdateImageSelectionToolbarPosition(FrameworkElement element)
{
try
@@ -1121,7 +1460,22 @@ namespace Ink_Canvas
}
}
// 获取元素的实际边界(考虑变换)
/// <summary>
/// 获取元素的实际边界(考虑变换)
/// </summary>
/// <param name="element">要获取边界的元素</param>
/// <returns>元素的实际边界</returns>
/// <remarks>
/// - 获取元素的Left和Top位置
/// - 如果值为NaN,设为0
/// - 获取元素的宽度和高度
/// - 检查是否有RenderTransform
/// - 如果有变换,使用变换后的边界
/// - 变换失败时回退到简单计算
/// - 没有变换时直接使用位置和大小
/// - 包含异常处理
/// - 回退到基本计算
/// </remarks>
private Rect GetElementActualBounds(FrameworkElement element)
{
try
@@ -1170,7 +1524,20 @@ namespace Ink_Canvas
#region Image Selection Toolbar Event Handlers
// 图片克隆功能
/// <summary>
/// 处理图片克隆功能
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查当前选中元素是否为图片
/// - 创建克隆图片
/// - 添加到画布
/// - 初始化变换
/// - 绑定事件
/// - 记录历史
/// - 包含异常处理
/// </remarks>
private void BorderImageClone_MouseUp(object sender, MouseButtonEventArgs e)
{
try
@@ -1201,7 +1568,22 @@ namespace Ink_Canvas
}
}
// 图片克隆到新页面
/// <summary>
/// 处理图片克隆到新页面功能
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查当前选中元素是否为图片
/// - 创建新页面
/// - 创建克隆图片
/// - 设置图片属性,避免被InkCanvas选择系统处理
/// - 初始化变换
/// - 绑定事件
/// - 添加到新页面的画布
/// - 记录历史
/// - 包含异常处理
/// </remarks>
private void BorderImageCloneToNewBoard_MouseUp(object sender, MouseButtonEventArgs e)
{
try
@@ -1242,7 +1624,17 @@ namespace Ink_Canvas
}
}
// 图片左旋转
/// <summary>
/// 处理图片左旋转功能
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查当前是否有选中元素
/// - 应用旋转变换(向左旋转45度)
/// - 如果是图片元素,更新工具栏位置
/// - 包含异常处理
/// </remarks>
private void BorderImageRotateLeft_MouseUp(object sender, MouseButtonEventArgs e)
{
try
@@ -1266,7 +1658,17 @@ namespace Ink_Canvas
}
}
// 图片右旋转
/// <summary>
/// 处理图片右旋转功能
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查当前是否有选中元素
/// - 应用旋转变换(向右旋转45度)
/// - 如果是图片元素,更新工具栏位置
/// - 包含异常处理
/// </remarks>
private void BorderImageRotateRight_MouseUp(object sender, MouseButtonEventArgs e)
{
try
@@ -1290,7 +1692,18 @@ namespace Ink_Canvas
}
}
// 图片缩放减小
/// <summary>
/// 处理图片缩放减小功能
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查当前是否有选中元素
/// - 计算元素中心点
/// - 应用缩放变换(缩小到0.9倍)
/// - 如果是图片元素,更新工具栏位置
/// - 包含异常处理
/// </remarks>
private void GridImageScaleDecrease_MouseUp(object sender, MouseButtonEventArgs e)
{
try
@@ -1315,7 +1728,18 @@ namespace Ink_Canvas
}
}
// 图片缩放增大
/// <summary>
/// 处理图片缩放增大功能
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查当前是否有选中元素
/// - 计算元素中心点
/// - 应用缩放变换(放大到1.1倍)
/// - 如果是图片元素,更新工具栏位置
/// - 包含异常处理
/// </remarks>
private void GridImageScaleIncrease_MouseUp(object sender, MouseButtonEventArgs e)
{
try
@@ -1340,7 +1764,19 @@ namespace Ink_Canvas
}
}
// 图片删除
/// <summary>
/// 处理图片删除功能
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
/// <remarks>
/// - 检查当前是否有选中元素
/// - 保存删除前的编辑模式
/// - 记录删除历史
/// - 从画布中移除
/// - 清除选中状态
/// - 包含异常处理
/// </remarks>
private void BorderImageDelete_MouseUp(object sender, MouseButtonEventArgs e)
{
try