日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 自定义paint,Android中自定义常用的三个对象解析(Paint,Color,Canvas)

發布時間:2024/9/3 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 自定义paint,Android中自定义常用的三个对象解析(Paint,Color,Canvas) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Paint,Color,Canvas

Paint:畫筆對象,畫圖用的“筆”

Color:顏色,相當于調料

Canvas:畫布,現實中的紙板

Paint 畫筆

常用的方法就是設置和獲取到畫筆的樣式:

paint.setStyle(); 設置畫筆的風格,空心的或者是實心的

paint.setColor(); 設置畫筆的顏色

paint.setStrokeWidth(); 設置邊框線的寬度

paint.setAlpha(); 設置畫筆的Alpha值

paint.setAntiAlias(); 設置畫筆的鋸齒效果

paint.setTextSize(); 設置字體的大小

paint.getAlpha(); 獲取到畫筆的Alpha值

paint.getColor(); 獲取到畫筆的顏色

paint.getTextBounds(); 獲取到最小的能包容字體的邊框

。。。。。。。

Color 顏色

通過Color.顏色名 ,來獲取到想要的顏色。

Color里面設置了許多常用的顏色枚舉值,比如:

@ColorInt public static final int BLACK = 0xFF000000;

@ColorInt public static final int DKGRAY = 0xFF444444;

@ColorInt public static final int GRAY = 0xFF888888;

@ColorInt public static final int LTGRAY = 0xFFCCCCCC;

@ColorInt public static final int WHITE = 0xFFFFFFFF;

@ColorInt public static final int RED = 0xFFFF0000;

@ColorInt public static final int GREEN = 0xFF00FF00;

@ColorInt public static final int BLUE = 0xFF0000FF;

@ColorInt public static final int YELLOW = 0xFFFFFF00;

@ColorInt public static final int CYAN = 0xFF00FFFF;

@ColorInt public static final int MAGENTA = 0xFFFF00FF;

@ColorInt public static final int TRANSPARENT = 0;

同樣,也可以自定義想要的顏色:調用Color.argb()

/**

* Return a color-int from alpha, red, green, blue components.

* These component values should be [0..255], but there is no

* range check performed, so if they are out of range, the

* returned color is undefined.

*@param alpha Alpha component [0..255] of the color

*@param red Red component [0..255] of the color

*@param green Green component [0..255] of the color

*@param blue Blue component [0..255] of the color

*/

@ColorInt

public static int argb(int alpha, int red, int green, int blue) {

return (alpha << 24) | (red << 16) | (green << 8) | blue;

}

Canvas 畫布,可以繪制常見的圖形,比如圓,直線,矩形

繪制直線:canvas.drawLine();

/**

* Draw a line segment with the specified start and stop x,y coordinates,

* using the specified paint.

*

*

Note that since a line is always "framed", the Style is ignored in the paint.

*

*

Degenerate lines (length is 0) will not be drawn.

*

* @param startX The x-coordinate of the start point of the line

* @param startY The y-coordinate of the start point of the line

* @param paint The paint used to draw the line

*/

public void **drawLine**(float startX, float startY, float stopX, float stopY,

@NonNull Paint paint)

繪制圓:canvas.drawCircle();

/**

* Draw the specified circle using the specified paint. If radius is <= 0,

* then nothing will be drawn. The circle will be filled or framed based

* on the Style in the paint.

*

* @param cx The x-coordinate of the center of the cirle to be drawn

* @param cy The y-coordinate of the center of the cirle to be drawn

* @param radius The radius of the cirle to be drawn

* @param paint The paint used to draw the circle

*/

public void **drawCircle**(float cx, float cy, float radius, @NonNull Paint paint)

繪制矩形:;canvas.drawRect();

/**

* Draw the specified Rect using the specified paint. The rectangle will

* be filled or framed based on the Style in the paint.

*

* @param left The left side of the rectangle to be drawn

* @param top The top side of the rectangle to be drawn

* @param right The right side of the rectangle to be drawn

* @param bottom The bottom side of the rectangle to be drawn

* @param paint The paint used to draw the rect

*/

public void **drawRect**(float left, float top, float right, float bottom, @NonNull Paint paint)

繪制圖片:canvas.drawBitmap();

/**

* Draw the specified bitmap, with its top/left corner at (x,y), using

* the specified paint, transformed by the current matrix.

*

*

Note: if the paint contains a maskfilter that generates a mask which

* extends beyond the bitmap‘s original width/height (e.g. BlurMaskFilter),

* then the bitmap will be drawn as if it were in a Shader with CLAMP mode.

* Thus the color outside of the original width/height will be the edge

* color replicated.

*

*

If the bitmap and canvas have different densities, this function

* will take care of automatically scaling the bitmap to draw at the

* same density as the canvas.

*

* @param bitmap The bitmap to be drawn

* @param left The position of the left side of the bitmap being drawn

* @param top The position of the top side of the bitmap being drawn

* @param paint The paint used to draw the bitmap (may be null)

*/

public void **drawBitmap**(@NonNull Bitmap bitmap, float left, float top, @Nullable Paint paint) {

throwIfCannotDraw(bitmap)

繪制文本:canvas.drawText();

/**

* Draw the text, with origin at (x,y), using the specified paint. The

* origin is interpreted based on the Align setting in the paint.

*

* @param text The text to be drawn

* @param x The x-coordinate of the origin of the text being drawn

* @param y The y-coordinate of the baseline of the text being drawn

* @param paint The paint used for the text (e.g. color, size, style)

*/

public void **drawText**(@NonNull String text, float x, float y, @NonNull Paint paint)

繪制圓弧:canvas.drawArc();

/**

*

Draw the specified arc, which will be scaled to fit inside the

* specified oval.

*

*

If the start angle is negative or >= 360, the start angle is treated

* as start angle modulo 360.

*

*

If the sweep angle is >= 360, then the oval is drawn

* completely. Note that this differs slightly from SkPath::arcTo, which

* treats the sweep angle modulo 360. If the sweep angle is negative,

* the sweep angle is treated as sweep angle modulo 360

*

*

The arc is drawn clockwise. An angle of 0 degrees correspond to the

* geometric angle of 0 degrees (3 o‘clock on a watch.)

*

* @param oval The bounds of oval used to define the shape and size

* of the arc

* @param startAngle Starting angle (in degrees) where the arc begins

* @param sweepAngle Sweep angle (in degrees) measured clockwise

* @param useCenter If true, include the center of the oval in the arc, and

close it if it is being stroked. This will draw a wedge

* @param paint The paint used to draw the arc

*/

public void **drawArc**(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter,

@NonNull Paint paint)

。。。。。。。

小結

自定義view的時候一般會重寫onDraw()方法,畫圖時必要的三要素:Color,paint,canvas

設置畫筆的樣式

設置顏色

在畫布上作圖

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的android 自定义paint,Android中自定义常用的三个对象解析(Paint,Color,Canvas)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。