# screenShot **Repository Path**: ksdhy/screen-shot ## Basic Information - **Project Name**: screenShot - **Description**: 基于Electron的桌面截屏工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-19 - **Last Updated**: 2024-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于 NodeJs Electron 的桌面截屏软件 ### 项目说明 > 调用 nodejs 获取当前桌面截图 > 传输给渲染进程,绘制到 canvas,捕捉用户框选操作 > 获取用户框选坐标、框选大小(注意结合 window.devicePixelRatio 以获取到真实屏幕像素位置) > 把框选位置传输到主进程,处理图像裁剪,把裁剪后的图像发送到另一个渲染进程,显示裁剪后的部分 ### 优化项: | 问题复现 | 问题原因 | 优化方案 | | ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | 快捷键影响其他应用 | 快捷键占用其他应用,导致其他应用无法正常使用 | 1. 部分功能采用动态注册的方式(例如退出固定屏幕),在窗口获取焦点后注册快捷键,失去焦点取消快捷键
2. 采用用户配置的形式注册快捷键,当用户发现与其他应用冲突时自行修改 | | 截屏后出现短暂白屏 | 每次动态注册快捷键时都读取了本地存储,由于是同步读取,会阻塞主进程 | 变更为添加一层内存缓存,应用初始化读取一次,以后每次在内存中找,再通过设置页面设置时,同步更新缓存和本地存储 | | 截屏后画布清空延迟 | 浏览器存在节能优化,在页面不可见时,requestAnimationFrame 会停止运行,canvas 也会停止绘制 | 关闭浏览器节能优化,窗口添加以下配置:
`js
webPreferences: {
backgroundThrottling: false,
}
` |