精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HarmonyOS 實現一個手繪板

系統 OpenHarmony
本篇文章分享一下我實現的一個手繪板,利用openHarmony內置的API cnavas組件實現。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

最近在學習openHarmony,恰好之前了解過canvas,所以本篇文章分享一下我實現的一個手繪板,利用openHarmony內置的API cnavas組件實現。

介紹

這是一個手繪板,并且可以根據滑動屏幕速度,動態生成線條大小,當用戶觸摸屏幕,會生成線條,并且速度越快,線條越細。

效果展示

#夏日挑戰賽# HarmonyOS 實現一個手繪板-開源基礎軟件社區

原理分析

1、繪制原理

使用前,需要線了解canvas組件,可以參考harmonyOS開發者文檔,文檔介紹的非常詳細,這里就不多介紹了。

首先,我們需要將canvas上下文對象,需要在觸摸移動事件中綁定,因為我們是通過觸摸來生成對應線條的。

然后,屬性選擇lineCap,屬性值有三種:butt、round、square,我嘗試了后發現round效果比較好。

  • 屬性值為butt時的效果

#夏日挑戰賽# HarmonyOS 實現一個手繪板-開源基礎軟件社區

  • 屬性值為round

  • 屬性值為square

其實butt效果也還行,就是鋸齒太嚴重,雖然API中有內置抗鋸齒屬性,但是不知道為啥設置了沒有效果,可能粒度太大了,現在這個粒度已經有點卡了,如果把粒度小設置小一點估計更卡。
綜上還是選擇了round,它會將線端點以圓形結束,所以效果上更圓潤。

最后將數組中的最后一個值取出,作為moveTo的坐標,將鼠標移動后的點作為lineTo的坐標,然后再通過stroke就能繪制出圖像。

繪制直線,通常使用moveTo ()與lineTo ()兩個方法。. moveTo ()方法用于將畫筆移至指定點并以改點為直線的開始點,lineTo ()則為結束點。

const el = this.$refs.canvas;
this.ctx = el.getContext('2d')
this.ctx.lineWidth =this.lineWidth/2
this.ctx.beginPath()
// 向線條的每個末端添加圓形線帽。
this.ctx.lineCap = 'square'
// 每次將數組中最后一個值取出,作為起始點
this.ctx.moveTo(this.ArrX[this.ArrX.length-1],this.ArrY[this.ArrY.length-1])
this.ctx.lineTo(e.touches[0].localX,e.touches[0].localY)
this.ctx.stroke()
this.ArrX.push(e.touches[0].localX)
this.ArrY.push(e.touches[0].localY)

2、線條粗細

想要通過速度來計算線條粗細,那么可以是需要獲取兩點之間的時間,通過時間和距離得到速度。

當觸發touchmove事件,將當前時間戳存儲起來,通過上一次觸發事件獲得的時間-當前觸發事件獲得的時間,就可以得到兩次觸發事件的事件間隔,此時我們就獲得了兩點之間的時間。

再計算兩點之間的距離(平方和再開根號),通過 路程/時間 = 速度計算出兩點之間的速度,從而可以動態生成線條粗細。

// 計算線條粗細
const currTime = Date.now()
if(this.startTime !== 0){
const duration = currTime - this.startTime
// 傳入倒數第二個點和最后一個點,和持續時間,會返回加速度
const v = this.speed(this.ArrX[this.ArrX.length-2],this.ArrY[this.ArrY.length-2],this.ArrX[this.ArrX.length-1],this.ArrY[this.ArrY.length-1],duration)
this.lineWidth = this.lineWidth/v
if(this.lineWidth>25){
this.lineWidth = 25
}
if(this.lineWidth<1){
this.lineWidth = 1
}
}
this.startTime = currTime

完整代碼

index.js:

// @ts-nocheck
export default {
data: {
ctx:'',
ArrX:[],
ArrY:[],
// 開始時間
startTime:0,
lineWidth:14
},
// 偏移很多
touchstart(e){
// 開始時間清空
this.startTime = 0
this.ArrX.push(e.touches[0].localX)
this.ArrY.push(e.touches[0].localY)
},
// 計算最后兩點的速度
speed(x1,y1,x2,y2,s){
const x = Math.abs(x1-x2)*Math.abs(x1-x2)
const y = Math.abs(y1-y2)*Math.abs(y1-y2)
return Math.sqrt(x+y)/s
},
touchmove(e){
// 計算線條粗細
const currTime = Date.now()
if(this.startTime !== 0){
const duration = currTime - this.startTime
// 傳入倒數第二個點和最后一個點,和持續時間,會返回加速度
const v = this.speed(this.ArrX[this.ArrX.length-2],this.ArrY[this.ArrY.length-2],this.ArrX[this.ArrX.length-1],this.ArrY[this.ArrY.length-1],duration)
this.lineWidth = this.lineWidth/v
if(this.lineWidth>25){
this.lineWidth = 25
}
if(this.lineWidth<1){
this.lineWidth = 1
}
}
this.startTime = currTime
const el = this.$refs.canvas;
this.ctx = el.getContext('2d')
this.ctx.lineWidth =this.lineWidth/2
this.ctx.beginPath()
// 向線條的每個末端添加圓形線帽。
this.ctx.lineCap = 'square'
// 每次將數組中最后一個值取出,作為起始點
this.ctx.moveTo(this.ArrX[this.ArrX.length-1],this.ArrY[this.ArrY.length-1])
this.ctx.lineTo(e.touches[0].localX,e.touches[0].localY)
this.ctx.stroke()
this.ArrX.push(e.touches[0].localX)
this.ArrY.push(e.touches[0].localY)
},
touchend(e){
this.startTime = 0
}
}

index.hml:

<div class="container">
<canvas ref="canvas" class="canvas" @touchstart="touchstart"
@touchmove="touchmove" @touchend="touchend"/>
</div>

index.css:

.container{
margin: 50px;
}
.canvas{
height: 100%;
width: 100%;
background-color: #eee;
border: 1px solid #ffc300;
}

總結

不足點:使用體驗不是很好,后續還需要優化。

最后,通過自定義組件,加深對HarmonyOS的開發,共建鴻蒙生態!

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2024-10-12 16:38:09

2022-08-02 14:21:20

滑動驗證碼鴻蒙

2022-07-28 14:20:44

懸浮球鴻蒙

2009-07-02 10:02:40

JSP程序

2022-08-01 14:07:26

canvas繪畫板

2020-11-19 10:25:24

MQTT

2020-10-27 10:00:26

鴻蒙開發板物聯網

2021-09-07 07:34:42

CSS 技巧代碼重構

2020-09-24 11:46:03

Promise

2017-12-12 15:24:32

Web Server單線程實現

2022-01-04 11:08:02

實現Localcache存儲

2014-04-14 15:54:00

print()Web服務器

2021-06-02 16:32:23

鴻蒙HarmonyOS應用

2020-12-17 12:06:49

鴻蒙應用鴻蒙開發

2020-10-30 17:12:05

Hi3861

2023-02-26 01:37:57

goORM代碼

2023-05-22 09:10:53

CSSloading 效

2023-03-01 09:39:40

調度系統

2011-03-28 09:56:03

存儲增刪操作

2022-11-29 17:34:43

虛擬形象系統
點贊
收藏

51CTO技術棧公眾號

手机看片1024日韩| 日本理论中文字幕| 成人免费一区二区三区牛牛| 成人av免费在线观看| 欧美在线亚洲一区| 国产又黄又粗又猛又爽的| 亚洲3区在线| 日本大香伊一区二区三区| 最新视频 - x88av| 欧美色视频免费| 国产精品一区久久久久| 国产97色在线| 久热这里只有精品在线| 青青一区二区三区| 日韩成人激情视频| 97免费公开视频| 激情都市亚洲| 亚洲国产精品视频| 综合视频在线观看| 国模精品一区二区| 成人av免费在线观看| 91性高湖久久久久久久久_久久99| 日产精品久久久久久久| 888久久久| 国产亚洲欧美视频| 日韩综合第一页| 国产精品日本一区二区不卡视频| 欧美香蕉大胸在线视频观看| 日韩精品视频在线观看视频| 黄色成人在线| 国产精品人妖ts系列视频| 久久综合福利| 人妻精品一区二区三区| 国产乱码精品一区二区三区av | 国产麻豆精品久久一二三| 国产精品久久久久久久久久ktv| 日本三级理论片| 国产精品久久| 欧美福利小视频| 欧美日韩国产精品综合 | 99精品久久只有精品| 99热在线国产| av无码精品一区二区三区宅噜噜| 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久99视频免费| 午夜爽爽爽男女免费观看| 欧美高清视频手机在在线| 中文日韩电影网站| 国产毛片欧美毛片久久久| 五月国产精品| 亚洲欧美激情在线视频| 人妻在线日韩免费视频| 天天做夜夜做人人爱精品 | 受虐m奴xxx在线观看| 怕怕欧美视频免费大全| 亚洲视频第一页| 日本人亚洲人jjzzjjz| 第一会所亚洲原创| 久久精品美女视频网站| 精品国产视频在线观看| 欧美日韩国产高清| 久久久这里只有精品视频| www.99re7.com| 一本久道久久久| 日本免费久久高清视频| 五月激情丁香网| 久久精品久久精品| 91久久伊人青青碰碰婷婷| www.五月激情| 91色.com| 亚洲韩国在线| 香蕉久久aⅴ一区二区三区| 亚洲一二三区在线观看| 自慰无码一区二区三区| 成人毛片免费| 日韩一级免费观看| 捆绑裸体绳奴bdsm亚洲| 欧美综合久久| 欧美激情小视频| 久久久久久久久久久影院| 青青草97国产精品免费观看无弹窗版| 成人羞羞国产免费| 日韩一级中文字幕| 国产日韩欧美a| 国产在线无码精品| 欧美日韩国产v| 7777精品伊人久久久大香线蕉的| 国产免费a级片| 国产日产精品_国产精品毛片| 色吧影院999| 久久精品视频9| 久久综合导航| 91视频在线免费观看| 肉丝一区二区| 亚洲视频一区二区免费在线观看| 精品欧美一区免费观看α√| 欧美aaaaaaaa| 日韩精品免费在线播放| 午夜爱爱毛片xxxx视频免费看| 亚洲人www| 91精品久久久久久| 蜜桃视频在线观看视频| 亚洲综合另类小说| 亚洲精品www.| 亚洲素人在线| 欧美激情免费在线| 伊人精品在线视频| 91丨九色丨蝌蚪丨老版| 日本a在线天堂| 成人精品动漫| 亚洲男人第一网站| 久久免费视频6| 免费观看久久久4p| 麻豆蜜桃91| 精品一性一色一乱农村| 欧美精品久久99久久在免费线 | 亚洲国产精品嫩草影院久久av| 久久九九亚洲综合| 国产精品51麻豆cm传媒| 99久久99久久精品免费观看| 日韩 欧美 自拍| 日韩不卡在线| 亚洲欧美日韩久久久久久| 久久久久免费看| 国产一区视频网站| 在线免费观看成人| 欧美暴力调教| 国产午夜精品久久久| 精品成人免费视频| 国产高清亚洲一区| aaa免费在线观看| 国产精品黄色片| 亚洲日本aⅴ片在线观看香蕉| 国产无套粉嫩白浆内谢| 岛国精品在线播放| 菠萝蜜视频在线观看入口| 亚洲91在线| 精品激情国产视频| 国产精品无码天天爽视频| 中文字幕欧美国产| 波多结衣在线观看| 欧美日韩中文字幕一区二区三区| 欧美有码在线视频| 欧美一区二区三区少妇| 一本色道久久综合亚洲aⅴ蜜桃| 天天插天天射天天干| 在线视频亚洲| 欧美日韩亚洲在线| 成人动漫一区| 亚洲人永久免费| 波多野结衣小视频| 欧美国产欧美亚州国产日韩mv天天看完整 | 在线观看不卡| 成人自拍视频网站| 岛国毛片av在线| 亚洲激情自拍图| 五月婷婷色丁香| 国产欧美一区二区在线观看| 九九热在线免费| 天天做天天爱天天爽综合网| 91午夜理伦私人影院| 国产网红女主播精品视频| 日韩av在线电影网| 在线观看污污网站| 国产精品成人免费精品自在线观看| av免费一区二区| 欧美日韩 国产精品| 国产在线一区二区三区欧美 | 亚洲香蕉网站| 久久久婷婷一区二区三区不卡| 国产日韩另类视频一区| 日韩少妇与小伙激情| 成人午夜免费福利| 日本精品一区二区三区四区的功能| 国产 欧美 在线| 精品一区二区久久| 妞干网在线观看视频| 神马电影久久| 亚洲自拍av在线| 日韩av一卡| 日韩在线免费av| 亚洲卡一卡二卡三| 在线国产亚洲欧美| 九九视频免费看| 久久久久久久国产精品影院| 亚洲欧美天堂在线| 日韩香蕉视频| 在线视频欧美一区| 奇米影视777在线欧美电影观看 | 国产欧美三级电影| 国产aⅴ夜夜欢一区二区三区 | 日韩极品在线| 日本亚洲精品在线观看| 永久免费在线观看视频| 日韩一区二区三免费高清| 五月婷婷色丁香| 亚洲色图清纯唯美| 久久精品无码一区| 国产传媒一区在线| 国产精品乱码久久久久| 欧美高清不卡| 日韩三级电影| 欧美黑人巨大videos精品| 国产欧美日韩最新| av在线中出| 久久躁狠狠躁夜夜爽| 久久米奇亚洲| 亚洲国产精品久久久久| 国产又粗又长又大视频| 色素色在线综合| 国产一级av毛片| 国产精品传媒在线| 爱爱免费小视频| 成人美女在线观看| 国产老头和老头xxxx×| 毛片不卡一区二区| 欧美日韩亚洲一二三| 一区二区国产精品| 成人一级生活片| 99久久.com| 亚洲国产激情一区二区三区| 伊人春色精品| 韩日午夜在线资源一区二区 | 欧美一区二区啪啪| 一区二区日韩在线观看| 在线一区二区三区四区五区| 国产女同在线观看| 亚洲制服丝袜在线| 91在线播放观看| 成人欧美一区二区三区视频网页| 国产又粗又黄又猛| 久久综合999| av无码一区二区三区| 成人午夜激情视频| 亚洲妇女无套内射精| 韩国一区二区在线观看| 一级淫片在线观看| 久久爱www久久做| 少妇一级淫免费播放| 日本不卡一区二区| 国产wwwxx| 日本成人中文字幕在线视频| 日本成人在线免费视频| 亚洲制服少妇| 久久精品香蕉视频| 日韩影院精彩在线| 亚洲国产精品毛片av不卡在线| 免费永久网站黄欧美| 国产真实乱子伦| 日韩高清在线观看| 日本肉体xxxx裸体xxx免费| 男人的天堂久久精品| 亚洲精品手机在线观看| 久久9热精品视频| 天堂av手机在线| 国产福利一区二区三区在线视频| 中文字幕制服丝袜| 99精品在线观看视频| 亚洲 小说 欧美 激情 另类| 久久久久久久久久电影| 东京热无码av男人的天堂| 综合欧美亚洲日本| 免费在线观看国产精品| 午夜电影网一区| 波多野结衣高清视频| 欧美日韩国产综合久久| 99精品视频在线播放免费| 精品国产亚洲一区二区三区在线观看| 亚洲第一页视频| 国产婷婷色综合av蜜臀av| 最近高清中文在线字幕在线观看| 久久亚洲成人精品| 24小时免费看片在线观看| 欧亚精品在线观看| 日本国产亚洲| 国产不卡一区二区三区在线观看| 免费福利视频一区| 亚洲欧美精品在线观看| 欧美日韩 国产精品| 免费无码av片在线观看| 黄色小说综合网站| 成人做爰www看视频软件| 久久久亚洲精品一区二区三区| 蜜桃av免费在线观看| 亚洲一区视频在线观看视频| 中文字幕xxxx| 欧美一区二区不卡视频| 青青草观看免费视频在线| 久久精品电影一区二区| 国产伦理精品| 成人观看高清在线观看免费| 欧美韩一区二区| 天天综合中文字幕| 一区二区黄色| 日韩欧美中文视频| 国产日韩精品一区二区浪潮av| www.av成人| 欧美性色19p| 亚洲爱情岛论坛永久| 国产一区二区三区在线观看视频| 欧洲中文在线| 国产精品视频久久久久| 精品国产乱子伦一区二区| 综合国产精品久久久| 午夜影院日韩| 极品白嫩少妇无套内谢| 国产精品久久久久一区二区三区| 国产一级做a爱片久久毛片a| 欧美精品一级二级三级| 日韩欧美在线番号| 欧美精品电影免费在线观看| 人人精品久久| 视频一区二区精品| 久久福利毛片| 中文字幕一区二区人妻电影丶| 1区2区3区欧美| 五月婷婷丁香在线| 日韩电影中文字幕在线| 波多野结依一区| 91色琪琪电影亚洲精品久久| 日韩成人激情| 日本新janpanese乱熟| www.亚洲在线| 国产一级做a爰片在线看免费| 欧美一区二区三区免费| 欧美成年黄网站色视频| 国产精品久久久久久影视| 久久不见久久见国语| 国产中文字幕视频在线观看| www.66久久| 久久午夜鲁丝片午夜精品| 7777精品伊人久久久大香线蕉经典版下载| 黄色影院在线播放| 日本精品免费观看| 日韩欧美中文字幕电影| 黄色免费福利视频| 成a人片国产精品| 国产一级特黄aaa大片| 日本在线播放一区二区三区| 国产主播喷水一区二区| 欧美禁忌电影| 久久婷婷国产91天堂综合精品| 91麻豆123| 久久夜色精品国产噜噜亚洲av| 亚洲精品999| 天堂av中文在线观看| 欧美精品一区二区三区四区五区| 免费在线日韩av| 欧美人与禽zoz0善交| 欧美日本国产视频| 国产在线一区二区视频| 99三级在线| 精品动漫3d一区二区三区免费版 | 欧美黄色一级| 久久福利一区二区| www.亚洲色图.com| 亚洲大片免费观看| 色偷偷噜噜噜亚洲男人的天堂| 涩涩涩久久久成人精品| 精品一区二区三区毛片| 成人一区在线观看| 欧美亚韩一区二区三区| 精品夜色国产国偷在线| 视频精品导航| 中文字幕日韩精品久久| 国产suv精品一区二区6| 日本中文字幕在线免费观看| 国产一区二区三区在线看 | 人与动物性xxxx| 日韩免费视频一区二区| 欧美伦理91| 亚洲欧美影院| 成人天堂资源www在线| 91精品国产高清一区二区三密臀| 一区二区在线免费视频| 亚洲成av人片在线观看www| 亚洲不卡中文字幕无码| 亚洲国产精品国自产拍av| www.久久成人| 日本欧美中文字幕| 中文无码久久精品| 久久精品一区二区免费播放| 欧美美女视频在线观看| 美女高潮视频在线看| 在线观看成人一级片| 99精品视频一区二区三区| 亚洲一区二区三区网站| 久久久久国产精品免费| 成人久久电影| 色哟哟视频在线| 天堂地址在线www| 国产精品高清在线| 欧美va亚洲va日韩∨a综合色| 丰满大乳奶做爰ⅹxx视频| 欧美日韩在线观看一区二区| 97在线超碰| 国产精品亚洲天堂| 国产亚洲一区二区三区四区| 亚洲精品一区二区口爆| 91精品国产自产在线|