当前位置: 首页 > news >正文

uni-app:canvas-绘制图形4(获取画布宽高,根据画布宽高进行图形绘制)

效果

代码

var width = '';
var height = ''; 
const query = uni.createSelectorQuery();
//获取宽度
query.select('#firstCanvas').fields({
    size: true
 }, (res) => {
     width = res.width;
     height = res.height;
}).exec();
 console.log('宽度'+width);
 console.log('高度'+height);

<template><view><!-- 创建了一个宽度为300像素,高度为200像素的canvas元素。canvas-id属性被设置为"firstCanvas",可以用来在JavaScript中获取该canvas元素的上下文对象。 --><canvas style="width:200px; height:300px; border: 1px solid black;" canvas-id="firstCanvas"id="firstCanvas"></canvas></view>
</template>
<script>export default {onReady: function(e) {//创建一个画布上下文对象,用于进行绘图操作。'firstCanvas'是一个指定的画布标识符,表示在页面上的哪个 <canvas> 元素上进行绘制。var context = uni.createCanvasContext('firstCanvas')var width = '';var height = ''; const query = uni.createSelectorQuery();//获取宽度query.select('#firstCanvas').fields({size: true}, (res) => {width = res.width;height = res.height;}).exec();console.log('宽度'+width);console.log('高度'+height);//绘制路径中的线条。context.setStrokeStyle("#aaaaff")// 设置线条的宽度为2个像素。context.setLineWidth(2)// 绘制横线context.beginPath(); // 开始路径绘制context.moveTo(width/2, 0); // 将起点移动到 (0, 100)context.lineTo(width/2, 50);context.stroke(); // 绘制线条var x1 = width/4; // 第一个竖线的起点 x 坐标var y1 = 50; // 第一个竖线的起点 y 坐标var y2 = 30; // 短竖线的高度var horizontalLength = width/2; // 横线的长度context.beginPath();context.moveTo(x1, y1 + y2); // 移动到第一个短竖线的起点context.lineTo(x1, y1); // 绘制第一个短竖线context.moveTo(x1 + horizontalLength, y1 + y2); // 移动到横线的右端下方context.lineTo(x1 + horizontalLength, y1); // 绘制第二个短竖线context.moveTo(x1, y1); // 移动到横线的左端下方context.lineTo(x1 + horizontalLength, y1); // 绘制横线/*  */context.stroke(); // 绘制线条// 将之前的绘图操作渲染到画布上。context.draw()},methods: {}}
</script>

这里由于我对canvas设置了边框border:1px solid black.所以宽高都要分别增加1px+1px=2px的像素值

http://www.lryc.cn/news/180470.html

相关文章:

  • EM@坐标@函数@图象的对称和翻折变换
  • Python之json模块
  • 机器学习---BP算法
  • 继苹果、联发科后,传高通下一代5G芯片将由台积电以3纳米代工
  • 【自定义类型】--- 位段、枚举、联合
  • 区块链(9):java区块链项目的Web服务实现之实现web服务
  • 【CV】各种库安装报错及解决办法
  • 【算法系列篇】哈希表
  • 计算机视觉——飞桨深度学习实战-起始篇
  • vscode中运行脚手架项目报表
  • 中睿天下荣获2023全国智能驾驶测试赛车联网安全比赛第一名
  • opencv图像数组坐标系
  • zookeeper mac安装
  • js生成随机16进制数
  • 第七章 查找 八、B树
  • Vue以及整合ElementUI
  • 免费、丰富、便捷的资源论坛——Yiove论坛,包括但不限于阿里云盘、夸克云盘、迅雷云盘等等
  • 1.3 互联网的组成
  • 【机器学习】熵和概率分布,图像生成中的量化评估IS与FID
  • Vue3.0跨端Web SDK访问微信小程序云储存,文件上传路径不存在/文件受损无法显示问题(已解决)
  • 使用chat GPT 生成一个js 生成天数的方法
  • BUUCTF reverse wp 76 - 80
  • 科技资讯|AirPods Pro基于定位控制的自适应音频功能
  • 《Jetpack Compose从入门到实战》第九章 Accompanist 与第三方组件库
  • Centos7 docker 容器内root身份应用自启动 /usr/sbin/init 问题
  • STL学习笔记之容器
  • Java基础---第十二篇
  • Acwing 841. 字符串哈希
  • NEON优化:性能优化经验总结
  • C++ 并发编程实战 第九章