求高效的js画圆代码

fuyun 2009-05-15
这个问题已经有了眉目,现在正在研究svg...顺带看看Canvas...

说明一下,好像svg本身就是一种图片格式...呵呵~
vlinux 2009-05-15
哦,那祝你早日练成葵花宝典~~哈
fuyun 2009-05-15
vlinux 写道
哦,那祝你早日练成葵花宝典~~哈

呵呵... 只要不走火入魔就ok了~~
先来一招葵花点穴手...
Relucent 2009-06-07
是这个意思吗?  纯JS画图
<script type='text/javascript'>   

    /*圆形算法*/  
    function drawOval(left, top, radius)   
    {   
    		var _html ='',a = radius>>1, b = radius>>1,wod = radius&1, hod = (radius&1)+1,cx = left+a, cy = top+b,x = 0, y = b,aa = (a*a)<<1, bb = (b*b)<<1,st = (aa>>1)*(1-(b<<1)) + bb,tt = (bb>>1) - aa*((b<<1)-1),ox = 0, oy = b,w, h,pxl, pxr, pxt, pxb, pxw;   
        while (y > 0)   
        {   
            if (st < 0)   
            {   
                st += bb*((x<<1)+3);   
                tt += (bb<<1)*(++x);   
            }   
            else if (tt < 0)   
            {   
                st += bb*((x<<1)+3) - (aa<<1)*(y-1);
                tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);   
                w = x-ox;   
                h = oy-y;   
                if (w-1)   
                {   
                    pxw = w+2;   
                    h = 1;   
                }   
                else if (h-1)   
                {   
                    pxw = 1;   
                    h += 1;   
                }   
                else pxw = h = 1;   
    						/*八对称点圆弧算法*/  
								_html += "<i style='background-color:#FF0000;position:absolute;overflow:hidden;left:"+((ox-pxw+w+wod)+cx)+"px;top:"+((-oy)+cy)+"px;width:"+pxw+"px;height;"+h+"px'></i><i style='background-color:#FF0000;position:absolute;overflow:hidden;left:"+((0-x+1)+cx)+"px;top:"+((-oy)+cy)+"px;width:"+pxw+"px;height;"+h+"px'></i><i style='background-color:#FF0000;position:absolute;overflow:hidden;left:"+((ox-pxw+w+wod)+cx)+"px;top:"+((-h+oy+hod)+cy)+"px;width:"+pxw+"px;height;"+h+"px'></i><i style='background-color:#FF0000;position:absolute;overflow:hidden;left:"+((0-x+1)+cx)+"px;top:"+((-h+oy+hod)+cy)+"px;width:"+pxw+"px;height;"+h+"px'></i>";
                ox = x;   
                oy = y;   
            }   
            else  
            {   
                tt -= aa*((y<<1)-3);
                st -= (aa<<1)*(--y);
            }   
        } 
        return _html;
    }   
  
    /*画圆*/  
    var html = drawOval(100,100,600);   
  
    document.write(html);   
</script>  
kc_ren 2009-07-02
可以使用 Canvas 效率很高 对于IE的支持 google 上有 IECanvas 的项目
kc_ren 2009-07-02
fuyun 写道
kc_ren 写道
使用 Canvas 技术(Flotr) 性能很好~就是IE8下要写IE7兼容

现在各浏览器对Canvas的支持情况和兼容性好象不是很好...


google 有 IECanvas的 js 项目 自动转换为 vml
浮生如斯 2011-03-17
楼主,我想用JS画五个同心圆组成的度盘,怎么弄,还要两个半径组成的区域,JS 怎么完成,该使用什么技术!
Global site tag (gtag.js) - Google Analytics