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
+194 -14
View File
@@ -41,7 +41,18 @@ namespace Ink_Canvas
public partial class MainWindow : Window
{
// 截图并插入到画布
/// <summary>
/// 截图并插入到画布
/// </summary>
/// <returns>异步任务</returns>
/// <remarks>
/// 该方法会:
/// 1. 隐藏主窗口以避免截图包含窗口本身
/// 2. 启动区域选择截图
/// 3. 恢复窗口显示
/// 4. 处理截图结果并插入到画布
/// 5. 支持摄像头截图和区域截图
/// </remarks>
private async Task CaptureScreenshotAndInsert()
{
try
@@ -118,7 +129,18 @@ namespace Ink_Canvas
}
}
// 直接全屏截图并插入到画布
/// <summary>
/// 直接全屏截图并插入到画布
/// </summary>
/// <returns>异步任务</returns>
/// <remarks>
/// 该方法会:
/// 1. 隐藏主窗口以避免截图包含窗口本身
/// 2. 获取虚拟屏幕边界
/// 3. 截取全屏
/// 4. 将截图转换为WPF Image并插入到画布
/// 5. 恢复窗口显示
/// </remarks>
private async Task CaptureFullScreenAndInsert()
{
try
@@ -158,7 +180,16 @@ namespace Ink_Canvas
}
}
// 显示截图区域选择器
/// <summary>
/// 显示截图区域选择器
/// </summary>
/// <returns>截图结果,包含区域、路径和摄像头截图信息</returns>
/// <remarks>
/// 该方法会:
/// 1. 显示截图选择器窗口
/// 2. 获取用户选择的区域或摄像头截图
/// 3. 返回截图结果
/// </remarks>
private async Task<ScreenshotResult?> ShowScreenshotSelector()
{
ScreenshotResult? result = null;
@@ -206,7 +237,19 @@ namespace Ink_Canvas
return result;
}
// 截取指定屏幕区域
/// <summary>
/// 截取指定屏幕区域
/// </summary>
/// <param name="area">要截取的屏幕区域</param>
/// <returns>截取的位图</returns>
/// <remarks>
/// 该方法会:
/// 1. 确保区域在有效范围内
/// 2. 调整区域边界,确保不超出屏幕范围
/// 3. 创建支持透明度的位图
/// 4. 设置高质量渲染
/// 5. 截取屏幕区域
/// </remarks>
private Bitmap CaptureScreenArea(Rectangle area)
{
try
@@ -246,7 +289,25 @@ namespace Ink_Canvas
}
}
// 将截图插入到画布
/// <summary>
/// 将截图插入到画布
/// </summary>
/// <param name="bitmap">要插入的位图</param>
/// <returns>异步任务</returns>
/// <remarks>
/// 该方法会:
/// 1. 验证位图有效性
/// 2. 将Bitmap转换为WPF BitmapSource
/// 3. 创建WPF Image控件
/// 4. 生成唯一名称
/// 5. 初始化TransformGroup
/// 6. 设置截图属性,避免被InkCanvas选择系统处理
/// 7. 初始化InkCanvas选择设置
/// 8. 等待图片加载完成后进行居中处理
/// 9. 添加到画布
/// 10. 提交历史记录
/// 11. 插入图片后切换到选择模式并刷新浮动栏高光显示
/// </remarks>
private async Task InsertScreenshotToCanvas(Bitmap bitmap)
{
try
@@ -325,7 +386,23 @@ namespace Ink_Canvas
}
}
// 将BitmapSource插入到画布(用于摄像头截图)
/// <summary>
/// 将BitmapSource插入到画布(用于摄像头截图)
/// </summary>
/// <param name="bitmapSource">要插入的BitmapSource</param>
/// <returns>异步任务</returns>
/// <remarks>
/// 该方法会:
/// 1. 创建WPF Image控件
/// 2. 生成唯一名称
/// 3. 初始化TransformGroup
/// 4. 设置截图属性,避免被InkCanvas选择系统处理
/// 5. 初始化InkCanvas选择设置
/// 6. 等待图片加载完成后进行居中处理
/// 7. 添加到画布
/// 8. 提交历史记录
/// 9. 插入图片后切换到选择模式并刷新浮动栏高光显示
/// </remarks>
private async Task InsertBitmapSourceToCanvas(BitmapSource bitmapSource)
{
try
@@ -384,7 +461,13 @@ namespace Ink_Canvas
}
}
// 初始化截图的TransformGroup
/// <summary>
/// 初始化截图的TransformGroup
/// </summary>
/// <param name="image">要初始化的Image控件</param>
/// <remarks>
/// 该方法会为截图创建一个包含缩放、平移和旋转变换的TransformGroup。
/// </remarks>
private void InitializeScreenshotTransform(Image image)
{
var transformGroup = new TransformGroup();
@@ -394,7 +477,17 @@ namespace Ink_Canvas
image.RenderTransform = transformGroup;
}
// 绑定截图事件处理器
/// <summary>
/// 绑定截图事件处理器
/// </summary>
/// <param name="image">要绑定事件的Image控件</param>
/// <remarks>
/// 该方法会为截图绑定以下事件:
/// 1. 鼠标事件(按下、释放、移动、滚轮)
/// 2. 触摸事件(按下、释放、操作)
/// 3. 设置光标为手形
/// 4. 禁用InkCanvas对截图的选择处理
/// </remarks>
private void BindScreenshotEvents(Image image)
{
// 鼠标事件
@@ -418,7 +511,27 @@ namespace Ink_Canvas
image.Focusable = false;
}
// 专门为截图优化的居中缩放方法
/// <summary>
/// 专门为截图优化的居中缩放方法
/// </summary>
/// <param name="image">要居中缩放的Image控件</param>
/// <remarks>
/// 该方法会:
/// 1. 确保图片已加载
/// 2. 获取画布的实际尺寸
/// 3. 如果画布尺寸为0,使用窗口尺寸作为备选
/// 4. 如果仍然为0,使用屏幕尺寸
/// 5. 计算最大允许尺寸(画布的80%)
/// 6. 获取图片的原始尺寸
/// 7. 计算缩放比例
/// 8. 如果图片本身比最大尺寸小,不进行缩放
/// 9. 计算新的尺寸
/// 10. 设置图片尺寸
/// 11. 计算居中位置
/// 12. 确保位置不为负数
/// 13. 设置位置
/// 14. 保持滚轮缩放和拖动功能
/// </remarks>
private void CenterAndScaleScreenshot(Image image)
{
try
@@ -502,7 +615,27 @@ namespace Ink_Canvas
}
}
// 应用形状遮罩到截图
/// <summary>
/// 应用形状遮罩到截图
/// </summary>
/// <param name="bitmap">要应用遮罩的位图</param>
/// <param name="path">遮罩路径</param>
/// <param name="area">截图区域</param>
/// <returns>应用遮罩后的位图</returns>
/// <remarks>
/// 该方法会:
/// 1. 验证路径参数
/// 2. 获取DPI缩放比例
/// 3. 创建结果位图,确保支持透明度
/// 4. 首先将整个位图设置为透明
/// 5. 创建路径
/// 6. 转换WPF坐标到GDI+坐标,考虑DPI缩放和屏幕偏移
/// 7. 添加路径
/// 8. 验证路径是否有效
/// 9. 设置裁剪区域为路径内部
/// 10. 在裁剪区域内绘制原始图像
/// 11. 重置裁剪区域,确保后续操作不受影响
/// </remarks>
private Bitmap ApplyShapeMask(Bitmap bitmap, List<Point> path, Rectangle area)
{
try
@@ -588,7 +721,21 @@ namespace Ink_Canvas
}
}
// 将System.Drawing.Bitmap转换为WPF BitmapSource
/// <summary>
/// 将System.Drawing.Bitmap转换为WPF BitmapSource
/// </summary>
/// <param name="bitmap">要转换的位图</param>
/// <returns>转换后的BitmapSource</returns>
/// <remarks>
/// 该方法会:
/// 1. 验证位图有效性
/// 2. 验证位图尺寸
/// 3. 使用更安全的方法转换位图
/// 4. 根据像素格式选择合适的WPF像素格式
/// 5. 创建BitmapSource
/// 6. 冻结BitmapSource以提高性能
/// 7. 如果转换失败,尝试使用备用方法
/// </remarks>
private BitmapSource ConvertBitmapToBitmapSource(Bitmap bitmap)
{
try
@@ -673,7 +820,19 @@ namespace Ink_Canvas
}
}
// 备用的位图转换方法(使用内存流)
/// <summary>
/// 备用的位图转换方法(使用内存流)
/// </summary>
/// <param name="bitmap">要转换的位图</param>
/// <returns>转换后的BitmapSource</returns>
/// <remarks>
/// 该方法会:
/// 1. 验证位图有效性
/// 2. 创建一个新的位图,确保格式正确
/// 3. 在内存流中保存为PNG格式
/// 4. 创建BitmapImage并加载内存流中的数据
/// 5. 冻结BitmapImage以提高性能
/// </remarks>
private BitmapSource ConvertBitmapToBitmapSourceFallback(Bitmap bitmap)
{
try
@@ -713,7 +872,21 @@ namespace Ink_Canvas
}
}
// 最简单的位图转换方法
/// <summary>
/// 最简单的位图转换方法
/// </summary>
/// <param name="bitmap">要转换的位图</param>
/// <returns>转换后的BitmapSource</returns>
/// <remarks>
/// 该方法会:
/// 1. 验证位图有效性
/// 2. 使用最基础的方法:直接保存为PNG然后加载
/// 3. 创建临时文件
/// 4. 将位图保存为PNG格式到临时文件
/// 5. 创建BitmapImage并加载临时文件
/// 6. 冻结BitmapImage以提高性能
/// 7. 清理临时文件
/// </remarks>
private BitmapSource ConvertBitmapToBitmapSourceSimple(Bitmap bitmap)
{
try
@@ -760,7 +933,14 @@ namespace Ink_Canvas
}
}
// 获取DPI缩放比例
/// <summary>
/// 获取DPI缩放比例
/// </summary>
/// <returns>DPI缩放比例</returns>
/// <remarks>
/// 该方法会从当前窗口的PresentationSource获取DPI缩放比例。
/// 如果无法获取,则返回默认值1.0。
/// </remarks>
private double GetDpiScale()
{
var source = PresentationSource.FromVisual(this);