封裝 用canvas繪製直線的函數--面向對象

来源:http://www.cnblogs.com/2010master/archive/2016/10/07/5936927.html
-Advertisement-
Play Games

效果圖: ...


 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>用面向對象的思想 封裝 在canvas繪製直線的函數</title>
 6 </head>
 7 <body>
 8     <canvas id="cv"></canvas>
 9 </body>
10 </html>
11 <script>
12     var cv = document.getElementById("cv");
13     cv.width = 600;
14     cv.height = 300;
15     cv.style.border = "1px solid red";
16     var ctx = cv.getContext("2d");
17 
18     //面向對象編程
19     //1 創建構造函數
20     //2 構造函數的原型設置
21     //3 調用的時候,通過 new+構造函數 來創建一個對象(實例)
22 
23     //構造繪製直線的函數
24     function drawLine(parameters) {
25         this.init(parameters);
26     }
27     //替換原型對象實現繼承
28     drawLine.prototype = {
29         constructor: drawLine,
30         init: function (parameters) {
31             this.ctx = parameters.ctx;
32             this.startX = parameters.points[0];
33             this.startY = parameters.points[1];
34             this.endX = parameters.points[2];
35             this.endY = parameters.points[3];
36             //以下3個屬性,可以不設置,用短路運算實現添加預設屬性值
37             this.lineWidth = parameters.lineWidth || 1;
38             this.lineDash = parameters.lineDash || [];
39             this.strokeStyle = parameters.strokeStyle || "#000";
40         },
41         //原型中,一般用來儲存對象的方法或者共有的屬性
42         stroke: function () {
43             this.ctx.beginPath();
44             this.ctx.moveTo(this.startX, this.startY);
45             this.ctx.lineTo(this.endX, this.endY);
46             this.ctx.lineWidth = this.lineWidth;
47             this.ctx.setLineDash(this.lineDash);
48             this.ctx.strokeStyle = this.strokeStyle;
49             this.ctx.stroke();
50         }
51     };
52 
53     //調用構造函數,傳入參數
54     var line = new drawLine({
55         ctx: ctx,
56         points: [100, 100, 300, 100],
57         lineDash: [4, 2],
58         strokeStyle: "red"
59     });
60     line.stroke();
61     var line2 = new drawLine({
62         ctx: ctx,
63         points: [100, 200, 300, 200],
64         lineWidth: 6
65     });
66     line2.stroke();
67 </script>

 效果圖:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CSS背景圖片定位其實對於每一位學習前端的同學來說,都已經非常熟悉了。網上鋪天蓋地的最常見的一種方案就是在父元素中relative,然後子元素absolute。這種方案當然好,不過帶來的一個缺點就是會改變元素的層級關係,如果在多個地方使用,這樣的層疊嵌套的關係會十分混亂。 先暫時拋棄那種方案,給大家 ...
  • 最近國慶7天 還原某麗說 APP PC端網頁(作業)時 全程使用bootstrap製作 也遇到了以前很少碰到過的問題 bootstrap 本身修改了某些預設樣式 即使在 未給標簽class命名某個bootstrap模板時 某些標簽也被修改過 這樣會容易使某些像我一樣的新手誤以為自己寫的代碼哪裡出了問 ...
  • 數據交互常見的字元串拼接 博主最近事情有點忙,趁現在有點空閑時間,來總結一下工作中遇到的字元串拼接問題。說到字元串的拼接無外乎一下幾種方式: 1.通過'+'進行拼接 var arr =['今天',昨天','明天']; $( ''+ ''+ ''+arr[0]+''+ ''+arr[1]+''+ '' ...
  • 在APP端上的輪播效果 跟 利用bootstrap的道理是一樣的 我是利用swiper製作的 跟上一篇 一樣 只需將swiper的JS css文件引入到html 再複製想要的某一種效果的代碼即可圖片中地址欄 就是swiper的官網地址 有興趣的可以去看下 有各種的特效 對於還未學習JS的 又想實現各 ...
  • //以下是一個鏈表類 function LinkedList(){ //Node表示要加入列表的項 var Node=function(element){ this.element=element; this.next=null; }; var length=0;//存儲列表項的數量 var hea ...
  • (-1)寫在前面 我用的是chrome49,如果你用的不是。可以嘗試換下瀏覽器首碼。IE在這方面的實現又特例獨行了。不想提及…,這篇是為後續做準備。 (0)快速使用 background-image:-webkit-linear-gradient(red,blue); 或者 background-i ...
  • AOS 是一個用於在頁面滾動的時候呈現元素動畫的工具庫,你可能會覺得它和 WOWJS 一樣,的確他們效果是類似的。但是AOS是 CSS3 動畫驅動的庫,當你滾動頁面的時候能讓元素動起來,當頁面滾回頂部的時候,元素能夠回到前一個狀態,如此達到迴圈動畫的效果。 ...
  • 效果圖如下: ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...