精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

www.成年人| 精品国产无码在线| 中日精品一色哟哟| 激情自拍一区| 亚洲性夜色噜噜噜7777| 久久精品国产99久久99久久久| 久草在线资源站资源站| 久久久91精品国产一区二区三区| 国产色视频一区| 日本一区二区免费在线观看| 成人精品视频| 欧美白人最猛性xxxxx69交| 久久国产乱子伦免费精品| 成人黄视频在线观看| 91免费版在线看| 3d动漫啪啪精品一区二区免费 | 亚洲经典一区二区| 日本亚洲最大的色成网站www| 欧美大尺度激情区在线播放 | 亚洲欧美成人vr| 日韩一区二区免费视频| 人人爽人人av| 亚洲欧美电影| 亚洲成人福利片| 最新中文字幕久久| 草碰在线视频| 久久久亚洲欧洲日产国码αv| av一区观看| 一二三区中文字幕| 日精品一区二区| 国外色69视频在线观看| a在线视频播放观看免费观看| 久久99精品久久久久久园产越南| 欧美大片在线观看一区二区| 国产美女18xxxx免费视频| 国产精品粉嫩| 黑人与娇小精品av专区| 成人免费性视频| 尤物视频在线看| 亚洲婷婷国产精品电影人久久| 日韩av图片| 久久国产精品高清一区二区三区| av一区二区久久| 国产九色精品| 囯产精品久久久久久| 国产呦精品一区二区三区网站| 国产精品视频播放| 最新国产中文字幕| 免费一级片91| 国产日韩在线一区| 国产免费无遮挡| 国产在线视频不卡二| 成人久久18免费网站图片| 在线观看国产黄| 麻豆久久久久久久| 成人福利网站在线观看11| 这里只有久久精品视频| 日本伊人午夜精品| 国产在线播放不卡| japanese国产| 高清在线不卡av| 国产精品亚洲综合| 香蕉视频国产在线| 久久综合久久综合久久| 日本一区二区视频| av网站无病毒在线| 亚洲视频一区二区在线观看| 欧美 国产 精品| 黄色影院在线看| 婷婷亚洲久悠悠色悠在线播放| www.99热这里只有精品| 中文字幕资源网在线观看免费| 色诱亚洲精品久久久久久| 欧美三级理论片| vam成人资源在线观看| 日韩三级高清在线| 182在线视频| 欧美午夜精彩| 久热在线中文字幕色999舞| 91视频免费在线看| 中文在线一区| 国产精品中文字幕在线观看| 午夜精品久久久久久久91蜜桃| 成人av在线播放网址| 免费在线观看一区二区| 天堂а√在线官网| 亚洲成人av中文| 久久黄色免费看| 欧一区二区三区| 亚洲男人天堂九九视频| 精品国产国产综合精品| 在线观看亚洲| 国产精品一区二区三区久久| 午夜精品久久久久久久96蜜桃| 91偷拍与自偷拍精品| 伊人婷婷久久| 亚洲电影观看| 91精品国产综合久久久久久漫画 | 亚洲精选视频在线| 免费无码av片在线观看| 精品国产三级| 亚洲天堂精品在线| 黄色一级视频免费观看| 日韩二区在线观看| 精品不卡一区二区三区| 无遮挡动作视频在线观看免费入口| 亚洲成人一区在线| 在线看免费毛片| 久久成人高清| 欧美黑人xxxx| 911美女片黄在线观看游戏| av网站一区二区三区| 一区二区av| 另类激情视频| 亚洲成人国产精品| 中日韩一级黄色片| 日欧美一区二区| 精品欧美国产| 激情av在线| 欧美一区二视频| 久久av无码精品人妻系列试探| 国产在线日韩| 91精品视频在线看| 137大胆人体在线观看| 精品国产乱码久久久久久婷婷| 亚洲欧美日韩一二三区| 色喇叭免费久久综合| 国产97在线观看| 天天综合天天色| 亚洲高清视频的网址| 亚洲国产午夜精品| 日韩免费在线| 国产免费一区二区三区在线能观看| 青青草视频在线观看| 午夜国产精品影院在线观看| 巨乳女教师的诱惑| 一区二区国产在线| 日韩精品电影一区亚洲| 亚洲午夜小视频| 日韩精品一区二区av| 国产精品99久久久久久似苏梦涵| 亚洲日本欧美在线| 88xx成人网| 中日韩午夜理伦电影免费 | 国产情侣一区| 韩日午夜在线资源一区二区| 第一av在线| 精品成人一区二区三区四区| 精品97人妻无码中文永久在线| 精品亚洲成a人在线观看| 亚洲精品中文字幕在线| 国产福利亚洲| 日韩视频第一页| 国产三级自拍视频| 亚洲制服欧美中文字幕中文字幕| 俄罗斯女人裸体性做爰| 欧美日韩福利| 精品国产乱码久久久久久久软件| 阿v视频在线观看| 日韩激情视频在线| 日本黄色一级视频| 国产精品福利电影一区二区三区四区| 午夜激情av在线| 中文字幕日韩一区二区不卡| 97操在线视频| 亚洲男同gay网站| 精品国产自在久精品国产| 国产午夜福利片| 久久久亚洲综合| 57pao国产成永久免费视频| 中文字幕午夜精品一区二区三区| 成人欧美一区二区三区视频| 成av人片在线观看www| 亚洲精品综合精品自拍| 日韩不卡高清视频| 亚洲视频一区二区在线| 亚洲欧美日韩色| 老牛国产精品一区的观看方式| 亚洲成人在线视频网站| 韩国一区二区三区视频| 91精品国产乱码久久久久久久久 | 成人免费在线视频观看| 男人的天堂免费| 午夜在线a亚洲v天堂网2018| 性欧美精品一区二区三区在线播放 | 午夜视频久久久久久| 91国模少妇一区二区三区| 国产呦萝稀缺另类资源| 亚洲欧洲日产国码无码久久99| 日韩成人精品一区二区| 999在线观看免费大全电视剧| 竹内纱里奈兽皇系列在线观看| 中国日韩欧美久久久久久久久| 亚洲经典一区二区三区| 欧美性猛片aaaaaaa做受| 激情五月婷婷在线| 国产欧美日韩一区二区三区在线观看| 亚洲女人在线观看| 久久成人国产| 在线观看17c| 亚洲人成精品久久久 | 亚洲精品视频久久久| 狠狠色丁香婷婷综合| 久久网站免费视频| 国产综合激情| 在线丝袜欧美日韩制服| 免费成人av| 国产91aaa| 成人一级视频| 欧美亚洲国产日本| 日本天码aⅴ片在线电影网站| 一本色道久久88精品综合| 精品国产无码一区二区三区| 欧美亚洲尤物久久| 西西44rtwww国产精品| 亚洲精品福利视频网站| 色噜噜噜噜噜噜| 91蝌蚪porny九色| 男人添女人荫蒂国产| 久草精品在线观看| 日韩欧美在线免费观看视频| 在线视频精品| 日韩视频免费播放| 欧美一区成人| 先锋影音男人资源| 日韩一区欧美| 午夜老司机精品| 欧美美乳视频| 欧美污视频久久久| 亚洲涩涩av| 美女精品国产| 亚洲小说图片视频| 久久99国产精品99久久| 国产伦精品一区二区三区在线播放 | 中文字幕人妻一区二区在线视频 | 亚洲理论中文字幕| 免费国产亚洲视频| 黄色aaa级片| 日韩国产欧美在线播放| 妞干网在线视频观看| 在线精品观看| 热99这里只有精品| 亚洲精品美女| 欧美亚洲精品一区二区| 亚洲美洲欧洲综合国产一区| 精品人妻少妇一区二区| 黄色成人91| 日韩伦理在线免费观看| 亚洲激情影院| 久久视频这里有精品| 免播放器亚洲| 欧美日韩一区二区在线免费观看 | 久久发布国产伦子伦精品| 国产精品亚洲专一区二区三区| 一级黄色高清视频| 懂色av一区二区夜夜嗨| 亚洲欧美日韩偷拍| aaa亚洲精品一二三区| 性欧美丰满熟妇xxxx性久久久| 91老司机福利 在线| 中文字幕人妻一区二区| 欧美极品少妇xxxxⅹ高跟鞋| 蜜桃av.com| 一区二区三区在线观看动漫| 国产在线观看成人| 精品久久久久久亚洲精品| 日本一区二区免费电影| 欧美日韩三级视频| va视频在线观看| 精品日韩欧美在线| 牛牛澡牛牛爽一区二区| 在线视频一区二区| 91精品国产91久久久久久青草| 久久久久久尹人网香蕉| 国产精品av一区二区三区| 91精品久久久久久| 精品国产影院| 午夜精品一区二区在线观看 | 久久久久国产精品熟女影院| 美女在线视频一区| 色哟哟网站在线观看| 久久色中文字幕| 久久精品一区二区三区四区五区| 亚洲一区视频在线观看视频| 伊人中文字幕在线观看| 91精品国产综合久久精品性色| 全部免费毛片在线播放一个| 亚洲一区av在线播放| 成人在线视频亚洲| 欧美一区第一页| 国产精久久久| 欧美日韩一区二区三区在线视频| 天天综合精品| 久久网站免费视频| 国产精品66部| 秋霞网一区二区三区| 亚洲国产精品自拍| 亚洲天堂999| 日韩黄色高清视频| 2021国产在线| 国产美女精品免费电影| 日韩动漫一区| 妞干网在线播放| 美国三级日本三级久久99| 亚洲熟女一区二区| 亚洲丝袜制服诱惑| 狠狠狠狠狠狠狠| 亚洲国产美女精品久久久久∴| 调教视频免费在线观看| 久久久亚洲网站| 亚洲天堂网站| 日本在线观看一区二区三区| 亚洲精品1234| www日本在线观看| 中文字幕在线不卡国产视频| 少妇太紧太爽又黄又硬又爽| 日韩午夜电影av| 在线观看二区| 国产精品成人av性教育| 欧美一级色片| 久久免费一级片| 国产一区二区三区香蕉| 少妇愉情理伦三级| 日本乱人伦aⅴ精品| 五月婷婷深深爱| 欧美激情伊人电影| 日韩在线观看一区二区三区| 亚洲三区视频| 奇米亚洲午夜久久精品| 麻豆精品免费视频| 欧美性xxxx极品高清hd直播| 国模私拍视频在线| 九九热99久久久国产盗摄| 国产精品久久久久久久久久辛辛 | 欧美视频三区| 最新视频 - x88av| 精品无人码麻豆乱码1区2区| 91l九色lporny| 91成人免费在线视频| 免费在线视频一级不卡| 日本精品性网站在线观看| 欧美一区二区三区红桃小说| 免费观看国产精品视频| 成人av免费在线| 日韩久久久久久久久| 精品88久久久久88久久久| 2020日本在线视频中文字幕| 国产精品中出一区二区三区| 在线免费观看欧美| 免费看毛片的网站| 欧美日韩亚洲高清| 青青草免费在线视频| 日韩av免费在线观看| 国产影视一区| 一区二区在线免费看| 亚洲天堂av一区| 亚洲国产欧美另类| 午夜精品久久久久久久99热浪潮| 麻豆成人入口| 日本男人操女人| 亚洲欧美中日韩| 亚洲精华国产精华精华液网站| 97色在线视频| 欧洲激情视频| 亚欧精品在线视频| 亚洲亚洲精品在线观看| 外国精品视频在线观看 | 91在线视频观看免费| 中文字幕av一区二区三区高| 国产精品自偷自拍| 久久久久久久久国产| 美日韩中文字幕| 亚洲精品www.| 亚洲一区二区三区免费视频| 四虎影视在线播放| 国产精品自拍偷拍| 韩国久久久久| 亚洲午夜精品久久久久久高潮 | 国产a级片视频| 色诱视频网站一区| 超碰在线免费公开| 久久久com| 久草这里只有精品视频| 日韩欧美三级在线观看| 在线播放日韩专区| www.丝袜精品| 久久久久久久久久久久91| 一区二区三区毛片| 国产在线视频网站| 超碰97国产在线| 免费在线观看一区二区三区| 国产在线拍揄自揄拍| 中文字幕在线看视频国产欧美在线看完整 | 亚洲欧洲精品一区二区| 成人午夜电影网站| 中文字幕在线观看欧美| 97人人模人人爽人人喊中文字| 久久电影院7| 免费观看av网站| 精品欧美黑人一区二区三区|