|
@@ -360,29 +360,79 @@ export class SCanvasPaintEngine extends SPaintEngine {
|
|
|
return this._canvas.measureText(text).width;
|
|
|
} // Function textWidth()
|
|
|
|
|
|
- // /**
|
|
|
- // * 绘制带导角空心矩形
|
|
|
- // *
|
|
|
- // * @param x X坐标
|
|
|
- // * @param y Y坐标
|
|
|
- // * @param w 宽度
|
|
|
- // * @param h 高度
|
|
|
- // * @param r 导角半径
|
|
|
- // */
|
|
|
- // drawRoundedRect(x: number, y: number, w: number, h: number, r: number): void {
|
|
|
- // this.canvas.beginPath();
|
|
|
- // this.canvas.moveTo(x, y + r);
|
|
|
- // this.canvas.lineTo(x, y + h - r);
|
|
|
- // this.canvas.quadraticCurveTo(x, y + h, x + r, y + h);
|
|
|
- // this.canvas.lineTo(x + w - r,y + h);
|
|
|
- // this.canvas.quadraticCurveTo(x + w, y + h, x + w, y + h - r);
|
|
|
- // this.canvas.lineTo(x + w, y + r);
|
|
|
- // this.canvas.quadraticCurveTo(x + w, y, x + w - r, y);
|
|
|
- // this.canvas.lineTo(x + r, y);
|
|
|
- // this.canvas.quadraticCurveTo(x, y, x,y + r);
|
|
|
- // this.canvas.fill();
|
|
|
- // this.canvas.stroke();
|
|
|
- // } // Function drawRoundedRect()
|
|
|
+ /**
|
|
|
+ * 绘制二次贝塞尔曲线
|
|
|
+ *
|
|
|
+ * @param cp1x 控制点X坐标
|
|
|
+ * @param cp1y 控制点Y坐标
|
|
|
+ * @param x 结束点X坐标
|
|
|
+ * @param y 结束点Y坐标
|
|
|
+ */
|
|
|
+ quadraticCurveTo(cp1x: number, cp1y: number, x: number, y: number): void {
|
|
|
+ this._canvas.quadraticCurveTo(cp1x, cp1y, x, y);
|
|
|
+ } // Function quadraticCurveTo()
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 绘制三次贝塞尔曲线
|
|
|
+ *
|
|
|
+ * @param cp1x 起始点控制点X坐标
|
|
|
+ * @param cp1y 起始点控制点Y坐标
|
|
|
+ * @param cp2x 结束点控制点X坐标
|
|
|
+ * @param cp2y 结束点控制点Y坐标
|
|
|
+ * @param x 结束点X坐标
|
|
|
+ * @param y 结束点Y坐标
|
|
|
+ */
|
|
|
+ bezierCurveTo(
|
|
|
+ cp1x: number,
|
|
|
+ cp1y: number,
|
|
|
+ cp2x: number,
|
|
|
+ cp2y: number,
|
|
|
+ x: number,
|
|
|
+ y: number
|
|
|
+ ): void {
|
|
|
+ this._canvas.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
|
|
|
+ } // Function bezierCurveTo()
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 绘制带导角空心矩形
|
|
|
+ *
|
|
|
+ * @param rect 矩形
|
|
|
+ * @param r 导角半径
|
|
|
+ */
|
|
|
+ drawRoundRect(rect: SRect, r: number): void {
|
|
|
+ this.setMatrix();
|
|
|
+ this.setPen();
|
|
|
+ this.setBrush();
|
|
|
+ this.setComposite();
|
|
|
+ this.setShadow();
|
|
|
+ this._canvas.beginPath();
|
|
|
+ this._canvas.moveTo(rect.x, rect.y + r);
|
|
|
+ this._canvas.lineTo(rect.x, rect.bottom - r);
|
|
|
+ this._canvas.quadraticCurveTo(
|
|
|
+ rect.x,
|
|
|
+ rect.bottom,
|
|
|
+ rect.x + r,
|
|
|
+ rect.bottom
|
|
|
+ );
|
|
|
+ this._canvas.lineTo(rect.right - r, rect.bottom);
|
|
|
+ this._canvas.quadraticCurveTo(
|
|
|
+ rect.right,
|
|
|
+ rect.bottom,
|
|
|
+ rect.right,
|
|
|
+ rect.bottom - r
|
|
|
+ );
|
|
|
+ this._canvas.lineTo(rect.right, rect.y + r);
|
|
|
+ this._canvas.quadraticCurveTo(
|
|
|
+ rect.right,
|
|
|
+ rect.y,
|
|
|
+ rect.right - r,
|
|
|
+ rect.y
|
|
|
+ );
|
|
|
+ this._canvas.lineTo(rect.x + r, rect.y);
|
|
|
+ this._canvas.quadraticCurveTo(rect.x, rect.y, rect.x, rect.y + r);
|
|
|
+ this._canvas.fill();
|
|
|
+ this._canvas.stroke();
|
|
|
+ } // Function drawRoundRect()
|
|
|
|
|
|
/**
|
|
|
* 设置字体
|