Canvas的基本用法


代碼地址如下:
http://www.demodashi.com/demo/14723.html

前言

在之前講過畫筆Paint的基本使用,這篇文章讓我們來了解下畫布---Canvas的基本使用。
相關文章:
自定義控件概述
Paint的基本使用

今天講解的內容有:

  1. Canvas設置背景
  2. Canvas畫Point
  3. Canvas畫直線
  4. 矩形構造方法
  5. canvas畫矩形
  6. Color顏色的構建和提取
  7. Canvas用直線畫"正"字示例
  8. 項目結構圖和效果圖
一.Canvas設置背景

canvas設置背景有三種方法:

// canvas.drawARGB(23,55,70,32);
// canvas.drawRGB(77,120,240);
   canvas.drawColor(Color.WHITE);
二.Canvas畫Point

canvas畫點的方法如下:

        Paint paint=new Paint();
        paint.setColor(Color.RED);//設置顏色
        //畫點的時候,Paint的style設置無效,故此處不設置Paint.Style
        paint.setStrokeWidth(30f);
        //畫點
        canvas.drawPoint(500,100,paint);
        //注:畫出的點是方塊,而不是圓.

需要注意的是,畫點時,設置Paint的style無效,且畫出來的點不是圓的,而是實心小方塊。

三.Canvas畫直線

canvas畫直線的方法如下:

canvas.drawLine(float startX,float startY,float stopX,float stopY,Paint paint);

其中 startX:畫線起點x坐標
startY:畫線起點y坐標
stopX: 畫線結束點x坐標
stopY: 畫線結束點y坐標

四.矩形構造方法

矩形分為 Rect 和 RectF 兩個類,這兩個類的用法基本一樣,區別是 Rect 構造的時候,對應傳的坐標值為 int 數據類型,而RectF 構造的時候,對應傳的坐標值為 float 數據類型

4.1 Rect的構造方法
Rect rect=new Rect();
Rect rect=new Rect(Rect r);
Rect rect=new Rect(int left,int top,int right,int bottom);
4.2 RectF的構造方法
RectF rectf=new RectF();
RectF rectf=new RectF(Rect r);
RectF rectf=new RectF(RectF rf);
RectF rectf=new RectF(float left,float top,float right,float bottom);
五.canvas畫矩形

canvas畫矩形有兩種方式,直接畫矩形或先構造矩形,然后將矩形設置到canvas上

5.1 canvas直接畫矩形
canvas.drawRect(float left,float top,float right,float bottom,Paint paint);

注意 canvas直接畫矩形的時候,坐標參數為float類型。

5.2 先畫矩形,再設置到畫布上

canvas設置矩形的方法是這樣的:

        canvas.drawRect(Rect rect,Paint paint);
        canvas.drawRect(RectF rectf,Paint paint);

若想在canvas上畫矩形,你可以這樣:

Rect rect=new Rect(50,450,200,600);
canvas.drawRect(rect,paint);

或者像這樣:

        Rect rect=new Rect();
        rect.set(50,450,200,600);
        canvas.drawRect(rect,paint);
六. Color顏色的構建和提取
6.1 Color顏色的構建
         Color.argb(int alpha,int red,int green,int blue);
         Color.rgb(int red,int green,int blue);
6.2 Color顏色的提取
         int alpha=Color.alpha(0xff5e73df);
         int red=Color.red(0xff5e73df);
         int green=Color.green(0xff5e73df);
         int blue=Color.blue(0xff5e73df);
七.Canvas用直線畫"正"字示例

具體代碼demo中有,這里主要介紹下自定義控間Canvas在MainActivity對應的activity_main.xml中的引用代碼如下:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    tools:context="com.android.testdemo.main.MainActivity">
    <com.android.testdemo.animation.CanvasView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</android.support.constraint.ConstraintLayout>
八. 項目結構圖和效果圖

項目結構圖

效果圖

Canvas的基本用法

代碼地址如下:
http://www.demodashi.com/demo/14723.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM