# legend_shot **Repository Path**: legendqi/legend_shot ## Basic Information - **Project Name**: legend_shot - **Description**: rust实现截图 - **Primary Language**: Rust - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-11-12 - **Last Updated**: 2026-04-01 ## Categories & Tags **Categories**: image-processing **Tags**: None ## README # Legend_Shot Legend_Shot 是一个截图工具,它允许用户捕获屏幕、进行注释和编辑截图。该工具具有直观的用户界面,提供多种功能如选择区域、绘制形状、添加文本以及保存或复制截图。 ## 设计和实现说明 该截图应用使用跨平台截图库xcap实现,egui跨平台UI库进行标注,arboard操作系统剪贴板。
Windows和Linux下,启动时全屏启动,全屏灰色半透明蒙层,鼠标框选,画框选和移出半透明蒙层。
MacOS下,启动时全屏启动,因显示机制不同,直接覆盖半透明蒙层会全屏黑色,先截一张全屏的图,显示全屏图,再全屏灰色半透明蒙层,鼠标框选,画框选和移出半透明蒙层
画笔,矩形框选,移动,马赛克,序号,箭头都是利用egui画布功能实现
复制是复制到系统剪贴板,同时为了适配当前tauri应用无法复制图片到输入框,保存一份到系统临时目录中(Windows,Linux,MacOS各部相同)返回给vue,vue拿到图片发送,然后删除临时文件。后期输入框支持了可删除保存逻辑,复制完成后退出
保存是调起系统文件管理对话框,默认名字为时间戳screenshot_%Y-%m-%d_%H-%M-%S.png,可选择保存位置。保存完成后退出
## 功能特性 - **屏幕捕捉**:能够捕捉整个屏幕或选定区域。 - **注释工具**:提供多种注释工具,包括笔刷、矩形、移动、马赛克等。 - **文本输入**:允许在截图上添加自定义文本。 - **保存与复制**:可以将截图保存到本地或复制到剪贴板。 ## 构建说明 要构建此项目,请运行以下命令之一: - `./build.sh setup_targets`:设置构建目标。 - `./build.sh build_linux_amd64`:为 Linux AMD64 构建。 - `./build.sh build_linux_arm64`:为 Linux ARM64 构建。 - `./build.sh build_windows`:为 Windows 构建。 - `./build.sh build_macos_arm64`:为 macOS ARM64 构建。 - `./build.sh build_macos_intel`:为 macOS Intel 构建。 - `./build.sh build_all`:为所有平台构建。 ## 功能说明 - app_draw.rs 是监控鼠标和键盘的输入,同时绘制相关内容 - app_main.rs 是主函数,启动程序 - app_utils.rs 是一些工具函数 - app_handle.rs 是处理截图结果处理,包括复制到系统剪切板和保存本地 - app_toolbar.rs 是标注工具定义,可根据需要注释相关代码 ```rust self.purple_icon_button(ui, Tool::MoveBox, ctx, MOVE_ICON, "move"); //移动 self.purple_icon_button(ui, Tool::Pen, ctx, PEN_ICON, "pen"); //画笔 self.purple_icon_button(ui, Tool::Rectangle, ctx, RECTANGLE_ICON, "rectangle"); //矩形 self.purple_icon_button(ui, Tool::Arrow, ctx, ARROW_ICON, "arrow"); //箭头 self.purple_icon_button(ui, Tool::Text, ctx, WORD_ICON, "word"); //文字 self.purple_icon_button(ui, Tool::Mosaic, ctx, MOSAIC_ICON, "mosaic"); //马赛克 self.purple_icon_button(ui, Tool::Number, ctx, NUMBER_ICON, "number"); //序号 self.custom_color_picker(ui, ctx); //颜色选择 ``` ## 使用方法 启动应用后,您可以使用提供的工具进行截图和注释。使用工具栏中的按钮来选择不同的注释工具,添加文本,或者保存和复制截图。 ## 贡献 欢迎贡献!如果您有兴趣改进 Legend_Shot,请查阅源代码并提交 Pull Request。 ## 许可证 此项目使用 MIT 许可证。详情请查看仓库中的 LICENSE 文件。