Android绘图介绍——基本图形描画

介绍完Android动画后再介绍Android绘画。

Paint与Canvas

像我们平时画图一样,需要两个工具,纸和笔。Paint就是相当于笔,而Canvas就是纸,这里叫画布。

所以,凡有跟要要画的东西的设置相关的,比如大小,粗细,画笔颜色,透明度,字体的样式等等,都是在Paint里设置;同样,凡是要画出成品的东西,比如圆形,矩形,文字等相关的都是在Canvas里生成。

本篇用到的类如下:

android.graphics.Canvas

Canvas指画布,表现在屏幕上就是一块区域,可以在上面使用各种API绘制想要的东西。

android.graphics.Color

android内置的颜色,比如系统资源中定义的颜色,有BLACK(黑色),BLUE(蓝色),CYAN(青色),GRAY(灰色),GREEN(绿色),RED(红色),WRITE(白色),YELLOW(黄色)等

当然android的android.graphics.Color也提供了构造自定义颜色的静态方法。颜色值的定义是由透明度alpha和RGB(红绿蓝)三原色来定义的,以“#”开始,后面依次为:透明度-红-绿-蓝,

android.graphics.Paint

在自定义组件中,Paint类是一个很重要的类,主要包含颜色、文本、图形样式、位图模式、滤镜等几个方面。

android.graphics.Rect

android.graphics.RectF

这两个类区别不大,表示一个矩形,总结来说就是用左上角的坐标和右下角的坐标来表示一个矩形。

Paint常用方法如下:

方法描述

Paint()

构造方法

void setAntiAlias(boolean aa)

抗锯齿功能

void setColor(int color)

设置画笔颜色

void setStyle(Style style)

设置填充格式

void setStrokeWidth(float width)

设置画笔宽度

void setShadowLayer(float radius, float dx, float dy, int shadowColor)

设置阴影

void setTextSize(float textSize)

设置文字字体

void setFakeBoldText(boolean fakeBoldText)

设置字体是否粗体

Canvas常用方法如下:

方法描述

void drawRGB(int r, int g, int b)

设置画布颜色

void drawLine(float startX, float startY, float stopX, float stopY, Paint paint)

画线

void drawCircle(float cx, float cy, float radius, Paint paint)

画圆

void drawPoint(float x, float y, Paint paint)

画点

void drawRect(float left, float top, float right, float bottom, Paint paint)

画直角矩形

void drawRoundRect(RectF rect, float rx, float ry, Paint paint)

画圆角矩形

void drawOval(RectF oval, Paint paint)

画椭圆形

void drawArc(RectF oval, float strAngle, float sweepAngle, boolean, useCenter, Paint paint)

画扇形(弧线)

void drawPath(Path path, Paint paint)

画路径

void drawText(String text, float x, float y, Paint paint)

画文字

void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)

画图片

运行后的效果:

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


</FrameLayout>

MyView文件:

package com.example.drawdomo;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.view.View;


public class MyView extends View {


    Context mContext;
    Paint paint_circle;
    Paint paint_line;
    Paint paint_point;
    Paint paint_rect;
    Paint paint_Oval;
    Paint paint_Arc;


    public MyView(Context context) {
        super(context);
        mContext = context;


        paint_circle = new Paint();
        paint_line = new Paint();
        paint_point = new Paint();
        paint_rect = new Paint();
        paint_Oval = new Paint();
        paint_Arc = new Paint();
    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);


        //设置画笔基本属性
        paint_circle.setAntiAlias(true);   //抗锯齿功能
        paint_circle.setColor(Color.RED);  //设置画笔颜色
        paint_circle.setStyle(Paint.Style.FILL);   //设置填充样式
        paint_circle.setStrokeWidth(5);    //设置画笔宽度
        paint_circle.setShadowLayer(10,15,15,Color.GREEN); //设置阴影


        //设置画布背景颜色
        canvas.drawRGB(10,20,200);


        //画圆
        canvas.drawCircle(190,200,150,paint_circle);


        paint_line.setColor(Color.YELLOW);
        paint_line.setStyle(Paint.Style.FILL);
        paint_line.setStrokeWidth(5);


        //画线
        canvas.drawLine(100,100,200,200,paint_line);


        paint_point.setColor(Color.BLUE);
        paint_point.setStyle(Paint.Style.FILL);
        paint_point.setStrokeWidth(20);


        //画点
        canvas.drawPoint(200,200,paint_point);


        paint_rect.setColor(Color.BLACK);
        paint_rect.setStyle(Paint.Style.FILL);
        paint_rect.setStrokeWidth(15);


        //画矩形
        canvas.drawRect(10,400,100,490,paint_rect);


        Rect rect = new Rect(230,400,320,490);
        canvas.drawRect(rect,paint_rect);


        //画圆角矩形
        RectF rectF = new RectF(120,400,210,490);
        canvas.drawRoundRect(rectF,30,30,paint_rect);


        paint_Oval.setColor(Color.GRAY);
        paint_Oval.setStyle(Paint.Style.STROKE);
        paint_Oval.setStrokeWidth(5);


        RectF rectF_Oval = new RectF(340,400,550,490);
        canvas.drawRect(rectF_Oval,paint_Oval);


        paint_Oval.setColor(Color.GREEN);
        canvas.drawOval(rectF_Oval,paint_Oval);


        paint_Arc.setColor(Color.RED);
        paint_Arc.setStyle(Paint.Style.STROKE);
        paint_Arc.setStrokeWidth(5);


//画扇形
        RectF rectF_Arc1 = new RectF(10,500,110,600);
        canvas.drawArc(rectF_Arc1,0,90,true,paint_Arc);


//画弧线
        RectF rectF_Arc2 = new RectF(120,500,240,600);
        canvas.drawArc(rectF_Arc2,0,90,false,paint_Arc);
    }
}

Activity文件:

package com.example.drawdomo;


import androidx.appcompat.app.AppCompatActivity;


import android.os.Bundle;
import android.widget.FrameLayout;


public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        FrameLayout root = (FrameLayout) findViewById(R.id.root);
        root.addView(new MyView(MainActivity.this));
    }
}

Domo代码:

Android绘图介绍-基本图形描画资源-CSDN文库 

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值