画一条箭头线

darkattack 2006-02-05 09:45:53
谁能帮我写这个函数?
要求是画一条箭头线,线条起点是(x1,y1),终点是(x2,y2),箭头画在终点上。

public void drawArrowLine(Graphics2D g,int x1,int y1,int x2,int y2){

...

}
...全文
212 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Roy_Sashulin 2006-02-08
  • 打赏
  • 举报
回复
呵呵。你把它就当成一个控件,继承component
darkattack 2006-02-05
  • 打赏
  • 举报
回复
小弟不才。上面大哥的程序能改造成我提供的接口形式的吗?
public void drawArrowLine(Graphics2D g,int x1,int y1,int x2,int y2)

谢谢!
Roy_Sashulin 2006-02-05
  • 打赏
  • 举报
回复
public void paint(Graphics g) {
Arrow arrow=new Arrow();
arrow.drawArrow(g,100,100,Math.PI/4,100,Arrow.SIDE_LEAD);
}

for example :

import java.awt.*;

public class Arrow {
public static final int SIDE_LEAD=0,
SIDE_TRAIL=1,
SIDE_BOTH=2,
SIDE_NONE=3;
public final double pi=Math.PI;

public Arrow () { ; }

public void drawArrow(Graphics g,
int x,int y,
double theta,
int length,
int side) {
try {
if (length < 0) {
theta+=pi;
length*=-1;
}
int x1,y1;
x1=(int)Math.ceil(x + length*Math.cos(theta));
y1=(int)Math.ceil(y - length*Math.sin(theta));
g.drawLine(x,y,x1,y1);

switch (side) {
case SIDE_LEAD :
drawArrow(g,x1,y1,theta+5*pi/4,5,SIDE_NONE);
drawArrow(g,x1,y1,theta+3*pi/4,5,SIDE_NONE);
break;
case SIDE_TRAIL :
drawArrow(g,x,y,theta-pi/4,5,SIDE_NONE);
drawArrow(g,x,y,theta+pi/4,5,SIDE_NONE);
break;
case SIDE_BOTH :
drawArrow(g,x,y,theta-pi/4,5,SIDE_NONE);
drawArrow(g,x,y,theta+pi/4,5,SIDE_NONE);
drawArrow(g,x1,y1,theta+5*pi/4,5,SIDE_NONE);
drawArrow(g,x1,y1,theta+3*pi/4,5,SIDE_NONE);
break;
case SIDE_NONE :
break;
default:
throw new IllegalArgumentException();
}
}
catch (IllegalArgumentException iae) {
System.out.println("Invalid value for variable side.");
}
}
}
yanhan0615 2006-02-05
  • 打赏
  • 举报
回复
拜托,这都要人帮忙写啊?在线的终点处填充一个多边形不就OK了?

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧