index.html 13 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <style>
  9. html,body,canvas {
  10. margin: 0;
  11. padding: 0;
  12. width: 100%;
  13. height: 100%;
  14. overflow: hidden;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <canvas id="canvas"> </canvas>
  20. </body>
  21. </html>
  22. <script>
  23. const loadImage = (imgUrl) => {
  24. return new Promise((resolve, reject) => {
  25. const img = new Image()
  26. img.onload = () => {
  27. resolve(img)
  28. }
  29. img.onerror = reject
  30. img.src = imgUrl
  31. })
  32. }
  33. const drawCadImg = async (imgUrl, angle, scale, canvas) => {
  34. const img = await loadImage(imgUrl)
  35. const ctx = canvas.getContext('2d')
  36. ctx.save()
  37. ctx.translate(canvas.width / 2, canvas.height / 2)
  38. ctx.rotate(angle)
  39. ctx.scale(scale, scale)
  40. ctx.translate(-img.width / 2, - img.height / 2)
  41. ctx.drawImage(img, 0, 0)
  42. ctx.restore()
  43. }
  44. const canvas = document.querySelector('canvas')
  45. const ctx = canvas.getContext('2d')
  46. canvas.width = canvas.offsetWidth
  47. canvas.height = canvas.offsetHeight
  48. drawCadImg(
  49. `data:image/png;base64,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`,
  50. 45,
  51. 1.2,
  52. document.querySelector('canvas')
  53. )
  54. ctx.save()
  55. ctx.translate(canvas.width / 2, canvas.height / 2)
  56. ctx.rect(0, 0, 200, 200)
  57. ctx.fill()
  58. ctx.restore()
  59. </script>