重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
/**
创新互联公司是一家专业提供萧县企业网站建设,专注与成都网站制作、成都网站设计、HTML5、小程序制作等业务。10年已为萧县众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
* 画带箭头的线
* */
public void paintk(GC g, int x1, int y1, int x2, int y2) {
double H = 10 ; // 箭头高度
double L = 7 ; // 底边的一半
int x3 = 0 ;
int y3 = 0 ;
int x4 = 0 ;
int y4 = 0 ;
double awrad = Math.atan(L / H); // 箭头角度
double arraow_len = Math.sqrt(L * L + H * H); // 箭头的长度
double [] arrXY_1 = rotateVec(x2 - x1, y2 - y1, awrad, true , arraow_len);
double [] arrXY_2 = rotateVec(x2 - x1, y2 - y1, - awrad, true , arraow_len);
double x_3 = x2 - arrXY_1[ 0 ]; // (x3,y3)是第一端点
double y_3 = y2 - arrXY_1[ 1 ];
double x_4 = x2 - arrXY_2[ 0 ]; // (x4,y4)是第二端点
double y_4 = y2 - arrXY_2[ 1 ];
Double X3 = new Double(x_3);
x3 = X3.intValue();
Double Y3 = new Double(y_3);
y3 = Y3.intValue();
Double X4 = new Double(x_4);
x4 = X4.intValue();
Double Y4 = new Double(y_4);
y4 = Y4.intValue();
// g.setColor(SWT.COLOR_WHITE);
// 画线
g.drawLine(x1, y1, x2, y2);
// 画箭头的一半
g.drawLine(x2, y2, x3, y3);
// 画箭头的另一半
g.drawLine(x2, y2, x4, y4);
}
/**
*取得箭头的绘画范围
*/
public double [] rotateVec( int px, int py, double ang, boolean isChLen,
double newLen) {
double mathstr[] = new double [ 2 ];
// 矢量旋转函数,参数含义分别是x分量、y分量、旋转角、是否改变长度、新长度
double vx = px * Math.cos(ang) - py * Math.sin(ang);
double vy = px * Math.sin(ang) + py * Math.cos(ang);
if (isChLen) {
double d = Math.sqrt(vx * vx + vy * vy);
vx = vx / d * newLen;
vy = vy / d * newLen;
mathstr[ 0 ] = vx;
mathstr[ 1 ] = vy;
}
return mathstr;
}
import java.awt.Graphics;
import java.awt.Point;
import java.util.Scanner;import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;public class arrow extends JPanel{
static Point [] point=new Point[8];
static int w,h,d;
public arrow() {
}
public static void main(String[] args) {
InitialPoint();
showView();
}
static void showView()
{
JFrame frame=new JFrame("绘制箭头");
frame.getContentPane().add(new arrow());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
static void InitialPoint()
{
Scanner input=new Scanner(System.in);
System.out.println("请你书箭头的宽w值0--500:");
w=input.nextInt();
System.out.println("请你书箭头的高h值0--250:");
h=input.nextInt();
System.out.println("请你书箭头的长度d值0--500:");
d=input.nextInt();
for(int i=0;i8;i++)
point[i]=new Point();
if(w=0w=500h=0h=250d=0d=500d2*h)
{
point[0].x=-d/2;point[0].y=0;
point[2].x=-d/2+h;point[2].y=-w/2;
point[1].x=-d/2+h;point[1].y=w/2;
point[3].x=-d/2;point[3].y=0;
point[4].x=d/2;point[4].y=0;
point[5].x=d/2-h;point[5].y=w/2;
point[6].x=d/2-h;point[6].y=-w/2;
point[7].x=d/2;point[7].y=0;
}
else {
System.out.println( "数据不符合条件");
}
for(int i=0;i8;i++)
{
point[i].x=point[i].x+250;
point[i].y=point[i].y+250;
}
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
for(int i=0;i7;i++)
{
g.drawLine(point[i].x,point[i].y , point[i+1].x,point[i+1].y);
}
}
}
用java实现的,你看看。。。
break表示跳出循环了,后面的println永远不会运行所以是无效代码,java对这些无效代码的编译就是报错
小箭头可以是一个图片 默认是隐藏的 等你隐藏了窗体就把小箭头显示,点击小箭头再显示窗体隐藏小箭头,就这样切来切去嘛
Java8里新加入的特性lambda表达式。Lambda表达式允许非常便捷地传入一个代码块来实现函数式接口,并且还有多种简写写法,不仅是可读性更高,代码执行效率、编写效率也都有提高。