• uni-app使用canvas适配手机宽高进行渲染


    uni-app使用canvas适配手机宽高进行渲染

    <template>
    	<view class="countStyle">
    		<view class="bgimg" :style="{ 'background-image': 'url(' + imager + ')', 'height': bgHeight + 'px' }">
    			<canvas canvas-id="firstCanvas" class="cansStyle" />
    		</view>
    	</view>
    </template>
    
    <script setup>
    	import { ref, onMounted } from 'vue';
    	import config from '@/config';
    
    	const imager = ref(config.config.baseUrl + '/wximages/menu/unloadWork.png');
    	const canvasWidth = uni.getSystemInfoSync().windowWidth;
    	const canvasHeight = uni.getSystemInfoSync().windowHeight;
    
    	// 计算背景图片高度以保持等比缩放
    	const bgImageAspectRatio = 450 / 600; // 背景图片的原始宽高比
    	const bgHeight = canvasWidth / bgImageAspectRatio;
    
    	const context = uni.createCanvasContext('firstCanvas');
    
    	const points = [
    		{ x: 100 * canvasWidth / 375, y: 100 * bgHeight / 667 },
    		{ x: 150 * canvasWidth / 375, y: 100 * bgHeight / 667 },
    		{ x: 150 * canvasWidth / 375, y: 150 * bgHeight / 667 },
    		{ x: 50 * canvasWidth / 375, y: 150 * bgHeight / 667 },
    	];
    
    	onMounted(() => {
    		drawPolyline();
    	});
    
    	function drawPolyline() {
    		context.setStrokeStyle("#ffff00");
    		context.setLineWidth(10);
    
    		context.moveTo(points[0].x, points[0].y);
    
    		for (let i = 1; i < points.length; i++) {
    			context.lineTo(points[i].x, points[i].y);
    		}
    
    		context.stroke();
    		context.draw();
    	}
    </script>
    
    <style lang="scss" scoped>
    	.countStyle {
    		overflow: auto;
    	}
    
    	.bgimg {
    		background-size: cover;
    		background-repeat: no-repeat;
    		background-position: center;
    		width: 100%;
    	}
    
    	.cansStyle {
    		width: 100%;
    		height: 100%;
    	}
    </style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
  • 相关阅读:
    Leetcode-二叉树
    Golang字符串基本处理方法
    DES加解密
    Day39-Servlet
    Vue框架--Vue过滤器
    vue3使用cesium实现跟随弹框
    Linux 认识与学习Bash——2
    搭建confluence
    mmdetection3d在win10下实现点云目标检测
    混凝土搅拌站预拌厂数字孪生可视化管理系统,三维可视化数据监控平台
  • 原文地址:https://blog.csdn.net/H_jrqn/article/details/136669159