50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
/**
|
|
* 适配 canvas 2d 上下文
|
|
* @param ctx canvas 2d 上下文
|
|
* @returns
|
|
*/
|
|
export function canvas2dAdapter(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
|
|
}
|