最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中的Canvas使用及說明

 更新時間:2025年10月28日 10:04:43   作者:m0_63466615  
文章詳細(xì)介紹了HTML5 Canvas的模板區(qū)、樣式區(qū)和腳本區(qū)的使用方法,包括如何設(shè)置Canvas的寬高、水平居中、獲取Canvas元素、繪制圖形(直線、矩形、圓、文字)、轉(zhuǎn)換為Base64、下載圖片以及加載圖片并添加文字水印等操作

1.模板區(qū)(template)

(1) canvas的寬高只能通過在行內(nèi)設(shè)置width和height,不能使用css設(shè)置,否則會導(dǎo)致圖形拉伸

(2)當(dāng)?shù)桶姹镜臑g覽器不支持canvas標(biāo)記時,會把canvas展示為一個普通的標(biāo)記,就會顯示在canvas內(nèi)部寫的提示語,而如果瀏覽器支持canvas,內(nèi)部的提示語則不會顯示

<canvas width="700" height="700" ref="canvas">
        您的瀏覽器版本過低,不支持canvas,請升級瀏覽器或使用chrome瀏覽器
</canvas>
<button @click="save">保存Canvas</button>

2.樣式區(qū)(style區(qū))

canvas實際上是一個內(nèi)聯(lián)元素,要設(shè)置它在頁面水平居中,需要把它設(shè)置為塊級元素,(再次聲明,不可以在css里設(shè)置canvas的寬高)

canvas {
    display: block;
    margin: 0 auto;
    border: solid 2px #999;
}

3.腳本區(qū)(script區(qū))

(1)獲得canvas

<script setup>
import { onMounted, ref } from 'vue'; // 從vue導(dǎo)入鉤子函數(shù)和ref

// 找到canvas節(jié)點,可以使用js的document尋找,也可以使用vue的ref尋找

const canvas = document.querySelector('canvas')

const canvas = ref(null)

</script>

兩個的區(qū)別就是:

用ref找到的canvas使用時需要使用canvas.value,

而document.querySelector找到的canvas使用時不需要加.value

(2)獲取畫筆

const ctx = canvas.getContext('2d') // 使用document找到的

const ctx = canvas.value.getContext('2d') // 使用ref找到的

(3)畫線(兩點確定一條直線)

ctx.beginpath() // 開啟一條路徑
ctx.moveTo(x1, y1) // 將畫筆移動到一個點
ctx.lineTo(x2, y2) // 將畫筆移動到第二個點
ctx.strokeStyle = '#333' // 設(shè)置描邊的顏色
ctx.width = 3 // 設(shè)置線寬,取值為數(shù)值
ctx.stroke() // 開始畫
ctx.closePath() // 關(guān)閉路徑

(4)畫矩形

ctx.beiginPath() // 如果不重新開啟路徑,會和上一次畫的連上
ctx.fillStyle = '#0f0' // 填充樣式
ctx.fillRect(x1, y1, x2, y2) // 填充
ctx.closePath()

(5)擦除

ctx.clearRect(x1, y1, x2, y2)

(6)畫圓

ctx.beginPath() // 開啟新路徑
ctx.arc(x1, y1, 圓形半徑, 角度值1, 角度值2,順時針還是逆時針)
// 例如
ctx.arc(100, 100, 100, 0, Math.PI, true);
ctx.stroke()

(7)畫字(寫字)

ctx.font = '30px 微軟雅黑'

ctx.fillText('文字內(nèi)容', x1, y1)

ctx.fillText('canvas',100, 100) // 實心文字

ctx.strokeText('canvas', 100, 100) // 空心文字

(8)canvas轉(zhuǎn)換base64地址

//用ref找到的元素,要加.value 
let base64 = canvas.value.toDataURL('image/jpeg', 1);

(9)下載canvas畫的圖

// 模板區(qū)綁定的save方法
cosnt save = () => {
    canvas.value.toBlob(blob => {
        let blobURL = URL.createObjectURL(blob);
        let aNode = document.createElement('a')
        aNode.href = blobURL 
        aNode.download = 'Canvas圖片'
        aNode.click()
    })
}

(10)加載圖片并加文字水印

let img = new Image()
image.src = '要加載的圖片路徑'
image.onload = () => {
    ctx.beginPath()
    ctx.drawImage(img, x1, y1)
    ctx.font = '30px 宋體'
    ctx.fillText('這是水印', x1, y1)
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解vue模擬加載更多功能(數(shù)據(jù)追加)

    詳解vue模擬加載更多功能(數(shù)據(jù)追加)

    本篇文章主要介紹了vue模擬加載更多功能(數(shù)據(jù)追加),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 老生常談Vue中的偵聽器watch

    老生常談Vue中的偵聽器watch

    開發(fā)中我們在data返回的對象中定義了數(shù)據(jù),這個數(shù)據(jù)通過插值語法等方式綁定到template中,這篇文章主要介紹了Vue中的偵聽器watch,需要的朋友可以參考下
    2022-10-10
  • Vue之文件加載執(zhí)行全流程

    Vue之文件加載執(zhí)行全流程

    這篇文章主要介紹了Vue之文件加載執(zhí)行全流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue3封裝輪播圖組件的方法

    vue3封裝輪播圖組件的方法

    這篇文章主要為大家詳細(xì)介紹了vue3封裝輪播圖組件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue實現(xiàn)未登錄跳轉(zhuǎn)到登錄頁的示例代碼

    Vue實現(xiàn)未登錄跳轉(zhuǎn)到登錄頁的示例代碼

    本文主要介紹了Vue實現(xiàn)未登錄跳轉(zhuǎn)到登錄頁的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Vue中實現(xiàn)動態(tài)右鍵菜單的示例代碼

    Vue中實現(xiàn)動態(tài)右鍵菜單的示例代碼

    在前端開發(fā)中,實現(xiàn)自定義右鍵菜單能夠為用戶提供更多功能選項,本文就來介紹了Vue中實現(xiàn)動態(tài)右鍵菜單的示例代碼,感興趣的可以了解一下
    2024-11-11
  • Vue開發(fā)中遇到的跨域問題及解決方法

    Vue開發(fā)中遇到的跨域問題及解決方法

    在本篇文章里小編給大家整理的是關(guān)于Vue開發(fā)中遇到的跨域問題及解決方法,需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • vue中data改變后讓視圖同步更新的方法

    vue中data改變后讓視圖同步更新的方法

    這篇文章主要給大家介紹了關(guān)于vue中data改變后讓視圖同步更新的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vue-cli腳手架創(chuàng)建項目遇到的坑及解決

    vue-cli腳手架創(chuàng)建項目遇到的坑及解決

    這篇文章主要介紹了vue-cli腳手架創(chuàng)建項目遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue封裝組件之上傳圖片組件

    vue封裝組件之上傳圖片組件

    這篇文章主要為大家詳細(xì)介紹了vue封裝組件之上傳圖片組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論

台安县| 漠河县| 康乐县| 崇左市| 庆安县| 布拖县| 开鲁县| 海丰县| 定边县| 蒙自县| 通化市| 南阳市| 曲水县| 达拉特旗| 永定县| 灵川县| 全椒县| 西乡县| 青阳县| 津市市| 安达市| 寿宁县| 大余县| 中方县| 耿马| 石楼县| 准格尔旗| 吉安县| 扶余县| 平度市| 中牟县| 恩平市| 靖西县| 巫溪县| 雷山县| 崇州市| 鄂托克前旗| 松溪县| 莱阳市| 阳新县| 桐乡市|