Skip to content

Commit c98ee75

Browse files
committed
pin position of an opposit anchor point during resize with an edge middle anchor point when rect has fixed ratio
1 parent f49819a commit c98ee75

File tree

1 file changed

+11
-31
lines changed

1 file changed

+11
-31
lines changed

src/utils.js

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,11 @@ export const getNewStyle = (type, rect, deltaW, deltaH, ratio, minWidth, minHeig
4646
width = widthAndDeltaW.width
4747
deltaW = widthAndDeltaW.deltaW
4848
if (ratio) {
49-
deltaH = deltaW / ratio
5049
height = width / ratio
51-
// 左上角固定
52-
centerX += deltaW / 2 * cos(rotateAngle) - deltaH / 2 * sin(rotateAngle)
53-
centerY += deltaW / 2 * sin(rotateAngle) + deltaH / 2 * cos(rotateAngle)
54-
} else {
55-
// 左边固定
56-
centerX += deltaW / 2 * cos(rotateAngle)
57-
centerY += deltaW / 2 * sin(rotateAngle)
5850
}
51+
// 左边固定
52+
centerX += deltaW / 2 * cos(rotateAngle)
53+
centerY += deltaW / 2 * sin(rotateAngle)
5954
break
6055
}
6156
case 'tr': {
@@ -104,16 +99,11 @@ export const getNewStyle = (type, rect, deltaW, deltaH, ratio, minWidth, minHeig
10499
height = heightAndDeltaH.height
105100
deltaH = heightAndDeltaH.deltaH
106101
if (ratio) {
107-
deltaW = deltaH * ratio
108102
width = height * ratio
109-
// 左上角固定
110-
centerX += deltaW / 2 * cos(rotateAngle) - deltaH / 2 * sin(rotateAngle)
111-
centerY += deltaW / 2 * sin(rotateAngle) + deltaH / 2 * cos(rotateAngle)
112-
} else {
113-
// 上边固定
114-
centerX -= deltaH / 2 * sin(rotateAngle)
115-
centerY += deltaH / 2 * cos(rotateAngle)
116103
}
104+
// 上边固定
105+
centerX -= deltaH / 2 * sin(rotateAngle)
106+
centerY += deltaH / 2 * cos(rotateAngle)
117107
break
118108
}
119109
case 'bl': {
@@ -144,15 +134,10 @@ export const getNewStyle = (type, rect, deltaW, deltaH, ratio, minWidth, minHeig
144134
deltaW = widthAndDeltaW.deltaW
145135
if (ratio) {
146136
height = width / ratio
147-
deltaH = deltaW / ratio
148-
// 右上角固定
149-
centerX -= deltaW / 2 * cos(rotateAngle) + deltaH / 2 * sin(rotateAngle)
150-
centerY -= deltaW / 2 * sin(rotateAngle) - deltaH / 2 * cos(rotateAngle)
151-
} else {
152-
// 右边固定
153-
centerX -= deltaW / 2 * cos(rotateAngle)
154-
centerY -= deltaW / 2 * sin(rotateAngle)
155137
}
138+
// 右边固定
139+
centerX -= deltaW / 2 * cos(rotateAngle)
140+
centerY -= deltaW / 2 * sin(rotateAngle)
156141
break
157142
}
158143
case 'tl': {
@@ -184,14 +169,9 @@ export const getNewStyle = (type, rect, deltaW, deltaH, ratio, minWidth, minHeig
184169
deltaH = heightAndDeltaH.deltaH
185170
if (ratio) {
186171
width = height * ratio
187-
deltaW = deltaH * ratio
188-
// 左下角固定
189-
centerX += deltaW / 2 * cos(rotateAngle) + deltaH / 2 * sin(rotateAngle)
190-
centerY += deltaW / 2 * sin(rotateAngle) - deltaH / 2 * cos(rotateAngle)
191-
} else {
192-
centerX += deltaH / 2 * sin(rotateAngle)
193-
centerY -= deltaH / 2 * cos(rotateAngle)
194172
}
173+
centerX += deltaH / 2 * sin(rotateAngle)
174+
centerY -= deltaH / 2 * cos(rotateAngle)
195175
break
196176
}
197177
}

0 commit comments

Comments
 (0)