This commit is contained in:
bb_pan 2025-03-05 10:18:08 +08:00
parent 27dfcd9756
commit 954f658ac3
1 changed files with 101 additions and 2 deletions

View File

@ -22,26 +22,115 @@
</uni-card>
<uni-card is-shadow is-full spacing="0px" style="margin-top: 10px">
<div>
</div>
<div class="img-cont">
<image style="width: 100%" :src="codeImg"></image>
<div>
<canvas
canvasId="canvas"
class="my-canvas"
></canvas>
</div>
</div>
</uni-card>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { nextTick, ref } from 'vue'
//
const code = ref<string>('')
//
const codeImg = ref<string>('https://web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg')
onLoad(() => {
nextTick(() => {
//
chapter('XXX专用章', 'XXX科技股份有限公司')
})
})
//
const handleRecognition = () => {
console.log('识别')
uni.navigateTo({ url: '/pages/integratedQuery/electronicTag/codeRecognition' })
}
//
const chapter = (text, companyName) => {
const ctx = uni.createCanvasContext('canvas')
//
let width = 82
let height = 82
ctx.lineWidth = 3
ctx.strokeStyle = '#cf4c36'
ctx.beginPath()
ctx.arc(width, height, 80, 0, Math.PI * 2) //
ctx.stroke()
//
create5star(ctx, width, height, 20, '#cf4c36', 0)
//
ctx.font = '100 13px 宋体'
ctx.textBaseline = 'middle' //
ctx.textAlign = 'center' //
ctx.lineWidth = 3 // 线
ctx.strokeStyle = '#cf4c36'
ctx.strokeText(text, width, height + 50)
//
ctx.translate(width, height) //
ctx.font = '100 13px 宋体'
let count = companyName.length //
let angle = (4 * Math.PI) / (3 * (count - 1)) //
let chars = companyName.split('')
let c
for (let i = 0; i < count; i++) {
c = chars[i] //
if (i == 0) {
ctx.rotate((5 * Math.PI) / 6)
} else {
ctx.rotate(angle)
}
ctx.save()
ctx.translate(65, 0) // ,x
ctx.rotate(Math.PI / 2) // 90,x
ctx.strokeStyle = '#cf4c36' //
ctx.strokeText(c, 0, 0) //
ctx.restore()
}
//
ctx.draw()
}
//
const create5star = (context, sx, sy, radius, color, rotato) => {
context.save()
context.fillStyle = color
context.translate(sx, sy) //
context.rotate(Math.PI + rotato) //
context.beginPath() //
// let x = Math.sin(0);
// let y = Math.cos(0);
let dig = (Math.PI / 5) * 4
for (let i = 0; i < 5; i++) {
//
let x = Math.sin(i * dig)
let y = Math.cos(i * dig)
context.lineTo(x * radius, y * radius)
}
context.closePath()
context.stroke()
context.fill()
context.restore()
}
</script>
<style lang="scss" scoped>
@ -52,6 +141,16 @@ page {
padding: 10px;
.img-cont {
min-height: 100px;
margin-top: 20px;
/* display: flex;
align-items: center;
justify-content: right;
position: relative; */
.my-canvas {
width: 165px;
height: 165px;
z-index: 9999;
}
}
}
</style>