canvasHelper.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * 适配 canvas 2d 上下文
  3. * @param ctx canvas 2d 上下文
  4. * @returns
  5. */
  6. export function canvas2dAdapter(ctx: CanvasRenderingContext2D): UniApp.CanvasContext {
  7. return Object.assign(ctx, {
  8. setFillStyle(color: string | CanvasGradient) {
  9. ctx.fillStyle = color
  10. },
  11. setStrokeStyle(color: string | CanvasGradient | CanvasPattern) {
  12. ctx.strokeStyle = color
  13. },
  14. setLineWidth(lineWidth: number) {
  15. ctx.lineWidth = lineWidth
  16. },
  17. setLineCap(lineCap: 'butt' | 'round' | 'square') {
  18. ctx.lineCap = lineCap
  19. },
  20. setFontSize(font: string) {
  21. ctx.font = font
  22. },
  23. setGlobalAlpha(alpha: number) {
  24. ctx.globalAlpha = alpha
  25. },
  26. setLineJoin(lineJoin: 'bevel' | 'round' | 'miter') {
  27. ctx.lineJoin = lineJoin
  28. },
  29. setTextAlign(align: 'left' | 'center' | 'right') {
  30. ctx.textAlign = align
  31. },
  32. setMiterLimit(miterLimit: number) {
  33. ctx.miterLimit = miterLimit
  34. },
  35. setShadow(offsetX: number, offsetY: number, blur: number, color: string) {
  36. ctx.shadowOffsetX = offsetX
  37. ctx.shadowOffsetY = offsetY
  38. ctx.shadowBlur = blur
  39. ctx.shadowColor = color
  40. },
  41. setTextBaseline(textBaseline: 'top' | 'bottom' | 'middle') {
  42. ctx.textBaseline = textBaseline
  43. },
  44. createCircularGradient() {},
  45. draw() {},
  46. addColorStop() {}
  47. }) as unknown as UniApp.CanvasContext
  48. }