android绘制实心。空心五角星_第1张图片


package com.example.test;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;/** *  *  假设五角星外接圆半径为1,有一个角朝上,以五角星中心为原点:外点 x=Rcos(72°*k)  y=Rsin(72°*k)   k=0,1,2,3,4 内点 r=Rsin(18)/sin(180-36-18) x=rcos(72°*k+36°)  y=rsin(72°*k+36°)   k=0,1,2,3,4  * @author Young * */public class FiveView2 extends View {public FiveView2(Context context) {super(context);// TODO Auto-generated constructor stub}public FiveView2(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public FiveView2(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}@SuppressLint("NewApi")public FiveView2(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {super(context, attrs, defStyleAttr, defStyleRes);// TODO Auto-generated constructor stub} @Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);int width=getWidth();int r=width/2;float outR=getWidth()/2 /5;float inR=outR*sin(18)/sin(180-36-18);Paint paint=new Paint();paint.setAntiAlias(true);paint.setColor(Color.YELLOW);paint.setStrokeWidth(5);canvas.translate(r/5, r );canvas.rotate(-18);Path path = getCompletePath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);path = getHalfPath(outR, inR);paint.setStyle(Style.FILL);canvas.drawPath(path, paint);canvas.rotate(18);canvas.translate(r/5*2+15,0 );canvas.rotate(-18);path = getCompletePath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);paint.setStyle(Style.FILL);canvas.drawPath(path, paint); canvas.rotate(18);canvas.translate(r/5*2+15,0 );canvas.rotate(-18);path = getCompletePath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);canvas.rotate(18);canvas.translate(r/5*2+15,0 );canvas.rotate(-18);path = getHalfPath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);canvas.rotate(18);canvas.translate(r/5*2+15,0 );canvas.rotate(-18);path = getHalfPath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);paint.setStyle(Style.FILL);canvas.drawPath(path, paint);}private Path getHalfPath(float outR, float inR) {Path path;path=new Path();path.moveTo(outR*cos(72*4), outR*sin(72*4));path.lineTo(inR*cos(72*1+36), inR*sin(72*1+36));path.lineTo(outR*cos(72*2), outR*sin(72*2));path.lineTo(inR*cos(72*2+36), inR*sin(72*2+36));path.lineTo(outR*cos(72*3), outR*sin(72*3));path.lineTo(inR*cos(72*3+36), inR*sin(72*3+36));path.close();return path;}private Path getCompletePath(float outR, float inR) {Path path=new Path();path.moveTo(outR*cos(72*0), outR*sin(72*0));path.moveTo(outR*cos(72*0), outR*sin(72*0));path.lineTo(inR*cos(72*0+36), inR*sin(72*0+36));path.lineTo(outR*cos(72*1), outR*sin(72*1));path.lineTo(inR*cos(72*1+36), inR*sin(72*1+36));path.lineTo(outR*cos(72*2), outR*sin(72*2));path.lineTo(inR*cos(72*2+36), inR*sin(72*2+36));path.lineTo(outR*cos(72*3), outR*sin(72*3));path.lineTo(inR*cos(72*3+36), inR*sin(72*3+36));path.lineTo(outR*cos(72*4), outR*sin(72*4));path.lineTo(inR*cos(72*4+36), inR*sin(72*4+36));path.close();return path;}  float cos(int num){return (float) Math.cos(num*Math.PI/180);} float sin(int num){return (float) Math.sin(num*Math.PI/180);}}


更多相关文章

  1. c语言实现输入圆的半径计算圆的面积

随机推荐

  1. QTrace:一个不一样的Android(安卓)IDE
  2. Android(安卓)项目配置之 Version Name &
  3. 安卓APP:利用AndroidStudio开发usb串口通
  4. [转载]Android(安卓)ContentProvider和Ur
  5. Android(安卓)Java生成随机数的方法
  6. 更新Android(安卓)SDK 出错 Failed to re
  7. 1.Ubuntu下Android(安卓)studio配置
  8. Android(安卓)Launcher源码研究(二) 加载
  9. Android(安卓)通过配置 productFlavors
  10. Android(安卓)启动界面 点击按钮跳转和3