diff --git a/README.zh-CN.md b/README.zh-CN.md index 05a78133..2f7f29a0 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -19,7 +19,9 @@ ## 📖 简介 -> pear-rec(梨子 rec) 是一个跨平台的截图、录屏、录音、录像、录制(动图)gif、查看图片、查看视频、查看音频和修改图片的软件。 +> pear-rec 是一款功能强大的截屏、录屏和录音软件,适用于多个平台和各种使用场景。它提供了简单易用的界面和丰富的功能,使用户能够轻松记录屏幕活动、录制音频和截取屏幕截图。无论是在教育、工作还是娱乐中,pear-rec都能为用户提供便捷和高效的录制工具。 +> +> pear-rec(梨子 rec) 是一个跨平台的截图、录屏、录音、录像、录制(动图)gif、查看图片、查看视频、查看音频和修改图片的软件,目前提供了 Windows 、Linux 和 macOS [免费下载](https://github.com/027xiguapi/pear-rec/releases)。 > > 更多功能和 api 可以查看[官网(https://027xiguapi.github.io/pear-rec)](https://027xiguapi.github.io/pear-rec) 或 [https://xiguapi027.gitee.io/pear-rec](https://xiguapi027.gitee.io/pear-rec) @@ -152,8 +154,6 @@ pnpm run clear | --- | --- | --- | --- | | 链接 | [下载](https://github.com/027xiguapi/pear-rec/releases) | [下载](https://github.com/027xiguapi/pear-rec/releases) | [下载](https://github.com/027xiguapi/pear-rec/releases) | -国内可以用 [GitHub Proxy](https://ghproxy.com/) 加速下载 - ## 👨‍👨‍👦‍👦 反馈和交流 我们推荐使用 [issue](https://github.com/027xiguapi/pear-rec/issues) 列表进行最直接有效的反馈,也可以下面的方式 diff --git a/packages/desktop/electron/win/viewImageWin.ts b/packages/desktop/electron/win/viewImageWin.ts index 98cd2797..33a7f7cc 100644 --- a/packages/desktop/electron/win/viewImageWin.ts +++ b/packages/desktop/electron/win/viewImageWin.ts @@ -9,7 +9,7 @@ function createViewImageWin(search?: any): BrowserWindow { viewImageWin = new BrowserWindow({ title: 'pear-rec 图片', icon: ICON, - frame: WIN_CONFIG.viewImage.frame, + // frame: WIN_CONFIG.viewImage.frame, autoHideMenuBar: WIN_CONFIG.viewImage.autoHideMenuBar, // 自动隐藏菜单栏 webPreferences: { preload, diff --git a/packages/docs/desktop/examples.md b/packages/docs/desktop/examples.md index ff7cb58e..036eea74 100644 --- a/packages/docs/desktop/examples.md +++ b/packages/docs/desktop/examples.md @@ -6,6 +6,18 @@
本页展示 pear-rec 的一些功能例子
+这款软件具备卓越的屏幕录制能力,能够实现以下功能: + +- **全高清截图**:捕捉每一刻,让每一次分享变得简单高效。 +- **实时屏幕录制**:记录你的操作步骤或展示内容。 +- **高质量音视频同步捕获**:录制音频和视频,保持同步。 +- **动态 GIF 生成**:制作有趣的动画图像。 +- **图片浏览**:方便地查看和管理你的图片文件。 +- **视频播放**:播放视频文件,无需切换到其他应用程序。 +- **音频回放**:听取录制的音频。 +- **图像编辑**:编辑图片,添加标注、滤镜等。 +- **视频转 GIF**:将视频文件转换为 GIF 格式,方便分享和使用。 + ## 架构
diff --git a/packages/web/src/components/common/header/index.module.scss b/packages/web/src/components/common/header/index.module.scss index 341d4eb8..12d1bce3 100644 --- a/packages/web/src/components/common/header/index.module.scss +++ b/packages/web/src/components/common/header/index.module.scss @@ -5,41 +5,26 @@ display: flex; width: 100%; height: 32px; - background-color: #fff; + background-color: transparent; + justify-content: center; :global { - .left { - width: 100px; - height: 100%; - line-height: 32px; - white-space: nowrap; - text-align: left; - span { - display: inline-block; - height: 32px; - padding-left: 10px; - color: rgba(0, 0, 0, 0.88); - font-size: 18px; - line-height: 32px; - } - .logo { - width: 30px; - margin-left: 5px; - vertical-align: middle; - } - } .center { - flex: auto; white-space: nowrap; text-align: center; + display: flex; + align-items: center; .icon { - vertical-align: bottom; + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + font-size: 22px; + } + .icon:hover { + cursor: pointer; + background-color: #ccc; } - } - .right { - width: 100px; - min-width: 100px; - white-space: nowrap; - display: flex; } } } diff --git a/packages/web/src/components/common/header/index.tsx b/packages/web/src/components/common/header/index.tsx index 54630b40..7a87972b 100644 --- a/packages/web/src/components/common/header/index.tsx +++ b/packages/web/src/components/common/header/index.tsx @@ -6,7 +6,7 @@ import { EditOutlined, FolderOpenOutlined, LeftOutlined, - MinusOutlined, + PrinterOutlined, OneToOneOutlined, PictureOutlined, PushpinOutlined, @@ -50,188 +50,83 @@ const Header = (props) => { } return ( -
-
- logo - REC -
- {props.type == 'pin' ? ( -
-
- ) : ( -
-
- )} - -
-
diff --git a/packages/web/src/components/common/winBar/index.tsx b/packages/web/src/components/common/winBar/index.tsx index c73c3d2c..54630b40 100644 --- a/packages/web/src/components/common/winBar/index.tsx +++ b/packages/web/src/components/common/winBar/index.tsx @@ -2,82 +2,240 @@ import { BlockOutlined, BorderOutlined, CloseOutlined, + DownloadOutlined, + EditOutlined, + FolderOpenOutlined, + LeftOutlined, MinusOutlined, + OneToOneOutlined, + PictureOutlined, PushpinOutlined, + RightOutlined, + RotateLeftOutlined, + RotateRightOutlined, + ScanOutlined, + SearchOutlined, + ZoomInOutlined, + ZoomOutOutlined, } from '@ant-design/icons'; +import { FlipHorizontally, FlipVertically, Close, Minus, MinusTheTop } from '@icon-park/react'; import { Button } from 'antd'; -import { ipcRenderer } from 'electron'; import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import styles from './index.module.scss'; -const WinBar = () => { +const logo = './imgs/icons/png/512x512.png'; +const Header = (props) => { + const { t } = useTranslation(); const [isMaximize, setIsMaximize] = useState(false); - const [isAlwaysOnTop, setIsAlwaysOnTop] = useState(false); + const [isTop, setIsTop] = useState(false); - async function handleCloseWin() { - ipcRenderer.send('vi:close-win'); + async function handleMinimizeWin() { + props.onMinimizeWin(); } - async function handleHideWin() { - ipcRenderer.send('vi:hide-win'); - } - - function handleMinimizeWin() { - ipcRenderer.send('vi:minimize-win'); - } - - function handleMaximizeWin() { - ipcRenderer.send('vi:maximize-win'); - setIsMaximize(true); - } - - function handleUnmaximizeWin() { - ipcRenderer.send('vi:unmaximize-win'); - setIsMaximize(false); + function handleCloseWin() { + props.onCloseWin(); } function handleToggleMaximizeWin() { - isMaximize ? handleUnmaximizeWin() : handleMaximizeWin(); + props.onToggleMaximizeWin(isMaximize); + setIsMaximize(!isMaximize); } - function handleToggleAlwaysOnTopWin() { - const _isAlwaysOnTop = !isAlwaysOnTop; - setIsAlwaysOnTop(_isAlwaysOnTop); - ipcRenderer.send('vi:set-always-on-top', _isAlwaysOnTop); + function handleAlwaysOnTopWin() { + let _isTop = !isTop; + props.onAlwaysOnTopWin(_isTop); + setIsTop(_isTop); } return ( -
-
+ ) : ( +
+
+ )} + +
+
); }; -export default WinBar; +export default Header; diff --git a/packages/web/src/pages/pinImage/index.tsx b/packages/web/src/pages/pinImage/index.tsx index 1362dee9..5ba63146 100644 --- a/packages/web/src/pages/pinImage/index.tsx +++ b/packages/web/src/pages/pinImage/index.tsx @@ -3,7 +3,7 @@ import type { MenuProps } from 'antd'; import { Dropdown } from 'antd'; import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import Header from '../../components/common/header'; +import Header from '../../components/common/winBar'; import { db } from '../../db'; import ininitApp from '../../pages/main'; import styles from './index.module.scss'; diff --git a/packages/web/src/pages/pinVideo/index.tsx b/packages/web/src/pages/pinVideo/index.tsx index 0cb0e4b4..0fdfdfb1 100644 --- a/packages/web/src/pages/pinVideo/index.tsx +++ b/packages/web/src/pages/pinVideo/index.tsx @@ -8,7 +8,6 @@ import type { MenuProps } from 'antd'; import { Dropdown, Modal } from 'antd'; import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; -// import Header from '../../components/common/header'; import { db, defaultUser } from '../../db'; import ininitApp from '../main'; import styles from './index.module.scss';