pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

繪制SVG內(nèi)容到Canvas的HTML5應(yīng)用

SVG與Canvas是HTML5上繪制圖形應(yīng)用的兩種完全不同模式的技術(shù),兩種繪制圖形方式各有優(yōu)缺點(diǎn),但兩者并非水火不容,尤其是SVG內(nèi)容可直接繪制在Canvas上的功能,使得兩者可以完美的融合在
SVG與Canvas是HTML5上繪制圖形應(yīng)用的兩種完全不同模式的技術(shù),兩種繪制圖形方式各有優(yōu)缺點(diǎn),但兩者并非水火不容,尤其是SVG內(nèi)容可直接繪制在Canvas上的功能,使得兩者可以完美的融合在一起,讓Canvas可享用到現(xiàn)有豐富的SVG素材,并不失SVG矢量無級(jí)縮放的特點(diǎn)。

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

以下一段小例子,展示了加載一個(gè)SVG圖片后,分為七個(gè)基本進(jìn)行縮放繪制的效果,可看出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的矢量功能展示一個(gè)手機(jī)電池充電進(jìn)度的實(shí)例,整個(gè)手機(jī)電池的靜態(tài)部分我們通過加載一個(gè)簡(jiǎn)單的SVG素材實(shí)現(xiàn),而充電動(dòng)態(tài)變化的部分,我們采用一個(gè)漸進(jìn)色的HT矩形元素來描述,該矩形的長(zhǎng)度通過HT矢量數(shù)據(jù)動(dòng)態(tài)綁定功能,根據(jù)充電進(jìn)度的百分比換算成長(zhǎng)度信息,最后通過定時(shí)器模擬數(shù)據(jù)變化達(dá)到動(dòng)態(tài)充電的效果:



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



【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

由于實(shí)際運(yùn)行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會(huì)達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個(gè)自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對(duì)JavascriptAPI的擴(kuò)展。,HTML5中國(guó),中國(guó)最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗(yàn)簡(jiǎn)單移植到移動(dòng)端,他們覬覦移動(dòng)原生應(yīng)用人性化的操作體驗(yàn),特別是原生應(yīng)用與生俱來的豐富的手勢(shì)系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個(gè)產(chǎn)品,或者是一個(gè)作品集,又或者僅僅只是一個(gè)靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計(jì)流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個(gè)講義。同時(shí),也讓我意外的收到了非常好反饋和認(rèn)!這是對(duì)我的極大鼓勵(lì)!我的
本文主要內(nèi)容有:框架與組件、構(gòu)建生態(tài)、開發(fā)技巧與調(diào)試、html、css與重構(gòu)、native/hybrid/桌面開發(fā)、前端/H5優(yōu)化、全棧/全端開發(fā)、研究實(shí)驗(yàn)、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術(shù)網(wǎng)
主站蜘蛛池模板: 广州物流公司_广州货运公司_广州回程车运输 - 万信物流 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 | 搪玻璃冷凝器_厂家-越宏化工设备| 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 下水道疏通_管道疏通_马桶疏通_附近疏通电话- 立刻通 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | 中细软知识产权_专业知识产权解决方案提供商| 【灵硕展览集团】展台展会设计_展览会展台搭建_展览展示设计一站式服务公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 智慧旅游_智慧景区_微景通-智慧旅游景区解决方案提供商 | 脉冲布袋除尘器_除尘布袋-泊头市净化除尘设备生产厂家 | 湖南档案密集架,智能,物证,移动,价格-湖南档案密集架厂家 | 智能终端_RTU_dcm_北斗星空自动化科技| 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 制氮设备-变压吸附制氮设备-制氧设备-杭州聚贤气体设备制造有限公司 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 阁楼货架_阁楼平台_仓库仓储设备_重型货架_广州金铁牛货架厂 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 精密模具-双色注塑模具加工-深圳铭洋宇通 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 酒瓶_酒杯_玻璃瓶生产厂家_徐州明政玻璃制品有限公司 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 混合反应量热仪-高温高压量热仪-微机差热分析仪DTA|凯璞百科 | 气胀轴|气涨轴|安全夹头|安全卡盘|伺服纠偏系统厂家-天机传动 | 二手注塑机回收_旧注塑机回收_二手注塑机买卖 - 大鑫二手注塑机 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 模具钢_高速钢_不锈钢-万利钢金属材料 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 |