微信小程序canvas画布组件,绘制笑脸,修改旧画布示例

前端使用Canvas实现一个图片编辑组件 实现一个图片编辑组件,包含画笔、记号笔、折线、矩形、马赛克、裁剪、编辑历史记录(撤销和重做)、更改颜色和线宽功能,以及取消编辑和保存。未经作者授权禁止转载! 阅读详情

这是微信开发者文档canvas旧版示例代码效果图,运用

wx.createCanvasContext('firstCanvas')

 但是已经被弃用了,需要使用新的接口Canvas 2D,下面我们就用新街口改写旧版示例。

 wxml代码:

<!--canvas组件-->
<canvas id="myCanvas" type="2d" style="margin:20rpx;width: 300px; height: 200px;"  bindtouchstart="start"  bindtouchmove="move"  bindtouchend="end"/>

<!--通过canvas的start move end事件获取画布中的坐标点x y-->
<view hidden="{{hidden}}">
  Coordinates: ({{x}}, {{y}})
</view>

js逻辑代码:

// pages/canvas/canvas.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    x: 0,
    y: 0,
    hidden: true
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    wx.createSelectorQuery()
    .select('#myCanvas') // 在 WXML 中填入的 id
    .fields({ node: true, size: true })
    .exec((res) => {
        // Canvas 对象
        const canvas = res[0].node
        // 渲染上下文
        const ctx = canvas.getContext('2d')

        // Canvas 画布的实际绘制宽高
        const width = res[0].width
        const height = res[0].height

        // 初始化画布大小
        const dpr = wx.getWindowInfo().pixelRatio
        canvas.width = width * dpr
        canvas.height = height * dpr
        ctx.scale(dpr, dpr)
        // 清空画布
        ctx.clearRect(0, 0, width, height)
        //绘制方形
        ctx.strokeStyle = "#00ff00";//路径颜色
        ctx.lineWidth = 5;//路径宽度
        ctx.rect(0,0,200,200);//方形区域
        ctx.stroke();//开始绘制方形
        //绘制圆形
        //arc(x,y,r,sAngle,eAngle,counterclockwise)绘制圆形
        // 参数
        // x	Number	圆的x坐标
        // y	Number	圆的y坐标
        // r	Number	圆的半径
        // sAngle	Number	起始弧度,单位弧度(在3点钟方向)
        // eAngle	Number	终止弧度
        //counterclockwise	Boolean	可选。指定弧度的方向是逆时针还是顺时针。默认是false,即顺时针。
        ctx.strokeStyle = "#ff0000";
        ctx.lineWidth = 2;
        ctx.moveTo(160,100);//移动至坐标160 100        
        ctx.beginPath();//开始新路径
        ctx.arc(100,100,60,0,2*Math.PI,true);
        ctx.moveTo(140,100);
        ctx.arc(100,100,40,0,Math.PI,false);
        ctx.moveTo(85,80);
        ctx.arc(80,80,5,0,2*Math.PI);
        ctx.moveTo(125,80)
        ctx.arc(120,80,5,0,2*Math.PI);
        ctx.stroke();        
    })
  },
  start: function(e) {
    this.setData({
      hidden: false,
      x: e.touches[0].x,
      y: e.touches[0].y
    })
  },
  move: function(e) {
    this.setData({
      x: e.touches[0].x,
      y: e.touches[0].y
    })
  },
  end: function(e) {
    this.setData({
      hidden: true
    })
  }
})

【微信小程序开发】第 7 课 - 小程序的常用组件 小程序的组件包括视图容器、文本、图片、按钮、输入框、列表、轮播图、导航栏、下拉菜单和弹窗等,用于构建小程序界面和实现交互功能 ! 阅读详情

相关推荐

【微信小程序】其他组件-canvas画布

canvas组件提供了一个画布,开发者可以通过或者获取到绘图上下文,然后使用上下文提供的绘图 API 进行图形绘制。canvas组件支持两种类型的画布:2D 和 WebGL。其中,2D 画布适合绘制矢量图形和简单的图像处理,而 WebGL 画布适合进行三维图形和高性能图形渲染。微信小程序的canvas组件为开发者提供了丰富的绘图功能,通过合理配置属性和方法,可以实现高质量的图形绘制效果。希望本文能帮助你在微信小程序开发中更好地使用canvas组件。😊。

墨夶的博客 1919

微信小程序 canvas 笑脸

onReady(){ var ctx = wx.createCanvasContext('muCanvas'); // ctx.setFillStyle('red') // ctx.fillRect(0,0,375,100) //线条颜色,线条宽度 ctx.setStrokeStyle('tan') ctx.setLineWidth(2) ctx.moveTo(160,100) ctx.arc(1

wandoumm的博客 833

基于立创EDA的8口全千兆POE交换机设计详解:RTL8370N芯片与90W大功率供电方案

本文详细解析了基于立创EDA设计的8口全千兆POE交换机方案,核心采用RTL8370N交换芯片与支持90W大功率供电的IEEE 802.3bt标准PD芯片。文章深入探讨了PSE/PD供电管理、电源架构设计、电路细节及关键散热方案,为DIY或学习POE交换机硬件设计提供了完整的开源实践指南。

weixin_29050829的博客 1万+

微信小程序 新版canvas绘制图片方法

微信小程序 新版canvas绘制图片方法

默默地博客 1万+

大疆机场及无人机上云(航线规划、指令飞行...)

最近基于大疆上云api进行二次开发,后面将按照开发步骤对其进行说明!

资深三维GIS开发 5573

深入解析STM32驱动AT25DF321A FLASH芯片的SPI通信与数据完整性验证

本文深入解析STM32通过SPI通信驱动AT25DF321A FLASH芯片的全过程,包括硬件连接、驱动函数实现与数据完整性验证。重点介绍SPI配置、读写操作优化及CRC校验方法,确保数据存储的可靠性,为嵌入式存储系统开发提供实用指南。

agile9scrum的博客 1064

微信小程序开发实战(17):用画布画一张笑脸

小程序的画布允许绘制基础的图形,如直线、圆等。画布需要使用<canvas>标签,例如,下面的布局代码使用了<canvas>标签定义了一个300*200的画布。&l...

一个被知识诅咒的人 2740

【FPGA】Verilog代码实现温湿度传感器DHT11

#今天也是咸鱼的一天~ 因为参加Robei 杯 是要做一个机器人,先不说这个机器人具体怎么机器法,但是和外界互通的传感器肯定少不了,通过获取外界环境数据,进行处理,然后做出各种各样的功能。 先来讲个简单的模块,温湿度传感器DHT11。 DHT11介绍 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器。它具有超小体积、极低功耗的特点。它使用单根总线与单片机进行双向的串行数据传输,信号传...

Ninquelote的博客 9162

一步步教你利用Canvas对图片进行处理

文章转载自:https://m.jb51.net/article/123995.htm 这篇文章主要给大家介绍了关于利用Canvas对图片进行处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 前言 Canvas,中文译为“画布”,HTML5中新增了<canvas>元素,可以结合JavaScript...

我的blog屋 2458

YOLOv11改进 | Conv篇 | 2024最新轻量化自适应提取模块LAE助力边缘设备部署计算(附代码 + 修改教程 + 运行教程)

本文给大家带来的一个改进机制是最新由LSM-YOLO提出的轻量化自适应特征提取(Lightweight Adaptive Extraction, LAE)模块,其是LSM-YOLO模型中的关键模块,旨在进行多尺度特征提取,同时降低计算成本。LAE通过以下方式实现更有效的特征提取:多尺度特征提取、自适应特征提取。LAE模块可以在不增加额外参数的情况下提高了模型对ROI区域的检测性能。​欢迎大家订阅我的专栏一起学习YOLO!YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍。

Snu77的博客 4054

Linux系统中u-boot启动流程分析(详解)

代码部分,具体如下;

嵌入式技术开发 1991

微信小程序--canvas画布实现图片的编辑

微信小程序--canvas画布实现图片的编辑暂无。

神尐破 6445

【人工智能论文发表】基于医学病例文本和多模态大模型的医疗影像分割方法研究

摘要:本研究提出MMS-Former,一种基于级联多模态Transformer的文本引导医学图像分割框架。该模型创新性地将临床文本信息深度融入图像分割全过程,通过SwinUNETR提取视觉特征,ClinicalBERT编码病历文本,并在解码器的每个上采样阶段通过交叉注意力模块实现多级文本特征融合。实验表明,相比纯视觉模型,MMS-Former在Dice系数和IoU指标上分别提升3%以上,在处理边界模糊目标时表现尤为突出。模型还设计了结合Dice损失和图文对比损失的复合目标函数,确保分割精度与语义对齐。代码实

u012133341的博客 141

微信小程序canvas画图

基础写起来太没动力了,也写得乱七八糟的,还是直接解决一些小问题比较方便,代码的方方面面的细节都会详尽的解释一下。 1、下面介绍一下canvas的画图,我这个简单一点,画一个带图文的背景图,图片可以从后台获取也可以选择本地的。canvas画图首先要在wxml里面新建一个<canvas>标签,一定要写上canvas-id='canvas的id',这是必须条件,如下面代码: <...

impossible1994727的博客 2万+

把数据库事务边界握在手里:ABAP 里的 COMMIT CONNECTION 与 ROLLBACK CONNECTION 深度拆解

与表面是两条很短的语句,背后却牵动了连接管理、数据库 LUW、SAP LUW、隐式提交、游标生命周期、GTT 平台差异等一整片工程现实。把它们用对,你就能在不破坏主业务事务的前提下,实现跨库写入、审计落库、隔离型日志、数据集成落地等一系列“看似矛盾”的目标;用错了,它们也会悄无声息地制造一致性缺口,让问题在高峰期以 dump 或数据异常的方式爆出来。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1837

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

前端H5使用canvas画爱心以及笑脸

canvas是HTML5中推出的新功能,可以在页面上生成一个画布,使用js可以在画布上绘制一些图形。canvas可以使我们在页面绘制许多不一样的图形,上面我只举了两个非常简单的例子。

雨溪的博客 2227

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

微信小程序新版canvas绘制图片方法

长按保存到本地(在真机测试中用bindlongtap不生效),可以换成catchlongtap。如果绘制的canvas再外面可以在渲染画布的上面声明一个变量等于this。如果想要绘制需要将起临时存储起来,写入成功的就可以进行绘制了。在长按保存事件中(catchlongtap),将canvas = 画布this.data._this。在写入文件中设置_this.setData({_this:canvas});中,在将要绘制的东西写到点击事件中去,在点击事件中去获取数据);

ddf__的博客 3481

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

微信小程序 canvas涂鸦制作【有背景图】

将canvas背景颜色设置成透明,底下渲染一张定位好的背景图。每次手指离开手机屏幕当作一次操作,然后保存成临时文件,用作回退。预览时先将背景图渲染上去,然后再将最后一张保存的临时文件渲染上去,就是带背景图片的涂鸦了,不需要背景图片的话将画布颜色设置成。1. 用户自定义画笔大小。4. 回退和清空功能。2. 更换涂鸦颜色。

qq_41261218的博客 2691

释放创造力!探索微信小程序中的wxml-to-canvas绘图组件

开发者可以使用组件将用户输入的信息和模板合成为自定义的海报或名片,提升用户体验。

青轩桃李能几何,流光欺人忽蹉跎 4801

小程序 canvas 绘制图片

2、多张图片绘制需要调用 img.onload,进行嵌套绘制。1、canvas不能绘制网络图片需要转换成本地图片进行使用。

weixin_45784582的博客 1780

小程序 获取微信、手机设备、账号等信息api

1、获取屏幕窗口信息 const info=wx.getWindowInfo() pixelRatio 设备像素比 screenWidth 屏幕宽度,单位px screenHeight 屏幕高度,单位px windowWidth 可使用窗口宽度,单位px windowHeight 可使用窗口高度,单位px statusBarHeight 状态栏的高度,单位px safeArea 在竖屏正方向下的安全区域 screenTop 窗口上边缘的y值 2、获取手机设备设置

weixin_43294560的博客 5975

微信小程序canvas画布绘制base64图片并保存图片到相册中

【代码】微信小程序canvas画布绘制base64图片并保存图片到相册中。

温柔归故里 1071

微信小程序中的canvas

文章目录canvas 常用属性:canvas基本用法:注意:canvas绘制基本步骤:canvas绘制笑脸:canvas对象方法介绍: canvas 常用属性: canvas基本用法: 创建canvas.wxml文件。 <canvas canvas-id="myCanvas"></canvas> canvas组件默认样式如下。 canvas { width: 300px; height: 150px; display: block; position:

流楚丶格念的博客 1万+

【微信小程序中使用echarts组件】

ec-canvas 设置 force-use-old-canvas=“true” ,防止echarts图标不随着页面滑动而滑动。在echarts官方下载echarts.js引入项目中。

没落的博客 2150

【Canvas】canvas绘制emoji笑脸

利用canvas绘制笑脸

Doxio的博客 2183

微信小程序 获取窗口信息

微信小程序获取窗口信息

m0_46296039的博客 1516
上一篇: 微信小程序picker 双列案例
下一篇: 微信小程序上传图片后 开发者工具自动刷新问题
少杰()
博客等级 码龄4年 18粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少杰()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值