PCP( pointchangepaint ),截图工具,目前仅支持window和单个显示器。
基于electron平台开发,主进程是nodejs,页面是主要是vuejs;程序主要有两个窗口。一个负责启动截图的窗口和列表渲染,另一个负责用户操作的窗口。整个程序主要有三大功能:截图、取色、绘画。
依赖 | 依赖介绍 |
---|---|
electron | 集成Chromium 和 Node.js桌面应用框架,就是把网页嵌套进桌面应用 |
vue3 | 操纵数据,数据驱动视图 |
pinia | 持久化数据和状态管理 |
vite | 快速构建程序 |
Naive UI | 提供多个组件,简易开发 |
# 开发
$ npm run dev
# 调试
$ npm run build
# windows 打包
$ npm run e-build
目标是:点击按钮或者按快捷键,进入截图,用户操作,完成(保存截图,复制到剪贴板),列表展示。
主要分三步:1、进入截图,2、用户操作,3、完成后的数据处理。
-
进入截图。类似微信截图,点击按钮,全屏覆盖截图区域。微信截图几乎是秒响应进入截图区域。本应用0.0.0利用多窗口原理,开始就设定一个隐藏窗口,待用户按下按钮就显示;缺点是:窗口显示时有一瞬间的闪烁,不太好。
-
用户操作。设定满屏canvas或svg作画。比较难处理是作画不能超出规定截图区域;待改进。
-
完成后的数据处理。完成后可能要分享、复制、保存。分享是开启一个局域网,在局域网内可分享,有局限性。复制时利用window命令行去复制,这个比较万能,但失去了跨平台的优势。保存是分为指定目录保存和默认目录保存。
- 此外,取色器和绘画是根据截图的流程去设计,取色器利用实验性的 EyeDropper 的api,这个有局限性:只能在用户操作(例如按钮点击)的响应中调用 EyeDropper.prototype.open() 方法。 至于绘画就是canvas绘画,可以说是没有截图的绘画。
对于一个截图工具还差得很远。正常截图工具2~20m,占用内存少。本应用打包后100m左右太大,对于一个功能来说占用的内存也太大。开发过程没有什么难度,只是一些细节上的处理是有差距;每个过程的方案很多,要一一尝试得到最优结果,后续有待改进。