flash 绘图API:绘制虚线矩形

flash 绘图API:绘制虚线矩形

借助绘制虚线的圆形的一种简单的灵感,于是尝试绘制一下虚线矩形。采用想法很传统,通过循环描点的方式来对其进行连线。

采用两个循环组合,第一个循环是绘制横方向的线条,一共两条

第二个循环是绘制纵方向的线条,一共是两条

两种都是采用最基本moveTo 和lineTo组合方式进行连线,当中连线的方式采用间隔的办法尝试实现这种虚线效果。

Ok,绘制完成了。高兴了,但是细心发现这种绘制方式有一些缺陷或者讲不够完美,四边角不能有效封闭,看起来很不爽。暂时先用一下,急用的时候不妨修改试试。

import flash.display.Graphics; import flash.display.Shape; var shape:Shape=new Shape(); addChild(shape); shape.x = 250; shape.y = 200; shape.graphics.lineStyle(1,0xff0000); //设置线条样式和颜色; //绘制虚线矩形 drawDottedRect(shape.graphics,200,100,4); function drawDottedRect(g:Graphics,width:Number,height:Number,gap:Number):void { if (gap < 0)return; var partW:int = width / gap; var partH:int = height / gap; for (var i:int=0; i<partW; i++) { if (i % 2 != 0) { drawLine(g,i*gap,0,(i+1)*gap,0); drawLine(g,i*gap,height,(i+1)*gap,height); } } for (var j:int=0; j<partH; j++) { if (j % 2 != 0) { drawLine(g,0,j*gap,0,(j+1)*gap); drawLine(g,width,j*gap,width,(j+1)*gap); } } } //画线 function drawLine(g:Graphics,startX:Number,startY:Number,endX:Number,endY:Number):void { g.moveTo(startX,startY); g.lineTo(endX,endY); }