1. 程式人生 > >canvas中的清空畫布

canvas中的清空畫布

使用下面方法:
1. context.clearRect(x,y,width,height);
2. save() 和 restore()
3. getImageData()和putImageData()

第一種方法:適合按區域清空,比如整個畫布。
第二種方法:就像一個儲存畫布狀態棧,可以撤銷,恢復。是一對 操作。
第三種方法: 和第二種有點相似,不是成對出現(putImageData()可以出現多次)。

第三種用法例子:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta
charset="UTF-8">
<title>畫直線</title> <style> canvas { border: 1px solid; } </style> </head> <body> <p>滑鼠畫直線</p> <canvas width="800" height="600"></canvas> <script> var canvas = document.querySelector('canvas'), context = canvas.getContext('2d'
), isDrag = false, startPoint = {}; canvas.onmousedown = function () { isDrag = true; startPoint.x = event.x; startPoint.y = event.y; } canvas.onmousemove = function() { if(isDrag) { context.beginPath(); context.moveTo(startPoint.x, startPoint.y); context.lineTo(event.x, event.y); context.stroke(); } } canvas.onmouseup = function
() {
isDrag = false; }
</script> </body> </html>

這裡寫圖片描述

    <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>畫直線</title>
  <style>
    canvas {
      border: 1px solid;
    }
  </style>
</head>
<body>
   <p>滑鼠畫直線</p>
  <canvas width="800" height="600"></canvas>
  <script>
  var canvas = document.querySelector('canvas'),
      context = canvas.getContext('2d'),
      isDrag = false,
      startPoint = {},
      restorePoint = {};


  canvas.onmousedown = function () {
    isDrag = true;
    startPoint.x = event.x;
    startPoint.y = event.y;
    restorePoint = context.getImageData(0, 0, canvas.width, canvas.height);
  }

  canvas.onmousemove = function() {
    if(isDrag) {
      context.putImageData(restorePoint, 0, 0);
      context.beginPath();
      context.moveTo(startPoint.x, startPoint.y);
      context.lineTo(event.x, event.y);
      context.stroke();
    }
  }

  canvas.onmouseup = function() {
    isDrag = false;
  }
  </script>
</body>
</html>

這裡寫圖片描述

相關推薦

canvas畫布

使用下面方法: 1. context.clearRect(x,y,width,height); 2. save() 和 restore() 3. getImageData()和putImag

js數組的方法

數組 清空 js第一種:利用的是數組的splice()方法第二種方法:註意在js裏面數組的長度是可讀可寫的。跟其他的語言不同。第三方法:實際上是將arr3指向了一個新的數組,這個數組中是空的,所以看起來像是被清空了,實際上並不能算是清空數組了。那麽之前的數組沒有其他的引用指向它,將被垃圾回收。js中清空數組的

[譯]在Linux或刪除大檔案內容的5種方法

原文來源: https://www.tecmint.com/empty-delete-file-content-linux/ 有時,在處理Linux終端中的檔案時,您可能希望清除檔案的內容,而無需使用任何Linux命令列編輯器開啟它。怎麼能實現這一目標?在本文中,我們將藉助一些有用的命令,通過幾種不同的方式

vue物件的方法

js中清空物件方法  1. 使用 delete 操作符 var obj={ name:'cc', age:12, gender:'famle' } for(var key in obj){ delete obj[key]; } 2. 使用字

Javaconsole控制檯的程式碼片段

該操作時讓機器人模擬人手按快捷鍵來實現的 void clear() { try { Robot r = new Robot(); r.mousePress(InputEvent.BUTTON3_DOWN_MAS

vueinput標籤file的值

<input type="file" ref="clearFile" name="file" id="file"> <button @click="clearFile"><

Qchart 繪圖

  最近使用Qchart畫圖也是要畫瘋的節奏,最近又碰到了疑難雜症,在網chart匯入線條後,想把他們清除掉,結果發現怎麼也清除不了, 在別的部落格上說用這樣的函式, m_series1->clear(); m_scatseries1->clear();

JavaScript陣列的三種方式

方式1,splice var ary = [1,2,3,4]; ary.splice(0,ary.length); console.log(ary);// 輸出 [],空陣列,即被清空了 方式2,length賦值為0 這種方式很有意思,其它語言如Java,其陣列的l

JS字串前後空格

在JS 操作的時候 長期會有對字串的操作, 但是在JS 中不像在C#中 有字串的方法 Trim() 來對字串進行處理 。  所以自己寫一個對字串前後清楚空格的方法還是有必要的  以免以後忘記了  在這

Js檔案上傳欄位(input type=file )

   表單中type=file欄位的value屬性無法由js來附值,一但選中某個檔案後,如果使用者不手動去清空那麼這個值將保留,提交表單時對應檔案也會被提交上去.當然在伺服器上會再次驗證,不過為了避免上傳不必要的的檔案,還是有必要提前在客戶端驗證失敗後將檔案上傳欄位清空. 

android所有activity棧

方法一 :           ActivityManager am = (ActivityManager)getSystemService(TipsActivity.this.ACTIVITY_SERVICE);                     am.rest

memcached和redis快取

memcached: 命令列使用 flush_all 將所有的資料都設定為過期,但記憶體空間不釋放 redis: 命令列使用   (1)  flush all  刪除所有資料庫的所有key (2)  flushdb 刪除當前庫或所選庫的所有key

Asp Net所有textbox的幾種方法

jquery rip length fun sha apt instance == view 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net fore

Chart.jscanvas畫布 clearRect()等canvas方法擦除失敗(附完整程式碼)

一、直接移除DOM物件方式 1.原因 clearRect()等canvas方法清空失敗 2.方法 移除dom物件的方式 $('#canvas').remove(); $('#container

怎麽恢復手機的文件 手機數據恢復方法

隨著手機辦公越來越方便快捷化,手機也成為辦公的重要工具,裏面也保存著我們的重要文件數據。當我們在清理手機數據的時候,總是會誤清空手機裏的文件數據,比如上學期間,學習發的各種活動通知和考試安排。這文件被清空,就真的很麻煩。那我們該怎麽恢復手機中被誤刪除的文件呢? 強力數據恢復軟件是一款

怎麽恢復安卓手機的照片? 手機照片誤刪怎麽恢復

在安卓手機卡頓或下載不了軟件顯示內存不夠的時候,我們大多數人的做法就是將安卓手機還原成出廠設置。這就意味著手機中的照片被全部清空了,那被清空的手機照片還能恢復嗎?我們該怎麽恢復手機中被清空的照片? 借助互盾照片恢復軟件免費版,能有效的恢復安卓手機中被誤清理的照片。操作簡單,電

如何找回被誤回收站的文件

回收站 文件  回收站清空的文件怎麽找回?我相信不少小夥伴都想知道,回收站裏清空的文件該怎麽找回,雖然回收站裏的文件大多是我們不會再使用到的文件,但是偶爾也會有一些我們可能會用到的文件被誤刪了,因此怎麽恢復回收站清空的文件呢? 其實只要你學會利用資源,借助工具,就能恢復被清空的回收站。我們借助強力回收

Canvas

改變 綁定 clear map mod xfermode ear 清空 bit 當canvs與bitmap綁定時,canvas上繪制會導致bitmap改變內容,而且內容時疊加的。這時候需要清空bitmap上的內容,可以用以下做法。  Paint paint = new Pa

Mysql表(truncate)與刪除表數據(delete)的區別

重置 mysq 原因 nts 整體 觸發器 操作 兩種方法 字段 刪除表中數據: truncate table wp_comments; delete * from wp_comments; 兩種方法的區別: 其中truncate操作中的table可以省略,delete

vueJS加jquery使用構建項目v-model綁定的值無法

mode ace put pan 焦點 HA cti stat 事件 怎樣清空v-model綁定的input值緩存 在vue+bootstrap+jquery構架您的項目中,列表中formatter格式化單元格顯示的操作按鈕綁定bootstrap模態框,在模態框彈出的頁面中