0 0

想使用SVG或者canvas 手绘闭合多边形,使用vml效果已经实现了,由于vml只能支持ie所以想转成SVG或canvas 10

引用

最近要实现一个功能,在一张图片上选好区域后,然后记录后选择的坐标。然后使用 map area 将所选区域显示出来。
我在网上找了一段vml的代码,能实现我的功能。
但是因为vml只支持ie,所以没有办法在 Chrome上用。
这个看了两天了,一直没有实现方法,请各位大神,能将代码改成 SVG或者canvas这种能支持Chrome浏览器的。
下面的代码是vml手绘闭合多边形的。
再次谢谢各位大神了。


<HTML xmlns:v>
  <head>
  <title>手绘多边形</title>
  <meta name="ContentType" content="text/html" />
  <meta name="CharSet" content="UTF-8" />
  <style type="text/css">
  v\:* {behavior:url(#default#VML);}
  </style>
  <script language="javascript">
    var Working=false;//判断是否画图的状态
    var poly1=null,oldvalue="",oldx=0,oldy=0  //为了完成铅笔、记忆点等连续线段
    var xx,yy;
    //鼠标单击事件
    function divMousedown()
    {
    if(!Working)//第一次点击鼠标
    {
        xx=event.x;
        yy=event.y;
        poly1=div1.appendChild(document.createElement("<v:shape path='m0,0 l0,0' filled='true' style='POSITION:absolute;z-index:1;left:"+xx+";top:"+yy+";width:100;height:100;filter: Alpha(Opacity=60);' strokecolor='black' strokeweight='1' coordsize='100,100' fillcolor='yellow'/>"));
        oldvalue=poly1.path.value.replace("e","");
        oldx=xx;
        oldy=yy;
        Working=true;
    }
    else
    {
        if (poly1!=null) oldvalue=poly1.path.value.replace(" e","");
    }
    }
    //鼠标移动的时候
    function divMouseMove()
    {
        tempx=event.x;
        tempy=event.y;
        if (poly1!=null)
        {
            poly1.path.value=oldvalue+","+(tempx-oldx)+","+(tempy-oldy);
            poly1.path.value=poly1.path.value.replace(",0,0,",",0,").replace(",0 e","e");
        }
    }

    function divMouseUp()
    {
        if(event.button==2) 
        {
            poly1.path.value=oldvalue+"x e";
            Working=false;
            poly1=null;
        }
    }
  </script>
  <body style="margin:0px;">
  <div id="div1" style="position:absolute; height:100%; width:100%; border:1px solid 0000FF;" onmousedown="divMousedown();" onmousemove="divMouseMove();" onmouseup="divMouseUp();" oncontextmenu="return false;">在页面上点击鼠标左键开始,右击鼠标右键结束</div>
  </body>
  </html>

2013年12月08日 23:36
  • 大小: 6.3 KB

1个答案 按时间排序 按投票排序

0 0

可以参考一下这个:http://blog.csdn.net/firefight/article/details/1346221

2013年12月09日 15:20

相关推荐

    SVG、CANVAS、VML比较

    SVG、CANVAS、VML是三种用于在Web上创建矢量图形的方法,它们各有优缺点,适应不同的场景需求。 SVG(Scalable Vector Graphics)是一种基于XML的开放标准,被广泛支持,尤其在现代浏览器中,如Firefox和Opera。在...

    利用SVG或VML在网页上实现3D的曲面效果

    本文将深入探讨如何利用SVG和VML实现3D曲面效果,以及它们各自的特点和应用场景。 SVG是一种开放标准的矢量图形格式,支持动态和交互式内容,可以在任何分辨率下清晰显示,不会因为放大而失真。它通过定义点、线、...

    ie-canvas.zip解决了ie8不支持canvas

    然而,不幸的是,早期版本的Internet Explorer(尤其是IE8)并不支持Canvas API,这在一定程度上限制了开发者在这些浏览器上实现复杂的图形效果。 `ie-canvas.zip` 是一个解决方案,旨在解决IE8浏览器对...

    让IE兼容 HTML5的canvas标签

    此外,随着现代浏览器的普及,对于不再维护的旧版IE,开发者可能更倾向于引导用户升级浏览器或使用其他替代方案,如SVG或WebGL,以获得更好的性能和兼容性。但excanvas仍然对那些需要向后兼容的项目提供了有价值的...

    canvas.js html5.js 兼容ie

    通过"excanvas.js",开发者可以在IE上实现与非IE浏览器相似的Canvas绘图效果。 "html5.js"则可能是一个更全面的库,旨在为旧版IE提供更多的HTML5特性支持,不仅仅是Canvas,可能还包括其他如localStorage、Audio/...

    vml+javascript实现的3d柱状图(仅适用于ie)

    在IT行业中,可视化数据是至关重要的,特别是在网页开发中,数据...在实际开发中,我们更倾向于使用像SVG(Scalable Vector Graphics)或者Canvas这样的现代技术,它们提供了更好的跨浏览器支持和更多的交互性选项。

    VML极道教程(IE打开)

    2. **兼容性**:尽管SVG(Scalable Vector Graphics)在现代浏览器中已经成为矢量图形的标准,但VML主要为了解决IE浏览器(尤其是早期版本)对SVG不支持的问题。 3. **应用场景**:在CSS3和SVG普及之前,VML常用于...

    在网页中利用VML画图

    它允许开发人员在不支持HTML5 Canvas或SVG(Scalable Vector Graphics)的旧版IE浏览器中实现矢量图形的绘制。在描述中提到的应用场景,例如显示CPU使用率、内存使用率等系统监控图表,VML可以提供一种解决方案来...

    vml柱状图 vml html jquery

    VML是Microsoft提出的一种标准,但随着现代浏览器对SVG和Canvas的支持增强,VML的使用逐渐减少。 在"vml柱状图 vml html jquery"这个主题中,我们主要关注如何使用VML在HTML页面上创建柱状图表,并结合jQuery库来...

    利用VML实现动态关系图

    尽管现在SVG已经成为现代Web开发的标准,但在某些特定场景下,如老版本IE浏览器的兼容性问题,了解并使用VML仍然是有价值的。 **二、VML基础** 1. **语法结构**:VML使用XML的语法,通过定义形状(如矩形、圆形、...

    vml.rar_VML

    - 虽然VML主要在IE浏览器中支持,但现代浏览器更倾向于支持SVG标准。为了保证跨浏览器兼容,开发者通常会使用库如Raphaël,它自动处理了VML和SVG之间的差异,使得代码可以在各种浏览器中运行。 5. **性能与优化**...

    vml 签名

    7. **兼容性考虑**:虽然VML主要是在IE浏览器中使用,但考虑到现代浏览器的兼容性,开发者通常会结合SVG(Scalable Vector Graphics)技术,以确保在非IE浏览器中也能正常显示。 8. **安全性**:在实际应用中,电子...

    vml 极道教程 详细的vml教程

    总之,"vml极道教程"是一份全面的学习资料,不仅涵盖VML的基本概念和技术,还涉及到其动态扩展和与其他技术的结合,对想要深入了解和使用VML的人来说非常有价值。通过学习这个教程,你可以提升自己的前端开发技能,...

    vml+javascript直接在浏览器中绘制动态曲线图实例(源码-+Think+in+vml++vml+极道教程)

    总的来说,这个实例为我们展示了在不支持SVG或Canvas的旧版浏览器中,如何使用VML和JavaScript实现动态曲线图的绘制。虽然现在大多数现代浏览器都支持SVG和Canvas,但在兼容性要求较高的场景下,VML仍然是一个值得...

    vml资料(资料+例子供大家参考)

    如今,尽管VML在现代网页开发中的应用已经非常有限,但了解其基本概念和语法仍然是有益的,尤其是在处理旧项目或与旧版IE兼容时。 VML的基本结构类似于XML,它使用标签来定义图形元素。例如,创建一个红色的矩形...

    vml实现图表

    虽然VML在现代浏览器中已逐渐被SVG取代,但由于对老版IE的支持需求,有些场景下仍需使用VML。对于其他浏览器,可以使用SVG或HTML5 Canvas来实现类似功能,它们都提供了更强大的图形渲染能力和更好的浏览器兼容性。 ...

    ASP结合VML生成柱状图

    不过需要注意的是,由于VML主要针对旧版IE,对于现代浏览器(如Chrome、Firefox和Edge),开发者更倾向于使用SVG(Scalable Vector Graphics)或者Canvas API来实现类似的图形绘制功能,因为它们有更好的跨浏览器...

    javaScript报表使用VML技术

    尤其是在Internet Explorer(IE)浏览器占据主导地位时,由于其对现代Web标准如SVG(Scalable Vector Graphics)的支持不完全,开发者们常常采用VML(Vector Markup Language)技术来在IE中实现矢量图形的绘制。...

    js 封装VML的饼图,柱状图,折线图

    VML是一种矢量图形格式,允许在IE浏览器中创建和展示复杂的图形,特别是在不支持SVG(Scalable Vector Graphics)的老版本IE中。 1. **饼图**:饼图是数据可视化中常用的一种图表类型,用于显示部分与整体之间的...

Global site tag (gtag.js) - Google Analytics