Android关于Canvas你所知道的和不知道的一切

*/
public static void loadWinSize(Context ctx, Point winSize) {
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
if (wm != null) {
wm.getDefaultDisplay().getMetrics(outMetrics);
}
winSize.x = outMetrics.widthPixels;
winSize.y = outMetrics.heightPixels;
}

4).坐标系–路径:com.toly1994.c.view.analyze.HelpPath#cooPath

/**

  • 坐标系路径
  • @param coo 坐标点
  • @param winSize 屏幕尺寸
  • @return 坐标系路径
    */
    public static Path cooPath(Point coo, Point winSize) {
    Path path = new Path();
    //x正半轴线
    path.moveTo(coo.x, coo.y);
    path.lineTo(winSize.x, coo.y);
    //x负半轴线
    path.moveTo(coo.x, coo.y);
    path.lineTo(coo.x - winSize.x, coo.y);
    //y负半轴线
    path.moveTo(coo.x, coo.y);
    path.lineTo(coo.x, coo.y - winSize.y);
    //y负半轴线
    path.moveTo(coo.x, coo.y);
    path.lineTo(coo.x, winSize.y);
    return path;
    }
5).坐标系–绘制:com.toly1994.c.view.analyze.HelpDraw#drawCoo

/**

  • 绘制坐标系
  • @param canvas 画布
  • @param coo 坐标系原点
  • @param winSize 屏幕尺寸
  • @param paint 画笔
    /
    public static void drawCoo(Canvas canvas, Point coo, Point winSize, Paint paint) {
    //初始化网格画笔
    paint.setStrokeWidth(4);
    paint.setColor(Color.BLACK);
    paint.setStyle(Paint.Style.STROKE);
    //设置虚线效果new float[]{可见长度, 不可见长度},偏移值
    paint.setPathEffect(null);
    //绘制直线
    canvas.drawPath(HelpPath.cooPath(coo, winSize), paint);
    //左箭头
    canvas.drawLine(winSize.x, coo.y, winSize.x - 40, coo.y - 20, paint);
    canvas.drawLine(winSize.x, coo.y, winSize.x - 40, coo.y + 20, paint);
    //下箭头
    canvas.drawLine(coo.x, winSize.y, coo.x - 20, winSize.y - 40, paint);
    canvas.drawLine(coo.x, winSize.y, coo.x + 20, winSize.y - 40, paint);
    //为坐标系绘制文字
    drawText4Coo(canvas, coo, winSize, paint);
    }
    /
    *
  • 为坐标系绘制文字
  • @param canvas 画布
  • @param coo 坐标系原点
  • @param winSize 屏幕尺寸
  • @param paint 画笔
    */
    private static void drawText4Coo(Canvas canvas, Point coo, Point winSize, Paint paint) {
    //绘制文字
    paint.setTextSize(50);
    canvas.drawText(“x”, winSize.x - 60, coo.y - 40, paint);
    canvas.drawText(“y”, coo.x - 40, winSize.y - 60, paint);
    paint.setTextSize(25);
    //X正轴文字
    for (int i = 1; i < (winSize.x - coo.x) / 50; i++) {
    paint.setStrokeWidth(2);
    canvas.drawText(100 * i + “”, coo.x - 20 + 100 * i, coo.y + 40, paint);
    paint.setStrokeWidth(5);
    canvas.drawLine(coo.x + 100 * i, coo.y, coo.x + 100 * i, coo.y - 10, paint);
    }
    //X负轴文字
    for (i
  • 23
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值