Skip to content

Commit 36b7c72

Browse files
committed
💄 让完全框选看起来不一样
1 parent 305c8b2 commit 36b7c72

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

app/src/core/render/canvas2d/renderer.tsx

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,14 +266,47 @@ export namespace Renderer {
266266
}
267267
/** 框选框 */
268268
function renderSelectingRectangle() {
269-
if (Stage.selectMachine.isUsing) {
270-
if (Stage.selectMachine.selectingRectangle) {
269+
if (Stage.selectMachine.isUsing && Stage.selectMachine.selectingRectangle) {
270+
const selectMode = Stage.selectMachine.getSelectMode();
271+
if (selectMode === "intersect") {
271272
ShapeRenderer.renderRect(
272273
Stage.selectMachine.selectingRectangle.transformWorld2View(),
273274
StageStyleManager.currentStyle.SelectRectangleFillColor,
274275
StageStyleManager.currentStyle.SelectRectangleBorderColor,
275276
1,
276277
);
278+
} else if (selectMode === "contain") {
279+
ShapeRenderer.renderRect(
280+
Stage.selectMachine.selectingRectangle.transformWorld2View(),
281+
StageStyleManager.currentStyle.SelectRectangleFillColor,
282+
Color.Transparent,
283+
0,
284+
);
285+
// 额外画四个直角边框
286+
CurveRenderer.renderSolidLine(
287+
transformWorld2View(Stage.selectMachine.selectingRectangle.leftTop),
288+
transformWorld2View(Stage.selectMachine.selectingRectangle.topCenter),
289+
StageStyleManager.currentStyle.SelectRectangleBorderColor,
290+
1,
291+
);
292+
CurveRenderer.renderSolidLine(
293+
transformWorld2View(Stage.selectMachine.selectingRectangle.rightTop),
294+
transformWorld2View(Stage.selectMachine.selectingRectangle.rightCenter),
295+
StageStyleManager.currentStyle.SelectRectangleBorderColor,
296+
1,
297+
);
298+
CurveRenderer.renderSolidLine(
299+
transformWorld2View(Stage.selectMachine.selectingRectangle.rightBottom),
300+
transformWorld2View(Stage.selectMachine.selectingRectangle.bottomCenter),
301+
StageStyleManager.currentStyle.SelectRectangleBorderColor,
302+
1,
303+
);
304+
CurveRenderer.renderSolidLine(
305+
transformWorld2View(Stage.selectMachine.selectingRectangle.leftBottom),
306+
transformWorld2View(Stage.selectMachine.selectingRectangle.leftCenter),
307+
StageStyleManager.currentStyle.SelectRectangleBorderColor,
308+
1,
309+
);
277310
}
278311
}
279312
}

app/src/core/service/controlService/controller/concrete/ControllerRectangleSelect.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ class ControllerRectangleSelectClass extends ControllerClass {
211211
*/
212212
private isSelectDirectionRight = false;
213213
// 获取此时此刻应该的框选逻辑
214-
private getSelectMode(): "contain" | "intersect" {
214+
public getSelectMode(): "contain" | "intersect" {
215215
if (this.isSelectDirectionRight) {
216216
return Stage.rectangleSelectWhenRight;
217217
} else {

0 commit comments

Comments
 (0)