/** * 适配 canvas 2d 上下文 * @param ctx canvas 2d 上下文 * @returns */ export function canvas2d(ctx: CanvasRenderingContext2D): UniApp.CanvasContext { return Object.assign(ctx, { setFillStyle(color: string | CanvasGradient) { ctx.fillStyle = color; }, setStrokeStyle(color: string | CanvasGradient | CanvasPattern) { ctx.strokeStyle = color; }, setLineWidth(lineWidth: number) { ctx.lineWidth = lineWidth; }, setLineCap(lineCap: 'butt' | 'round' | 'square') { ctx.lineCap = lineCap; }, setFontSize(font: string) { ctx.font = font; }, setGlobalAlpha(alpha: number) { ctx.globalAlpha = alpha; }, setLineJoin(lineJoin: 'bevel' | 'round' | 'miter') { ctx.lineJoin = lineJoin; }, setTextAlign(align: 'left' | 'center' | 'right') { ctx.textAlign = align; }, setMiterLimit(miterLimit: number) { ctx.miterLimit = miterLimit; }, setShadow(offsetX: number, offsetY: number, blur: number, color: string) { ctx.shadowOffsetX = offsetX; ctx.shadowOffsetY = offsetY; ctx.shadowBlur = blur; ctx.shadowColor = color; }, setTextBaseline(textBaseline: 'top' | 'bottom' | 'middle') { ctx.textBaseline = textBaseline; }, createCircularGradient() {}, draw() {}, addColorStop() {} }) as unknown as UniApp.CanvasContext; }