android Canvas 画箭头

public void drawAL(int fx, int fy, int sx, int sy) {
		double H = 8;
		double L = 3.5;
		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(sx - fx, sy - fy, awrad, true, arraow_len);
		double[] arrXY_2 = rotateVec(sx - fx, sy - fy, -awrad, true, arraow_len);
		double x_3 = sx - arrXY_1[0];
		double y_3 = sy - arrXY_1[1];
		double x_4 = sx - arrXY_2[0];
		double y_4 = sy - 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();
		myCanvas.drawLine(fx, fy, sx, sy, paint);
		Path triangle = new Path();
		triangle.moveTo(sx, sy);
		triangle.lineTo(x3, y3);
		triangle.lineTo(x4, y4);
		triangle.close();
		myCanvas.drawPath(triangle, paint);

	}

	public double[] rotateVec(int px, int py, double ang, boolean isChLen, double newLen) {
		double mathstr[] = new double[2];
		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;
	}

转载: http://blog.csdn.net/yxz329130952/article/details/8084412

猜你喜欢

转载自bgj.iteye.com/blog/1972619