1. 程式人生 > >canvas 二 canvas繪製錶盤,及canvas曲線的繪製

canvas 二 canvas繪製錶盤,及canvas曲線的繪製

/**
 * 繪製圓
 * arc(x,y,半徑,起始弧度,結束弧度,旋轉方向)
 * 		x,y起始位置
 * 		弧度與角度的關係 : 弧度 = 角度*Math.PI/180
 * 		旋轉方向:順時針(預設false)、逆時針(true)
 */
var oc = document.getElementById('canvas');
var ogc = oc.getContext('2d');
//例項1繪製扇形
ogc.moveTo(200,200);
ogc.arc(200,200,150,0,90*Math.PI/180,false);
ogc.arc(200,200,150,0,90*Math.PI/180,true);
ogc.stroke();
//canvas錶盤
function toDraw(){
	var x = 200;
	var y = 200;
	var r = 150;
	//9每次執行時清空畫布
	ogc.clearRect(0,0,oc.width,oc.height);
	//8獲取時間
	var oDate = new Date();
	var oHours = oDate.getHours();
	var oMin = oDate.getMinutes();
	var oSec = oDate.getSeconds();
	var oHoursValue = (-90+oHours*30 + oMin/2)*Math.PI/180; 
	var oMinvalue = (-90+oMin*6)*Math.PI/180;
	var oSecvalue = (-90+oSec*6)*Math.PI/180;
	/*ogc.moveTo(x,y);
	ogc.arc(x,y,r,0,6*Math.PI/180,false);

	ogc.moveTo(x,y);
	ogc.arc(x,y,r,6*Math.PI/180,12*Math.PI*180,true)*/
	//1繪製錶盤
	ogc.beginPath();

	for(var i=0;i<60;i++){
		ogc.moveTo(x,y);
		ogc.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);

	}
	ogc.closePath();
	ogc.stroke();
	//2去掉圓點到刻度的線條,畫圓並填充顏色覆蓋
	ogc.fillStyle = 'white';
	ogc.beginPath();
	ogc.moveTo(x,y);
	ogc.arc(x,y,r*19/20,0,360*Math.PI/180,false);
	ogc.closePath();
	ogc.fill();
	//3繪製時針刻度
	ogc.beginPath();
	ogc.lineWidth=2;
	for(var i=0;i<12;i++){
		ogc.moveTo(x,y);
		ogc.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false);

	}
	ogc.closePath();
	ogc.stroke();
	//4去掉時針刻度的線條,畫圓並填充顏色覆蓋
	ogc.fillStyle = 'white';
	ogc.beginPath();
	ogc.moveTo(x,y);
	ogc.arc(x,y,r*18/20,0,360*Math.PI/180,false);
	ogc.closePath();
	ogc.fill();
	//5繪製時針
	ogc.beginPath();
	ogc.lineWidth = 5;
	ogc.moveTo(x,y);
	ogc.arc(x,y,r*8/20,oHoursValue,oHoursValue,false);
	ogc.closePath();
	ogc.stroke();
	// 6繪製分針
	ogc.beginPath();
	ogc.lineWidth = 3;
	ogc.moveTo(x,y);
	ogc.arc(x,y,r*12/20,oMinvalue,oMinvalue,false);
	ogc.closePath();
	ogc.stroke();
	// 7繪製秒針
	ogc.beginPath();
	ogc.lineWidth = 2;
	ogc.moveTo(x,y);
	ogc.arc(x,y,r*16/20,oSecvalue,oSecvalue,false);
	ogc.closePath();
	ogc.stroke();
	
}
toDraw();
setInterval(function(){
	toDraw();
},1000);
/////////////////////////////////////////
/**
 * 繪製曲線
 * artTo(x1,y1,x2,y2,r);
 * 		x1,y1第一組座標
 * 		x2,y2第二組座標
 * 		r:半徑
 *貝塞爾曲線
 * quadraticCurveTo(dx,dy,x1,y1)
 * 		貝塞爾曲線:第一組控制點,第二組控制點
 * bezierCurveTo()
 * 		貝塞爾曲線:第一組控制點,第二組控制點,第三組結束點
 *
 * canvas變換
 * translate,rotate,scale
 */
ogc.moveTo(100,200);
ogc.arcTo(100,100,200,100,50);
ogc.stroke();
//quadraticCurveTo
ogc.moveTo(100,200);
ogc.quadrativCurveTo(100,200);
ogc.stroke();
//bezierCurzeTo
ogc.moveTo(100,200);
ogc.bezierCurveTo(100,100,200,200,200,100);
ogc.stroke();		

//canvas變換
ogc.translate(100,100);
ogc.rotate(45*Math.PI/180);
ogc.scale(2,1);
ogc.fillRect(0,0,100,100);

相關推薦

canvas canvas繪製錶盤canvas曲線繪製

/** * 繪製圓 * arc(x,y,半徑,起始弧度,結束弧度,旋轉方向) * x,y起始位置 * 弧度與角度的關係 : 弧度 = 角度*Math.PI/180 * 旋轉方向:順時針(預設false)、逆時針(true) */ var oc = d

canvas實現刮刮卡實現canvas擦除

其實這個問題,一直以來都不是問題,因為以前用canvas做的擦除都是針對手機滿螢幕來擦除,所以一直沒有踩到這個坑~~~ 網路上的擦除效果其實寫的都挺泛泛的,沒有特別詳細的,這裡給你們貼一下擦除的原始碼,順便把坑也給你們先預填了,嘿嘿。 這裡面最大的坑就是,如果只是擦除一

繪製直線基本的資料型別

#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <iostream

小程序canvas使用一些坑以及自己的一些小總結

開發 背景圖 height java gda 數據 利用 let 宋體 自己做了一個小程序,主要用於給頭像加圖標的那種,和qq似的,主要用canvas做的, 第一回用,掉了很多坑,所以今天系統的總結一下自己所做的,如果大家有不理解的地方,歡迎提問 canvas可以用來畫一

Android開發 ImageView上繪製旋轉圓環(透明度不同的旋轉圓環利用canvas drawArc實現)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

圖片合成使用canvas做一個漂亮的維碼分享

timg.jpgmycode.jpg<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <st

HTML5畫布Canvas線段、矩形、弧形貝塞爾曲線等簡單圖形繪製

HTML5中最有意思的就是這個canvas了 通過它我們可以畫自己想要的圖形 它也是十分重要的技術 應用於遊戲、圖表等等 或者繪製各種酷炫的東西 這裡給大家分享一個網站 傳送門 裡面都是canvas技術繪製的圖形畫布建立canvas是html的一個標籤 是一個圖形容器 首先要

Canvas---Canvas繪製鐘錶儀表盤

Canvas繪製鐘錶,儀表盤。 《HTML5 Canvas核心技術》這本書在程式碼方面,沒有絲毫註解,我感覺看的挺費勁,如果你想買書的話,最好還是先下本pdf看看吧。 下面是錶盤的繪製圖解 函式順序是按照上圖的順序來寫的,最後我為儀表加上了樣式。 原始碼: <!DO

網頁html5,canvasjs 動態繪製柱形圖

<!DOCTYPE html>     <head><title>chart demo</title>         <style>             #chartContainer{          

RectF、Rect ;Matrix;PaintCanvasPointF與Point

> RectF、Rect 和Matrix,Paint及Canvas -- Rect和RectF區別:(矩形) (1).精度不一樣。Rect是使用int型別作為數值,RectF是使用float型別作為數值。  (2).兩個型別提供的方法也不是完全一致。

淺談安卓Canvas模擬心電圖的繪製

哇,這哥們好屌,這文章寫的真好,可能很多同學心中曾經有過類似的感覺,其實心動不如行動,擼起袖子,就是幹! 說到安卓中繪圖,大家可能最先想到的就是canvas和surfaceview,今天咱們先一起看下

自己定義View時用到Paint Canvas的一些溫故簡單的幀動畫(動畫一 &quot;掏糞男孩Gif&quot;順便再提提onWindowFocusChanged)

eat android 內容 rri generated 簡單的 fadein spl onclick 轉載請註明出處:王亟亟的大牛之路 之前在繪畫的過程中提到了靜態的旋轉啊,縮放啊,平移等一些效果。那麽自己定義的View當然也有動態的效果也就是我們的

context擴展canvas的瀏覽器兼容

tro text 使用方法 can get http 瀏覽器 cti 通過 1、利用 CanvasRenderingContext2D.prototype 對context進行擴展 1 CanvasRenderingContext2D.prototype.drawLi

canvas跨域完美解決微信頭像解決跨域

現在前端技術發展的越來越快,很多圖片合成這種耗費伺服器效能的,都可以移動到前端進行了合成了。而且合成很方便,我們利用 canvas 可以實現好多東西。 自動打算利用前端來合成圖片,在網上就找到了 html2canvas,大家可以試試,很簡單。 前端 canvas 經常會遇到 『圖片跨域』 的問題

HTML5乾貨整理詳解canvas的學習方法學習曲線(收藏儲存)

還記得在過去的Web前端開發中,如果你需要繪圖或者生成相關圖形的話,使用Flash可能是你唯一或者說最強大的實現方式,而在近些年的技術熱點HTML5標準中,(畫布)能夠更加方便的幫助你實現2D繪製圖形影象及其各種動畫效果功能。 首先我們先來了解一下什麼是HTML Canvas? 我們可以在HTML中使用屬

基於canvas的圖片裁剪上傳刪除

專案需求:欲實現PC端圖片從本地上傳,在裁剪框中裁剪成一定比例的圖片,該圖片會在微信端同步展示,考慮手機的螢幕適配,需要寬度為640px(只需修改一下引數即可),本文以寬320px為例; 實現方式:點選+框,圖片載入在canvas畫布,前端按照320/110比例裁剪圖片,裁剪後將base64編碼傳

【前端】利用Canvas給圖片新增水印支援拖拽、編輯、縮放與刪除

利用Canvas給圖片新增水印,支援拖拽、編輯、縮放與刪除。 難點一: 如何在偽元素after“刪除按鈕“上新增點選事件。 通過滑鼠點選位置event中offsetX屬性獲得其偏離元素距離,與元素寬度做比較。若大於元素寬度,則點選在了偽元素上,否則點選到正常元

《Javascript 高階程式設計(第三版)》筆記0x1B 使用 Canvas 繪圖:基本用法2D上下文

目錄 基本用法 2D 上下文     填充和描邊     繪製矩形     繪製路徑     繪製文字     變換

幾種常見計算機影象處理操作的原理canvas實現

2013-09-21 • 技術文章 • 評論 前言 即使沒有計算機圖形學基礎知識的讀者也完全不用擔心您是否適合閱讀此文,本文的性質屬於科普文章,將為您揭開諸如Photoshop、Fireworks、GIMP等軟體的影象處理操作的神祕面紗。之前您也許對這些處理技術感到驚

Android 的Paint(畫筆)Canvas(畫布)

要繪圖,首先得調整畫筆,待畫筆調整好之後,再將影象繪製到畫布上,這樣才可以顯示在手機螢幕上。Android 中的畫筆是 Paint類,Paint 中包含了很多方法對其屬性進行設定,主要方法如下:   setAntiAlias: 設定畫筆的鋸齒效果。     setColor: 設定畫筆顏色     setA