Flex中画箭头
来源:互联网 发布:阿里云邮箱服务器地址 编辑:程序博客网 时间:2024/05/18 03:37
第一种
参考图片
代码:
- /**
- * 画箭头
- * ---▲
- * @param start 开始节点
- * @param end 结束节点
- * @param color 线条颜色
- * @param alpha 透明度
- * @param radius 箭头的大小
- *
- */
- public function drawArrow(start:Point,end:Point,color:uint=0x000000,alpha:Number=1,radius:Number=8.5):void{
- var z:Number=Math.sqrt((end.x - start.x) * (end.x - start.x) + (end.y - start.y) * (end.y - start.y));
- var angle:Number=Math.atan2(end.y - start.y, end.x - start.x);
- var exAngle:Number=Math.PI * 4.8 / 4;
- var p1:Point=Point.polar(z, angle);
- var p2:Point=Point.polar(radius, angle + exAngle);
- var p3:Point=Point.polar(radius, angle - exAngle);
- p1.offset(start.x, start.y);
- p2.offset(p1.x, p1.y);
- p3.offset(p1.x, p1.y);
- if(alpha>1) alpha=1;
- else if(alpha<0) alpha=0;
- arrow.graphics.beginFill(color,alpha);
- arrow.graphics.moveTo(p1.x, p1.y);
- arrow.graphics.lineTo(p2.x, p2.y);
- arrow.graphics.lineTo(p3.x, p3.y);
- arrow.graphics.lineTo(p1.x, p1.y);
- arrow.graphics.endFill();
- this.addChild(arrow);
- }
第二种
参考图片
代码:
- /**
- * 画箭头方法
- *
- * →
- * @param x1 开始节点x轴坐标
- * @param y1 开始节点y轴坐标
- * @param x2 结束节点x轴坐标
- * @param y2 结束节点y轴坐标
- * @param lineThickness 线条的粗细
- * @param color 线条的颜色
- * @param alpha 透明度
- *
- */
- public function performArrowDrawing(x1:Number, y1:Number, x2:Number, y2:Number, lineThickness:Number, color:Number, alpha:Number):void{
- arrow.graphics.lineStyle(lineThickness, color, alpha);
- var arrowHeight:Number = 15;
- var arrowWidth:Number = 10;
- var angle:Number = Math.atan2(y2-y1, x2-x1);
- arrow.graphics.moveTo(x2-arrowHeight*Math.cos(angle)-arrowWidth*Math.sin(angle),
- y2-arrowHeight*Math.sin(angle)+arrowWidth*Math.cos(angle));
- arrow.graphics.lineTo(x2, y2);
- arrow.graphics.lineTo(x2-arrowHeight*Math.cos(angle)+arrowWidth*Math.sin(angle),
- y2-arrowHeight*Math.sin(angle)-arrowWidth*Math.cos(angle));
- }
第三种
参考图片
代码:
- /**
- *
- * @param startX
- * @param startY
- * @param endX
- * @param endY
- * @return
- *
- */private function GetAngle(startX:Number,startY:Number,endX:Number,endY:Number):int
- {
- var tmpx:int=endX-startX ;
- var tmpy:int=startY -endY ;
- var angle:int= Math.atan2(tmpy,tmpx)*(180/Math.PI);
- return angle;
- /**
- *
- * @param startX 开始节点x轴坐标
- * @param startY 开始节点y轴坐标
- * @param endX 结束节点x轴坐标
- * @param endY 结束节点y轴坐标
- * @param Radius 箭头的大小
- *
- */ public function drawArrowCenter(startX:Number,startY:Number,endX:Number,endY:Number,Radius:Number):void {
- var angle:int= GetAngle(startX,startY,endX,endY);
- var centerX:int=endX-Radius * Math.cos(angle *(Math.PI/180)) ;
- var centerY:int=endY+Radius * Math.sin(angle *(Math.PI/180)) ;
- var topX:int=endX ;
- var topY:int=endY ;
- var LineColor:uint=0x8699A5;
- var leftX:int=centerX + Radius * Math.cos((angle +120) *(Math.PI/180)) ;
- var leftY:int=centerY - Radius * Math.sin((angle +120) *(Math.PI/180)) ;
- var rightX:int=centerX + Radius * Math.cos((angle +240) *(Math.PI/180)) ;
- var rightY:int=centerY - Radius * Math.sin((angle +240) *(Math.PI/180)) ;
- arrow.graphics.beginFill(LineColor,1);
- arrow.graphics.lineStyle(1,LineColor,1);
- arrow.graphics.moveTo(topX,topY);
- arrow.graphics.lineTo(leftX,leftY);
- arrow.graphics.lineTo(centerX,centerY);
- arrow.graphics.lineTo(rightX,rightY);
- arrow.graphics.lineTo(topX,topY);
- arrow.graphics.endFill();
- }
其中第三种算法有点问题,箭头不对称,需要修改。希望高手指导。在此先感谢了
忘记加上
- public var arrow:UIComponent=new UIComponent();
- Flex中画箭头
- Flex画箭头
- 去掉FLEX中scrllbar上下两个箭头
- Flex 画箭头(三种)
- matlab 中画箭头
- 去除Flex 滚轴箭头
- HTML中,在画布中画箭头
- Java中画带有箭头的线段
- 画箭头
- Word2003画箭头锦囊 斜线箭头、双箭头、折线箭头
- UML中箭头含义
- vue 中箭头函数
- MFC中实现的画箭头算法 (Arrow in MFC)
- MFC中如何画带实心箭头的直线
- MFC中如何画带实心箭头的直线
- MFC中如何画带实心箭头的直线
- UML中箭头的含义
- word中替换向下箭头
- Darwin Streaming Server 6.0.3 - setup, customization, plugin or module development, performance and
- source VS exec
- 加班
- 在Windows中应用MinGW编译X264
- 工作队列(workqueue) create_workqueue/schedule_work/queue_work
- Flex中画箭头
- Android中MediaStore使用示例
- select, semop 等阻塞的系统调用返回值的检查
- 移动云计算应用开发入门经典
- HTML5 模板
- error: longjmp causes uninitialized stack frame
- 深入理解ARM体系架构(S3C6410)---UART实例
- 网上购票系统故障 补票却要交费
- 鼓浪屿交通