国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

鴻蒙JS自定義組件—局部放大圖片組件

系統 OpenHarmony
主要通過Canvas組件的drawImage方法實現圖片顯示。該方法需要輸入9個參數,分別是圖片對象,原圖的X軸裁剪起點,原圖的Y軸裁剪起點,裁剪的寬度,裁剪的高度,畫布X軸畫圖的起點,畫布Y軸畫圖的起點,畫布的寬度,畫布的高度。

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

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

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

組件介紹

本圖片組件在顯示圖片的基礎上附帶局部放大功能,在原本設定的圖片區域將局部進行放大顯示,在不占用其余布局空間的情況下,滿足用戶仔細欣賞圖片細節的需要。實現效果如下:

#打卡不停更# 鴻蒙JS自定義組件——局部放大圖片組件-開源基礎軟件社區

項目結構

#打卡不停更# 鴻蒙JS自定義組件——局部放大圖片組件-開源基礎軟件社區

組件開發

頁面布局

  • 為組件綁定doubleclick雙擊事件和touchmove觸屏移動事件,分別用于切換圖片縮放和控制局部顯示區域移動。
<div style="width: {{ imageWidth }}px; height: {{ imageHeight }}px;">
<canvas src="{{ imageSrc }}" ref="zoom" class="canvas-border"
@doubleclick="zoomswitch" @touchmove="getmove"></canvas>
</div>

組件屬性參數設置

參數名

描述

參數類型

默認值

imageWidth

設置圖片寬度

Number

500

imageHeight

設置圖片高度

Number

500

imageSrc

設置圖片地址

String


scale

圖片放大的比例

Number

2

實現原理

  • 主要通過canvas組件的drawImage方法實現圖片顯示。該方法需要輸入9個參數,分別是圖片對象,原圖的X軸裁剪起點,原圖的Y軸裁剪起點,裁剪的寬度,裁剪的高度,畫布X軸畫圖的起點,畫布Y軸畫圖的起點,畫布的寬度,畫布的高度。
ctx0.drawImage(changeview,
this.initwidth / 2 - this.initwidth / this.scale / 2,
this.initheight / 2 - this.initheight / this.scale / 2,
changeview.width / this.scale,
changeview.height / this.scale,
0, 0,
this.imageWidth, this.imageHeight);

#打卡不停更# 鴻蒙JS自定義組件——局部放大圖片組件-開源基礎軟件社區

  • 給canvas組件綁定doubleclick雙擊事件,變化布爾型變量isZoom的值,用于切換局部放大模式和原始視圖。
zoomswitch() {
this.isZoom = !this.isZoom;
let changeview = new Image();
changeview.src = this.img.src;
if (true == this.isZoom) {
console.log("拉近鏡頭");
changeview.onload = () => {
ctx0.drawImage(changeview,
this.initwidth / 2 - this.initwidth / this.scale / 2,
this.initheight / 2 - this.initheight / this.scale / 2,
changeview.width / this.scale,
changeview.height / this.scale,
0, 0,
this.imageWidth, this.imageHeight);
};
}
else {
console.log("恢復全局視角");
changeview.onload = () => {
ctx0.drawImage(changeview,
0, 0,
this.initwidth, this.initheight,
0, 0,
this.imageWidth, this.imageHeight);
};
}
},
  • 給canvas組件綁定touchmove事件,獲取touchmove事件的觸點坐標,經過計算得出drawImage方法中的幾個關鍵參數值,并添加判斷條件,當觸點坐標過于接近邊緣時設置極限值。
getmove(event) {
if (false == this.isZoom) {
return;
}
this.points.x = (event.touches[0].localX - this.imageWidth / this.scale / 2) / this.imageWidth * this.initwidth;
this.points.y = (event.touches[0].localY - this.imageHeight / this.scale / 2) / this.imageHeight * this.initheight;
if (((this.imageWidth / this.scale / 2) > event.touches[0].localX)
|| ((this.imageWidth - this.imageWidth / this.scale / 2) < event.touches[0].localX)) {
if ((this.imageWidth / this.scale / 2) > event.touches[0].localX) {
this.points.x = 0;
}
else {
this.points.x = this.initwidth - this.initwidth / this.scale;
}
}
if (((this.imageHeight / this.scale / 2) > event.touches[0].localY)
|| ((this.imageHeight - this.imageHeight / this.scale / 2) < event.touches[0].localY)) {
if ((this.imageHeight / this.scale / 2) > event.touches[0].localY) {
this.points.y = 0;
}
else {
this.points.y = this.initheight - this.initheight / this.scale;
}
}
let newview = new Image();
newview.src = this.img.src;
newview.onload = () => {
ctx0.drawImage(newview,
this.points.x, this.points.y,
newview.width / this.scale, newview.height / this.scale,
0, 0,
this.imageWidth, this.imageHeight);
};
},

組件引用

  • 引用聲明
<element name="zoomimage" src="common/zoomimage/zoomimage.hml"></element>
  • 參數傳遞
<zoomimage image-width="660" image-height="550" image-src="common/images/mural.jpg" scale="3"></zoomimage>

結語

假如大家有自定義組件的創意,可以自己試著實現一下,或是在其他的項目中學習下別人是如何設計開發一個組件的,從一些簡單的組件入手對新手來說是很不錯的選擇。

項目倉庫鏈接 https://gitee.com/zhan-weisong/zoom-image。

文章相關附件可以點擊下面的原文鏈接前往下載:

https://ost.51cto.com/resource/2355。

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

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

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

責任編輯:jianghua 來源: 51CTO開源基礎軟件社區
相關推薦

2022-10-25 15:12:24

自定義組件鴻蒙

2021-11-01 10:21:36

鴻蒙HarmonyOS應用

2022-07-06 20:24:08

ArkUI計時組件

2022-05-26 14:50:15

ArkUITS擴展

2021-02-20 12:34:53

鴻蒙HarmonyOS應用開發

2022-04-24 15:17:56

鴻蒙操作系統

2022-02-21 15:16:30

HarmonyOS鴻蒙操作系統

2021-09-15 10:19:15

鴻蒙HarmonyOS應用

2021-01-11 11:36:23

鴻蒙HarmonyOSApp開發

2021-06-17 14:56:00

鴻蒙HarmonyOS應用

2009-06-24 15:13:36

自定義JSF組件

2023-02-20 15:20:43

啟動頁組件鴻蒙

2022-02-16 15:25:31

JS代碼Canvas鴻蒙

2022-02-16 16:09:12

鴻蒙游戲操作系統

2021-11-22 10:00:33

鴻蒙HarmonyOS應用

2022-06-20 15:43:45

switch開關鴻蒙

2021-12-21 15:22:22

鴻蒙HarmonyOS應用

2022-12-07 08:56:27

SpringMVC核心組件

2022-03-01 16:09:06

OpenHarmon鴻蒙單選組件

2009-06-25 14:53:35

自定義UI組件JSF框架
點贊
收藏

51CTO技術棧公眾號

日韩激情中文字幕| 中文国产一区| 亚洲精品久久久久中文字幕二区| 三级a三级三级三级a十八发禁止| 国产成人av一区二区| 日韩精品不卡| 国产z一区二区三区| 免费在线成人激情电影| 久久一区二区三区四区五区| 国产欧美精品一区二区三区介绍| 1313精品午夜理伦电影| 视频在线观看99| 欧美成人精品在线观看| 国产青草视频在线观看| 伊人久久成人| 日韩视频一区二区三区 | 免费福利视频一区| 麻豆成人在线看| 精品久久福利| 深夜福利国产精品| 亚洲综合伊人| 欧美激情手机在线视频| 99亚洲男女激情在线观看| 最近的2019中文字幕免费一页| 欧美成人h版| 久久精品一本久久99精品| 日韩成人一区| 欧美高清性猛交| 老牛国内精品亚洲成av人片| 欧美在线日韩在线| 老司机色在线视频| 亚洲图片欧美色图| 亚洲最大黄色| 欧美另类变人与禽xxxxx| 日韩成人三级视频| 丰满放荡岳乱妇91ww| 亚洲熟妇无码一区二区三区| 99久久精品免费看国产免费软件| 欧洲精品一区二区三区久久| 91偷拍与自偷拍精品| 九九热在线免费| 五月天久久久| 久久精品国产99国产精品| 日本成人看片网址| 麻豆成人久久精品二区三区红| 自拍偷拍一区二区三区| 不卡一区二区在线| 欧美色老女人| 欧美三级电影网站| 天堂av在线网站| 一区二区三区小说| 性欧美精品孕妇| 精品久久久久久亚洲综合网| 国产嫩草在线观看| 偷拍亚洲欧洲综合| 国产精品12345| 中文字幕日本不卡| 阿v免费在线观看| 亚洲精品日韩欧美| 欧美亚洲色图校园春色| 国产aⅴ精品一区二区三区色成熟| 蜜桃视频一区二区在线观看| 26uuu另类欧美亚洲曰本| 欧美13~18sex性hd| 日韩视频一区在线观看| 精品久久国产一区| 成人av网站观看| 狠狠色丁香久久婷婷综合_中| 欧美性猛交久久久乱大交小说 | 亚洲香肠在线观看| 欧美aaa免费| 欧美大荫蒂xxx| 韩国亚洲精品| 欧美老女人性视频| 国产精品观看| 久草热视频在线观看| 一本大道综合伊人精品热热 | 相泽南亚洲一区二区在线播放| 成人激情久久| 亚洲激情综合| 婷婷成人激情在线网| 亚洲自拍偷拍麻豆| 最近中文字幕mv免费高清在线| 亚洲欧美制服综合另类| 国产真实乱对白精彩久久| 奇米影视888狠狠狠777不卡| www.国产精品.com| 国产亚洲永久域名| av在线播放亚洲| 亚洲午夜精品网| 国产黄色在线观看| 欧美乱大交xxxxx| 国产精品毛片| 免费观看一二区视频网站| 日韩av在线免费| 亚洲中无吗在线| 成人免费乱码大片a毛片软件| 亚洲第一中文字幕| 午夜久久tv| 激情婷婷丁香| 成人一区二区视频| 国产小视频免费在线观看| 久久久精品在线观看| 亚洲日韩视频| 日韩欧美国产精品一区二区三区| 亚洲一区二区精品| 久久永久免费| 国产原创av在线| 精品视频免费看| 在线成人动漫av| 97精品国产97久久久久久| 日韩av午夜在线观看| 欧美极品一区二区| 亚洲三级在线播放| 免费毛片aaaaaa| 色吧影院999| 日韩高清一区二区| 国产黄在线看| 国产精品久久久91| 久久精品国产68国产精品亚洲| av动漫在线免费观看| 69av一区二区三区| 在线看片日韩| 国产精品四虎| 国产精品国产三级欧美二区| 亚洲专区一区| 国产系列在线观看| 亚洲综合第一页| 亚洲成人免费视| 国产剧情在线观看一区| 九色丨porny丨| 青青草原成人在线视频| 欧美激情在线一区二区三区| 亚洲精品aa| 97干在线视频| 综合国产在线观看| 成人午夜精品一区二区三区| 一级毛片久久久| 欧美性猛交内射兽交老熟妇| 亚洲欧美国产一本综合首页| 人人精品久久| 欧美成人精品免费| 在线播放日韩专区| 丁香一区二区三区| 色综合.com| 国产原创精品在线| 精品视频一区二区三区免费| 一级毛片免费高清中文字幕久久网| 7878视频在线观看| 国产精品激情自拍| 亚洲高清不卡在线| 欧美天天视频| 国语对白在线刺激| 天堂а√在线中文在线| 日韩在线精品视频| 国产精品进线69影院| 成人在线亚洲| 99久久久精品视频| www.精品av.com| 天天av综合| jyzzz在线观看视频| 精品卡一卡二| 中文在线免费一区三区高中清不卡| 疯狂欧洲av久久成人av电影 | 在线亚洲一区二区| 日韩一级大片| 精品一区二区中文字幕| 天天色综合成人网| 亚洲国产激情| 超碰高清在线| 男女爽爽爽视频| 91免费观看网站| 精品欧美乱码久久久久久1区2区| 国产成人综合亚洲91猫咪| 在线精品自拍| 国产在线视频资源| 综合久久国产| 欧美在线不卡区| 国产一区二区三区视频在线播放| 日本综合视频| 又黄又爽又色视频| 精品一区二区日本| 久久久黄色av| 色一情一乱一乱一91av| 久久免费黄色| 国内视频在线精品| 91涩漫在线观看| 777久久久精品一区二区三区| 国产精品色视频| 国产一区二区三区不卡在线观看 | 国产亚洲欧美日韩精品一区二区三区 | 久久香蕉av| 国产黄色av免费看| 水蜜桃亚洲精品| 国产成+人+综合+亚洲欧洲| 亚洲大尺度美女在线| 国产精品毛片高清在线完整版| 人人澡人人添人人爽一区二区| 北条麻妃在线观看| 中文字幕亚洲无线码在线一区|