【MUI】Y-R,mui學(xué)習(xí)實(shí)踐(2)

canvas 實(shí)驗(yàn)

本次跟mui關(guān)系不大,純屬本人誤入歧途;

上次的圖

根據(jù)上次的圖猶豫糾結(jié)了好久(反正沒(méi)上班),還是用img做了bg;
內(nèi)容里的標(biāo)題文字很好處理就不多說(shuō)了,上面有圖看到?jīng)],小人沙發(fā) 各種背景特效光圈;
哼,設(shè)計(jì)一點(diǎn)都不考慮我拿圖片糊弄的后果,果斷我決定試試canvas;
之前拿canvas都是花花圓圈 三角直線 這次稍稍復(fù)雜點(diǎn);

第一道佛光

首先HTML里搞個(gè)canvas出來(lái) 主要的是ID 樣式主要是用來(lái)定位的;

<canvas id="guide_bg_1" class="guide-canvas" width="320" height="320" ></canvas>

獲取canvas 獲取canvas的2D上下文 (翻譯的書(shū)上說(shuō)是上下文,我覺(jué)得翻譯成環(huán)境比較好理解)

var canvas = document.getElementById(id);
var context = canvas.getContext('2d');

為了避免有人誤入歧途和噴我 getElementById(),里面之所以寫(xiě)id因?yàn)樗莻€(gè)參數(shù),咳咳

/**
 * guide各頁(yè)canvas初始化;參數(shù) obj的屬性:num:Number,color:Array,bgcolor:Array,content:Array
 * @param {IDString} id
 * @param {IDString} img_id
 * @param {Object} obj
 */
function guideCanvasInit(id,img_id,obj) {}

另外小秀一下我的多余做功,看到那個(gè)注釋沒(méi),恩,我用的也不大熟,就是模仿學(xué)習(xí)爭(zhēng)取早日用的爐火純青;作用?看圖:

純粹瞎搞

具體請(qǐng)參考:JSDOC+規(guī)范

其實(shí)我看mui.js文件里面就在用,其實(shí)沒(méi)事練練,說(shuō)不準(zhǔn)自己就可能搞點(diǎn)什么。
繼續(xù),canvas的上下文搞好了,我們?cè)摦?huà)了

var canvas = document.getElementById(id);
    var context = canvas.getContext('2d');
    /*var tGrd = context.createLinearGradient(150, 0, 150, 300);
    tGrd.addColorStop(0, '#f0689d');
    tGrd.addColorStop(0.8, '#ffffff');*/

    context.lineWidth = "5";//線條寬度
    context.strokeStyle = #000;//線條顏色
    
    context.beginPath();//繪制開(kāi)始
    context.arc(160, 150, 145, 0, 2 * Math.PI, false);
//arc(x,y,r,starAngle,endAngle,true/false)xy坐標(biāo),r半徑,起始點(diǎn)結(jié)束點(diǎn),true逆時(shí)針 false順時(shí)針
    context.stroke();//繪制線條
    context.closePath();//繪制結(jié)束
黑圈

由圖可知(讓我想起上初中做數(shù)學(xué)題):

難點(diǎn)一:如何使線成為漸變的

于是Y-R又開(kāi)始了新一輪的進(jìn)食(啃書(shū));
于是在 《Javascript 高級(jí)程序設(shè)計(jì)(第三版)》15.2.8 中找到了關(guān)于canvas漸變相關(guān)的東西

createLinearGradient()方法

這個(gè)方法接收4個(gè)參數(shù):起點(diǎn)的X坐標(biāo)、起點(diǎn)的Y坐標(biāo)、終點(diǎn)的X坐標(biāo)、終點(diǎn)的Y坐標(biāo)。

還是上圖吧


它是由(30,30)到(50,50)漸變

如圖所示,它賦值給fillStyle屬性,由fillRect()方法填充的;
憑啥你fill能干我stroke不能干,試試唄就,大不了就錯(cuò);
注意addColorStop()方法的靈活使用;

var canvas = document.getElementById(id);
    var context = canvas.getContext('2d');
    var tGrd = context.createLinearGradient(150, 0, 150, 300);
    tGrd.addColorStop(0, '#f0689d');
    tGrd.addColorStop(0.8, '#ffffff');

    context.lineWidth = "5";
    context.strokeStyle = tGrd;
    
    context.beginPath();
    context.arc(160, 150, 145, 0, 2 * Math.PI, false);
    context.stroke();
    context.closePath();
效果圖

這次就整理到這里,沒(méi)事多啃書(shū),遇到啥情況至少見(jiàn)過(guò),哈哈;
下次實(shí)踐:
context.drawImage()

//公式 x1= X0 + r * cos(角度*3.14/180);
//公式 Y1= Y0 + r * sin(角度*3.14/180);
          context.font="14px arial";
        context.textAlign="center";
        context.textBaseline="middle";
完善后的效果圖
自動(dòng)平均分配位置
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一:canvas簡(jiǎn)介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標(biāo)簽 ②:HTML5 ...
    GreenHand1閱讀 4,882評(píng)論 2 32
  • 一、canvas簡(jiǎn)介 1.1 什么是canvas?(了解) 是HTML5提供的一種新標(biāo)簽 Canvas是一個(gè)矩形區(qū)...
    Looog閱讀 4,045評(píng)論 3 40
  • --繪圖與濾鏡全面解析 概述 在iOS中可以很容易的開(kāi)發(fā)出絢麗的界面效果,一方面得益于成功系統(tǒng)的設(shè)計(jì),另一方面得益...
    韓七夏閱讀 2,975評(píng)論 2 10
  • guide.html最后處理 H5+ H5+ storage文檔 Storage模塊管理應(yīng)用本地?cái)?shù)據(jù)存儲(chǔ)區(qū),用于應(yīng)...
    Y_R閱讀 954評(píng)論 2 3
  • 我曾將一顆 烤暖的眼淚 用來(lái)喂食 瑟瑟發(fā)抖的愛(ài)情 后來(lái) 后來(lái)在你懷里 秋天的楓葉 被風(fēng)撐飽肚子 也不用再等飄零 后...
    舊浮生夸夢(mèng)丶閱讀 237評(píng)論 0 1

友情鏈接更多精彩內(nèi)容