Skip to content

Commit 9429070

Browse files
authored
Merge pull request #15 from wecode-ai/update_screenshot
feat: 更新截图功能,修复截图框样式
2 parents 39d13d3 + 2c38dbd commit 9429070

6 files changed

Lines changed: 394 additions & 155 deletions

File tree

src/pages/Screenshot/components/Editor/SelectionBorder.tsx

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,25 @@ interface SelectionBorderProps {
99
canvasOffsetX: number;
1010
pinned: boolean;
1111
onHandleMouseDown: (e: React.MouseEvent, key: HandleType) => void;
12+
/**
13+
* 移动模式下边框的屏幕绝对位置(fixed 定位基准)。
14+
* 非移动模式下为 null,此时使用相对于 Editor 容器的 absolute 定位。
15+
*/
16+
fixedOrigin?: { x: number; y: number } | null;
1217
}
1318

1419
const SelectionBorder: React.FC<SelectionBorderProps> = ({
1520
currentSel,
1621
canvasOffsetX,
1722
pinned,
1823
onHandleMouseDown,
24+
fixedOrigin,
1925
}) => {
26+
// 移动模式:用 fixed + 屏幕绝对坐标;否则用 absolute + 相对容器坐标
27+
const useFixed = Boolean(fixedOrigin);
28+
const originX = fixedOrigin ? fixedOrigin.x : 0;
29+
const originY = fixedOrigin ? fixedOrigin.y : 0;
30+
2031
const handles: { key: HandleType; x: number; y: number }[] = [
2132
{ key: "nw", x: canvasOffsetX + 0, y: 0 },
2233
{ key: "n", x: canvasOffsetX + currentSel.w / 2, y: 0 },
@@ -38,10 +49,10 @@ const SelectionBorder: React.FC<SelectionBorderProps> = ({
3849
"0 0 0 1.5px rgba(0,0,0,0.5), 0 4px 24px rgba(0,0,0,0.6), inset 0 0 12px rgba(0,0,0,0.25)",
3950
boxSizing: "border-box",
4051
height: currentSel.h,
41-
left: canvasOffsetX,
52+
left: useFixed ? originX + canvasOffsetX : canvasOffsetX,
4253
pointerEvents: "none",
43-
position: "absolute",
44-
top: 0,
54+
position: useFixed ? "fixed" : "absolute",
55+
top: useFixed ? originY : 0,
4556
width: currentSel.w,
4657
zIndex: 21,
4758
}}
@@ -61,9 +72,13 @@ const SelectionBorder: React.FC<SelectionBorderProps> = ({
6172
boxSizing: "border-box",
6273
cursor: getHandleCursor(key),
6374
height: HANDLE_SIZE + 4,
64-
left: x - (HANDLE_SIZE + 4) / 2,
65-
position: "absolute",
66-
top: y - (HANDLE_SIZE + 4) / 2,
75+
left: useFixed
76+
? originX + x - (HANDLE_SIZE + 4) / 2
77+
: x - (HANDLE_SIZE + 4) / 2,
78+
position: useFixed ? "fixed" : "absolute",
79+
top: useFixed
80+
? originY + y - (HANDLE_SIZE + 4) / 2
81+
: y - (HANDLE_SIZE + 4) / 2,
6782
width: HANDLE_SIZE + 4,
6883
zIndex: 22,
6984
}}

0 commit comments

Comments
 (0)