# 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,
}
` |