搜尋
首頁web前端js教程angularJS結合canvas畫圖範例_AngularJS

這裡跟大家分享一個angularJS結合canvas畫圖範例,效果非常不錯,讚一個先。

複製程式碼 程式碼如下:




   
 


 
   

   

   
    <script><br />                                 地      var APP = angular.module('APP', ['angular.directives-round-progress']).<br />      controller('MainCtrl', function($scope) {<br />         $scope.roundProgressData = {<br />           //這是初始化的資料;<br />           label: 11,<br />           percentage: 0.11<br />         }<br />         //透過監聽scope下的這個roundProgressData屬性, 對介面的canvas進行重繪;<br />         $scope.$watch('roundProgressData', function (newValue) {<br />           newValue.percentage = newValue.label / 100;<br />         }, true);<br />       });<br />     </script>
<script><br />     /*!<br />  * AngularJS Round Progress Directive<br />  *<br />  * Copyright 2013 Stephane Begaudeau<br />  * Released under the MIT license<br />  */<br /> angular.module('angular.directives-round-progress', []).directive('angRoundProgress', [function () {<br />   var compilationFunction = function (templateElement, templateAttributes, transclude) {<br />     if (templateElement.length === 1) {<br />       //初始化DOM模型, 包括初始化canvas等;<br />       var node = templateElement[0];<br />       var width = node.getAttribute('data-round-progress-width') || '400';<br />       var height = node.getAttribute('data-round-progress-height') || '400';<br />       var canvas = document.createElement('canvas');<br />       canvas.setAttribute('width', width);<br />       canvas.setAttribute('height', height);<br />       canvas.setAttribute('data-round-progress-model', node.getAttribute('data-round-progress-model'));<br />         //相當於demo, 取代原來的元素;<br />       node.parentNode.replaceChild(canvas, node);<br />         //各種設定;<br />       var outerCircleWidth = node.getAttribute('data-round-progress-outer-circle-width') || '20';<br />       var innerCircleWidth = node.getAttribute('data-round-progress-inner-circle-width') || '5';<br />       var outerCircleBackgroundColor = node.getAttribute('data-round-progress-outer-circle-background-color') || '#505769';<br />       var outerCircleForegroundColor = node.getAttribute('data-round-progress-outer-circle-foreground-color') || '#12eeb9';<br />       var innerCircleColor = node.getAttribute('data-round-progress-inner-circle-color') || '#505769';<br />       var labelColor = node.getAttribute('data-round-progress-label-color') || '#12eeb9';<br />       var outerCircleRadius = node.getAttribute('data-round-progress-outer-circle-radius') || '100';<br />       var innerCircleRadius = node.getAttribute('data-round-progress-inner-circle-radius') || '70';<br />       var labelFont = node.getAttribute('data-round-progress-label-font') || '50pt Calibri';<br />       return {<br />         pre: function preLink(scope, instanceElement, instanceAttributes, controller) {<br />           var expression = canvas.getAttribute('data-round-progress-model');<br />             //監聽模型, O了<br />             //就監聽一個屬性;<br />           scope.$watch(expression, function (newValue, oldValue) {<br />             // Create the content of the canvas<br />            //包含新建與重繪;<br />             var ctx = canvas.getContext('2d');<br />             ctx.clearRect(0, 0, 寬度, 高度);<br />             // 「背景」圓<br />             var x = 寬度 / 2;<br />             var y = 高度 / 2;<br />             ctx.beginPath();<br />             ctx.arc(x, y, parseInt(outerCircleRadius), 0, Math.PI * 2, false);<br />             ctx.lineWidth = parseInt(outerCircleWidth);<br />             ctx.筆畫樣式 = 外圓背景色;<br />             ctx.中風();<br />             // 內圓<br />             ctx.beginPath();<br />             ctx.arc(x, y, parseInt(innerCircleRadius), 0, Math.PI * 2, false);<br />             ctx.lineWidth = parseInt(innerCircleWidth);<br />             ctx.StrongStyle = innerCircleColor;<br />             ctx.中風();<br />             // 內部數字<br />             ctx.font = labelFont;<br />             ctx.textAlign = 'center';<br />             ctx.textBaseline = '中';<br />             ctx.fillStyle = labelColor;<br />             ctx.fillText(newValue.label, x, y);<br />             // 「前景」圓<br />             var startAngle = - (Math.PI / 2);<br />             var endAngle = ((Math.PI * 2 ) * newValue.percentage) - (Math.PI / 2);<br />             var 逆時針 = false;<br />             ctx.beginPath();<br />             ctx.arc(x, y, parseInt(outerCircleRadius), startAngle, endAngle, 逆時針);<br />             ctx.lineWidth = parseInt(outerCircleWidth);<br />             ctx.筆畫樣式=outerCircleForegroundColor;<br />             ctx.中風();<br />           },正確);<br />         },<br />         post: 函數 postLink(範圍、instanceElement、instanceAttributes、控制器) {}<br />       };<br />     }<br />   };<br />   var roundProgress = {<br />       //編譯內先對dom操作,再對$socpe進行監聽;<br />     編譯:編譯函數,<br />     替換:true<br />   };<br />   返回回合進度;<br /> }]);<br /> </腳本><br /> </身體><br /> <br /> </script>

以上就是angularJS結合canvas畫圖範例的全部程式碼了,希望大家能夠喜歡。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Vue和Canvas:如何实现手写签名和手势识别功能Vue和Canvas:如何实现手写签名和手势识别功能Jul 18, 2023 am 08:49 AM

Vue和Canvas:如何实现手写签名和手势识别功能引言:手写签名和手势识别功能在现代应用程序中越来越常见,它们可以为用户提供更加直观和自然的交互方式。Vue.js作为一款流行的前端框架,搭配Canvas元素可以实现这两个功能。本文将介绍如何使用Vue.js和Canvas元素来实现手写签名和手势识别功能,并给出相应的代码示例。一、手写签名功能实现要实现手写签

如何利用Vue和Canvas创建逼真的天气动态背景如何利用Vue和Canvas创建逼真的天气动态背景Jul 17, 2023 am 08:33 AM

如何利用Vue和Canvas创建逼真的天气动态背景引言:在现代网页设计中,动态背景效果是吸引用户眼球的重要元素之一。本文将介绍如何利用Vue和Canvas技术来创建一个逼真的天气动态背景效果。通过代码示例,你将学习如何编写Vue组件和利用Canvas绘制不同天气场景,从而实现一个独特而吸引人的背景效果。步骤一:创建Vue项目首先,我们需要创建一个Vue项目。

Vue和Canvas:如何实现视频播放器的定制化界面Vue和Canvas:如何实现视频播放器的定制化界面Jul 18, 2023 pm 02:49 PM

Vue和Canvas:如何实现视频播放器的定制化界面引言:在现代互联网时代,视频已经成为人们生活中必不可少的一部分。为了提供良好的用户体验,许多网站和应用程序都提供了自定义的视频播放器界面。本文将介绍如何使用Vue和Canvas技术实现一个定制化的视频播放器界面。一、前期准备在开始之前,您需要确保您已经安装了Vue和Canvas,并且熟悉这两种技术的基本用法

Vue和Canvas:如何实现图片的马赛克效果Vue和Canvas:如何实现图片的马赛克效果Jul 16, 2023 pm 10:17 PM

Vue和Canvas:如何实现图片的马赛克效果引言:随着Web技术的不断发展,越来越多的人开始使用Vue框架来构建交互式的前端应用。而在前端开发中,常常需要为用户提供图片处理的功能。本文将介绍如何利用Vue和Canvas实现图片的马赛克效果,为用户带来更好的视觉体验。一、马赛克效果概述马赛克效果是一种将图像的细节部分进行像素化处理,使得整个图像变得模糊和抽象

2022年最新5款的angularjs教程从入门到精通2022年最新5款的angularjs教程从入门到精通Jun 15, 2017 pm 05:50 PM

Javascript 是一个非常有个性的语言. 无论是从代码的组织, 还是代码的编程范式, 还是面向对象理论都独具一格. 而很早就在争论的Javascript 是不是面向对象语言这个问题, 显然已有答案. 但是, 即使 Javascript 叱咤风云二十年, 如果想要看懂 jQuery, Angularjs, 甚至是 React 等流行框架, 观看《黑马云课堂JavaScript 高级框架设计视频教程》就对了。

如何使用Vue和Canvas开发网页截图工具如何使用Vue和Canvas开发网页截图工具Jul 19, 2023 am 08:36 AM

如何使用Vue和Canvas开发网页截图工具简介:随着互联网的发展,网页截图工具在我们的日常生活中扮演着越来越重要的角色。它们可以用来捕捉网页上的信息、制作教程或者分享你的见解。本文将介绍如何使用Vue和Canvas来开发一个简单的网页截图工具,以帮助读者了解如何实现这个常见但又有趣的功能。准备工作:在开始之前,我们需要准备好以下的开发环境和工具:安装Nod

如何利用Vue和Canvas创建炫酷的3D旋转图形如何利用Vue和Canvas创建炫酷的3D旋转图形Jul 17, 2023 pm 03:42 PM

如何利用Vue和Canvas创建炫酷的3D旋转图形引言:Vue和Canvas是两个非常强大的前端技术,它们分别擅长处理页面渲染和图像绘制。本文将介绍如何结合Vue和Canvas来创建炫酷的3D旋转图形效果。我们将探讨如何使用Vue来构建基本页面结构,以及如何使用Canvas来实现3D图形的绘制和旋转效果。通过学习本文,你将能够了解如何利用Vue和Canvas

如何利用Vue和Canvas创建优雅的图片轮播组件如何利用Vue和Canvas创建优雅的图片轮播组件Jul 19, 2023 pm 02:29 PM

如何利用Vue和Canvas创建优雅的图片轮播组件图片轮播是网页开发中常见的功能之一,它能够给用户带来美观和流畅的视觉体验。在本文中,我将介绍如何利用Vue和Canvas技术创建一个优雅的图片轮播组件。首先,我们需要引入Vue框架和Canvas元素。在HTML文件中,添加以下代码:&lt;divid=&quot;app&quot;&gt;&lt;ca

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。