久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

繪制SVG內容到Canvas的HTML5應用

SVG與Canvas是HTML5上繪制圖形應用的兩種完全不同模式的技術,兩種繪制圖形方式各有優缺點,但兩者并非水火不容,尤其是SVG內容可直接繪制在Canvas上的功能,使得兩者可以完美的融合在
SVG與Canvas是HTML5上繪制圖形應用的兩種完全不同模式的技術,兩種繪制圖形方式各有優缺點,但兩者并非水火不容,尤其是SVG內容可直接繪制在Canvas上的功能,使得兩者可以完美的融合在一起,讓Canvas可享用到現有豐富的SVG素材,并不失SVG矢量無級縮放的特點。

基于HTML5的Drag and Drop生成圖片Base64信息》這篇雖然展示的是拖拽普通柵格圖片的效果,但你也可以直接拖拽SVG格式的圖片進行顯示,只不過普通圖片的格式數據為data:image/png類型,而SVG格式的數據類型為data:image/svg+xml的類型,下圖為該HT for Web拓撲圖拖拽入SVG格式圖片的運行效果:

以下一段小例子,展示了加載一個SVG圖片后,分為七個基本進行縮放繪制的效果,可看出Canvas繪制SVG可保持其矢量不失真的特性


function draw(){
    var img = new Image();
    img.src = 'chart.svg';
    document.body.appendChild(img);
    img.onload = function(){
        var canvas = document.getElementById('canvas');
        var g = canvas.getContext('2d'); 
        var width = img.clientWidth * 1.5;
        var height = img.clientHeight * 1.5;                
        var x = 2;
        var y = 2;
        for(var i=0; i<7; i++){
            g.drawImage(img, x, y, width, height);
            x += width + 2;
            width /= 2;
            height /= 2;
        }            
    };
}

提到Canvas和SVG的融合,我們將采用HT for Web的矢量功能展示一個手機電池充電進度的實例,整個手機電池的靜態部分我們通過加載一個簡單的SVG素材實現,而充電動態變化的部分,我們采用一個漸進色的HT矩形元素來描述,該矩形的長度通過HT矢量數據動態綁定功能,根據充電進度的百分比換算成長度信息,最后通過定時器模擬數據變化達到動態充電的效果:



ht.Default.setImage('battery', { width: 64, height: 64, comps: [ { type: 'rect', rect: { func: function(data){ return [5, 25, 50*data.a('percent'), 16] } }, background: 'red', gradient: 'spread.vertical' }, { type: 'image', name: 'battery.svg', relative: true, rect: [0, 0, 1, 1] } ] }); var node = new ht.Node(); node.setPosition(80, 150); node.setImage('battery'); node.s('image.stretch', 'uniform'); node.a('percent', 0); dataModel.add(node); graphView.setEditable(true); setInterval(function(){ percent = node.a('percent') + 0.02; if(percent > 1){ percent = 0; } node.a('percent', percent); }, 16);


SVG繪制到Canvas還有一種特殊的應用場景,就是將HTML元素通過SVG的foreignObject特性描述在SVG中,然后Canvas繪制SVG時,即可把foreignObject描述的HTML內容繪制到Canvas上,可參見https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Drawing_DOM_objects_into_a_canvas 的實例,其中采用了Blob的方式設置img的src作為URL是比較怪異的技術點,但從上文提到其實我們可以將整個SVG內容轉換成data:image/svg+xml;的base64內容即可作為src的url傳入,因此我對該例子做了改造,采用btoa(data)把svg內容轉換成base64的方式設置img.src,這樣方式更容易理解,例子代碼和效果如下:http://v.youku.com/v_show/id_XODg0MTU4NjEy.html



【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內容有:框架與組件、構建生態、開發技巧與調試、html、css與重構、native/hybrid/桌面開發、前端/H5優化、全棧/全端開發、研究實驗、數據分析與監控、其它軟技能、前端技術網
主站蜘蛛池模板: 欧美日韩三级 | 欧美黄色性生活视频 | 欧美高清视频一区 | 欧美精品一区二区三区在线播放 | 日韩在线不卡视频 | 精品二三区 | 国产亚洲欧美在线 | 国产二区视频 | 欧美成年人视频在线观看 | 丁香五月缴情综合网 | 中文字幕高清av | 三级在线免费观看 | 91麻豆久久久 | 热久色| 日韩欧美国产一区二区三区 | 最新免费av网站 | 亚洲三级av| 国产精品美女久久久久aⅴ国产馆 | 国产精品美女久久久久久免费 | 日韩成人精品一区二区三区 | 精品二区 | 国产成人在线播放 | 国产欧美日韩在线 | 亚洲一区二区黄 | 欧美电影在线观看网站 | 免费观看一级特黄欧美大片 | 亚洲精品成人网 | 日韩网站免费观看 | 免费黄色片视频 | 成人精品国产免费网站 | 国产欧美一区二区三区国产幕精品 | 国产亚洲精品久久久久动 | 中文字幕在线观看一区 | 超碰在线人人干 | 国产精品久久久久一区二区三区 | 羞羞午夜 | 亚洲精品自拍视频 | 日韩视频免费看 | 在线中文字幕视频 | 国产在线视频在线观看 | 男女下面一进一出网站 |