Skip to content

Latest commit

 

History

History
79 lines (65 loc) · 2.54 KB

File metadata and controls

79 lines (65 loc) · 2.54 KB

Windows端图片预览优化

优化概述

优化了Windows端剪贴板历史记录中的图片预览功能,解决了之前图片显示为Base64文本的问题。

主要改动

1. 新增图片预览转换器

  • 文件: ClipSync.WPF/Converters/ImagePreviewConverter.cs
  • 功能: 将Base64编码的图片数据转换为WPF的BitmapImage对象
  • 特性:
    • 支持多值绑定(Content + Format)
    • 异常处理确保安全
    • 使用Freeze()提高性能

2. 更新历史记录视图

  • 文件: ClipSync.WPF/UI/Views/HistoryView.xaml
  • 改进:
    • 为图片类型添加了专门的缩略图显示区域(80x60像素)
    • 使用DataTrigger根据ContentType动态切换显示内容
    • 文本内容显示"Image (format)"而不是Base64字符串
    • 优化了ListView的虚拟化设置提升性能
    • 改进了空状态的自动显示/隐藏逻辑

3. 注册转换器

  • 文件: ClipSync.WPF/App.xaml
  • 改动: 添加了ImagePreviewConverter的资源引用

4. 完善复制功能

  • 文件: ClipSync.WPF/UI/ViewModels/HistoryViewModel.cs
  • 改进:
    • 支持图片类型的复制到剪贴板
    • 添加了异常处理
    • 正确处理Base64到BitmapImage的转换

技术细节

图片显示逻辑

<!-- 文本内容 -->
<DataTrigger Binding="{Binding ContentType}" Value="text">
    <Setter Property="Text" Value="{Binding Content}"/>
</DataTrigger>

<!-- 图片内容 -->
<DataTrigger Binding="{Binding ContentType}" Value="image">
    <Setter Property="Text" Value="️ Image ({Binding Format})"/>
</DataTrigger>

缩略图显示

  • 尺寸: 80x60像素
  • 填充方式: UniformToFill(保持比例并裁剪)
  • 圆角: 使用SmallRadius
  • 背景: ImageBrush绑定到转换器

性能优化

  • 启用ListView虚拟化
  • BitmapImage使用OnLoad缓存选项
  • 图片对象Freeze()避免跨线程访问问题

用户体验改进

  1. 视觉反馈: 图片现在以缩略图形式显示,直观清晰
  2. 信息展示: 显示图片格式而不是冗长的Base64文本
  3. 交互一致: 点击复制按钮可以正确复制图片到剪贴板
  4. 性能提升: 虚拟化确保大量历史记录时依然流畅

测试建议

  1. 复制不同类型的图片(PNG、JPG等)
  2. 验证缩略图正确显示
  3. 测试复制功能是否正常工作
  4. 检查大量历史记录时的滚动性能
  5. 验证空状态的正确显示

后续优化建议

  1. 添加图片点击放大预览功能
  2. 支持图片下载保存
  3. 优化大图加载性能(渐进式加载)
  4. 添加图片格式图标区分