Skip to content

Commit bd4ff25

Browse files
committed
๐Ÿ’„ ไผ˜ๅŒ–ๅฎŒๅ…จ่ฆ†็›–ๆก†้€‰็š„ๆธฒๆŸ“ๆ•ˆๆžœ
1 parent f1f76ee commit bd4ff25

File tree

2 files changed

+57
-20
lines changed

2 files changed

+57
-20
lines changed

โ€Žapp/src/core/render/canvas2d/basicRenderer/shapeRenderer.tsxโ€Ž

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,4 +197,54 @@ export namespace ShapeRenderer {
197197
Canvas.ctx.arc(viewLocation.x, viewLocation.y, radius, 0, 2 * Math.PI, false);
198198
Canvas.ctx.fill();
199199
}
200+
201+
/**
202+
* ็”ปไธ€ไธช็ฑปไผผๆ‘„ๅƒๆœบ็š„ๅฝข็Šถ๏ผŒ็Ÿฉๅฝข่พนๆก†
203+
* ่กจ้ขไธŠ็œ‹ไธŠๅŽปๆ˜ฏไธ€ไธช็Ÿฉๅฝขๆก†๏ผŒไฝ†ๆ˜ฏๅชๆœ‰ๅ››ไธช่ง’๏ผŒๆฏ้š”่พน็š„ไธญ้—ด้ƒจๅˆ†ๆ˜ฏ้€ๆ˜Ž็š„
204+
* @param rect ็Ÿฉๅฝข
205+
* @param borderColor ่พนๆก†้ขœ่‰ฒ
206+
* @param borderWidth ่พนๆก†ๅฎฝๅบฆ
207+
*/
208+
export function renderCameraShapeBorder(rect: Rectangle, borderColor: Color, borderWidth: number) {
209+
const x = rect.location.x;
210+
const y = rect.location.y;
211+
const w = rect.size.x;
212+
const h = rect.size.y;
213+
214+
// ่ฎก็ฎ—ๅ››ไธช่ง’็บฟๆฎต็š„้•ฟๅบฆ๏ผˆๅ–ๅ„่พน้•ฟ็š„25%๏ผ‰
215+
const hLineLen = w * 0.25;
216+
const vLineLen = h * 0.25;
217+
218+
Canvas.ctx.beginPath();
219+
220+
// ๅทฆไธŠ่ง’๏ผˆๅณๅ‘็บฟๆฎต + ไธ‹ๅ‘็บฟๆฎต๏ผ‰
221+
Canvas.ctx.moveTo(x, y);
222+
Canvas.ctx.lineTo(x + hLineLen, y);
223+
Canvas.ctx.moveTo(x, y);
224+
Canvas.ctx.lineTo(x, y + vLineLen);
225+
226+
// ๅณไธŠ่ง’๏ผˆๅทฆๅ‘็บฟๆฎต + ไธ‹ๅ‘็บฟๆฎต๏ผ‰
227+
Canvas.ctx.moveTo(x + w, y);
228+
Canvas.ctx.lineTo(x + w - hLineLen, y);
229+
Canvas.ctx.moveTo(x + w, y);
230+
Canvas.ctx.lineTo(x + w, y + vLineLen);
231+
232+
// ๅณไธ‹่ง’๏ผˆๅทฆๅ‘็บฟๆฎต + ไธŠๅ‘็บฟๆฎต๏ผ‰
233+
Canvas.ctx.moveTo(x + w, y + h);
234+
Canvas.ctx.lineTo(x + w - hLineLen, y + h);
235+
Canvas.ctx.moveTo(x + w, y + h);
236+
Canvas.ctx.lineTo(x + w, y + h - vLineLen);
237+
238+
// ๅทฆไธ‹่ง’๏ผˆๅณๅ‘็บฟๆฎต + ไธŠๅ‘็บฟๆฎต๏ผ‰
239+
Canvas.ctx.moveTo(x, y + h);
240+
Canvas.ctx.lineTo(x + hLineLen, y + h);
241+
Canvas.ctx.moveTo(x, y + h);
242+
Canvas.ctx.lineTo(x, y + h - vLineLen);
243+
244+
// ่ฎพ็ฝฎ็ป˜ๅˆถๆ ทๅผ
245+
Canvas.ctx.strokeStyle = borderColor.toString();
246+
Canvas.ctx.lineWidth = borderWidth;
247+
Canvas.ctx.lineCap = "round"; // ็บฟๆฎตๆœซ็ซฏๅœ†่ง’
248+
Canvas.ctx.stroke();
249+
}
200250
}

โ€Žapp/src/core/render/canvas2d/renderer.tsxโ€Ž

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -284,30 +284,17 @@ export namespace Renderer {
284284
Color.Transparent,
285285
0,
286286
);
287-
// ้ขๅค–็”ปๅ››ไธช็›ด่ง’่พนๆก†
288-
CurveRenderer.renderSolidLine(
289-
transformWorld2View(Stage.selectMachine.selectingRectangle.leftTop),
290-
transformWorld2View(Stage.selectMachine.selectingRectangle.topCenter),
291-
StageStyleManager.currentStyle.SelectRectangleBorderColor,
292-
1,
293-
);
294-
CurveRenderer.renderSolidLine(
295-
transformWorld2View(Stage.selectMachine.selectingRectangle.rightTop),
296-
transformWorld2View(Stage.selectMachine.selectingRectangle.rightCenter),
297-
StageStyleManager.currentStyle.SelectRectangleBorderColor,
298-
1,
299-
);
300-
CurveRenderer.renderSolidLine(
301-
transformWorld2View(Stage.selectMachine.selectingRectangle.rightBottom),
302-
transformWorld2View(Stage.selectMachine.selectingRectangle.bottomCenter),
287+
ShapeRenderer.renderCameraShapeBorder(
288+
Stage.selectMachine.selectingRectangle.transformWorld2View(),
303289
StageStyleManager.currentStyle.SelectRectangleBorderColor,
304290
1,
305291
);
306-
CurveRenderer.renderSolidLine(
307-
transformWorld2View(Stage.selectMachine.selectingRectangle.leftBottom),
308-
transformWorld2View(Stage.selectMachine.selectingRectangle.leftCenter),
292+
// ๅฎŒๅ…จ่ฆ†็›–ๆก†้€‰็š„ๆ็คบ
293+
TextRenderer.renderText(
294+
"ๅฎŒๅ…จ่ฆ†็›–ๆก†้€‰",
295+
transformWorld2View(Stage.selectMachine.selectingRectangle.leftBottom.add(new Vector(0, 10))),
296+
10,
309297
StageStyleManager.currentStyle.SelectRectangleBorderColor,
310-
1,
311298
);
312299
}
313300
}

0 commit comments

Comments
ย (0)