【AndroidのCanvasに向き合おう】Canvasのメソッド一覧
Canvasに向き合おう
Canvasから目を背けていたので、向き合うことにしました。
種類が結構あるのでいくつかの記事に分割することにします。
下記に大まかな分類で記事を書こうと思っていますが、後からいろいろ変わるとおもいます。
Canvasを塗りつぶそう | ||
void | drawRGB(int r, int g, int b) | canvasを指定したRGBカラーで塗りつぶす。
|
void | drawARGB(int a, int r, int g, int b) | canvasを指定したARGBカラーで塗りつぶす。
|
void | drawColor(int color) | canvasを指定した色数値(#AARRGGBB)が表す色で塗りつぶす。 Colorを使うと簡単に色を指定できます。
|
void | drawPaint(Paint paint) | canvasを指定したPaintの色で塗りつぶします。
|
点を描こう | ||
void | drawPoint(float x, float y, Paint paint) | 指定した座標に点を中心を描画する。
|
void | drawPoints(float[] pts, Paint paint) | 指定した座標配列に点を描画する。
|
void | drawPoints(float[] pts, int offset, int count, Paint paint) | 指定した座標配列に点を描画する。
|
線を描こう | ||
void | drawLine(float startX, float startY, float stopX, float stopY, Paint paint) | 指定した始端座標と終端座標に線を描画する。
|
void | drawLines(float[] pts, Paint paint) | 指定した座標配列を使い線を描画する。
|
void | drawLines(float[] pts, int offset, int count, Paint paint) | 指定した座標配列を使い線を描画する。
|
四角や角丸四角を描こう | ||
void | drawRect(float left, float top, float right, float bottom, Paint paint) | 四角形の左上と右下の座標を指定して描画する。
|
void | drawRect(Rect rect, Paint paint) | Rectを使って位置と幅高さを指定し四角形を描画する。
|
void | drawRect(RectF rect, Paint paint) | RectFを使って位置と幅高さを指定し四角形を描画する。
|
void | drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint) | 角丸四角形の左上と右下の座標を指定し、x軸方向の径とy軸方向の径を指定して描画する。
|
void | drawRoundRect(RectF rect, float rx, float ry, Paint paint) | RectFを使って位置と幅高さを指定しx軸方向の径とy軸方向の径を指定し角丸四角形を描画する。
|
円・楕円・扇・円弧を描こう | ||
void | drawCircle(float cx, float cy, float radius, Paint paint) | 中心座標と半径を指定して円を描く
|
void | drawOval(float left, float top, float right, float bottom, Paint paint) | 四角形の左上と右下の座標を指定し、その四角形に内接する楕円を描画する。
|
void | drawOval(RectF oval, Paint paint) | RectFを使って位置と幅高さを指定し四角形を定義し、その四角形に内接する楕円を描画する。
|
void | drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, Paint paint) | 四角形の左上と右下の座標を指定し、その四角形に内接する楕円を定義する。 定義した楕円の描画開始角度と描画角度、扇または円弧を指定することで扇、円弧を描画する。
|
void | drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) | RectFを使って位置と幅高さを指定し四角形を定義し、その四角形に内接する楕円を定義する。 定義した楕円の描画開始角度と描画角度、扇または円弧を指定することで扇、円弧を描画する。
|
文字を描こう | ||
void | drawText(String text, float x, float y, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。
|
void | drawText(char[] text, int index, int count, float x, float y, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。
|
void | drawText(String text, int start, int end, float x, float y, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。
|
void | drawText(CharSequence text, int start, int end, float x, float y, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。
|
void | drawPosText(String text, float[] pos, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。 API level 16で非推奨になりました。
|
void | drawPosText(char[] text, int index, int count, float[] pos, Paint paint) | 座標、Paint、char配列を指定して文字を描画する。 API level 16で非推奨になりました。
|
void | drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) | Path、Paint、文字列を指定して文字を描画する。 描画開始位置はPathの始端からhOffsetの位置になります。 文字の描画時の長さ(hOffsetを含む)がPathの長さを超えてしまうと終端にすべて描画されます。
|
void | drawTextOnPath(char[] text, int index, int count, Path path, float hOffset, float vOffset, Paint paint) | Path、Paint、char配列を指定して文字を描画する。 描画開始位置はPathの始端からhOffsetの位置になります。 文字の描画時の長さ(hOffsetを含む)がPathの長さを超えてしまうと終端にすべて描画されます。
|
画像を描こう | ||
void | drawBitmap(Bitmap bitmap, float left, float top, Paint paint) | 画像の左上を指定して画像を描画する。
|
void | drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) | Bitmapから描画する範囲を指定し、Canvas上に描画する。
|
void | drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) | Bitmapから描画する範囲を指定し、Canvas上に描画する。
|
void | drawBitmap(int[] colors, int offset, int stride, int x, int y, int width, int height, boolean hasAlpha, Paint paint) | 色配列を指定し、Canvas上に描画する。 API level 21で非推奨になりました。
|
void | drawBitmap(int[] colors, int offset, int stride, float x, float y, int width, int height, boolean hasAlpha, Paint paint) | 色配列を指定し、Canvas上に描画する。 API level 21で非推奨になりました。
|
void | drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) | Bitmapを描画する方法を行列で指定し、Canvas上に描画する。
|
void | drawBitmapMesh(Bitmap bitmap, int meshWidth, int meshHeight, float[] verts, int vertOffset, int[] colors, int colorOffset, Paint paint) | Bitmapを任意の縦線(左右端を含む)と横線(左右端を含む)で分割し、その縦横の線の交点座標を決めます。 交点座標に対応するCanvas上の任意の座標を配列(メッシュ座標)で指定してCanvas上に描画する。
|
描画範囲を制限する | ||
boolean | clipRect(int left, int top, int right, int bottom) | 四角形の左上と右下の座標を指定してクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipRect(float left, float top, float right, float bottom) | 四角形の左上と右下の座標を指定してクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipRect(Rect rect) | Rectを使用してクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipRect(RectF rect) | RectFを使用してクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipPath(Path path) | Pathを使用してクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipRegion(Region region) | Regionを使用してクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。 API level 21で非推奨になりました。 clipRect(Rect)を代わりに使用しましょう。
|
描画範囲を制御する | ||
boolean | clipRect(float left, float top, float right, float bottom, Region.Op op) | 四角形の左上と右下の座標を指定してオプションに従いクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipRect(Rect rect, Region.Op op) | Rectを使用してオプションに従いクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipRect(RectF rect, Region.Op op) | RectFを使用してオプションに従いクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipPath(Path path, Region.Op op) | Pathを使用してオプションに従いクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。
|
boolean | clipRegion(Region region, Region.Op op) | Regionを使用してオプションに従いクリッピングする。 座標は対象のオリジナルCanvasの左上を原点とします。 ただし、クリップは現在のクリップされた範囲内で行われる。 API level 21で非推奨になりました。 clipRect(Rect)を代わりに使用しましょう。
|
final Rect | getClipBounds() | 現在クリッピングされている範囲をRectインスタンスとして取得する。 |
boolean | getClipBounds(Rect bounds) | 空のRectインスタンスに現在クリッピングされている範囲を設定する。 |
変形する | ||
void | translate(float dx, float dy) | Canvasを移動させる。
|
void | scale(float sx, float sy) | 画面左上を基点としてCanvasを拡大・縮小させる。
|
void | scale(float sx, float sy, float px, float py) | 任意の座標を基点としてCanvasを拡大・縮小させる。
|
void | rotate(float degrees) | 画面左上を基点としてCanvasを回転させる。
|
final void | rotate(float degrees, float px, float py) | 任意の座標を基点としてCanvasを回転させる。
|
void | skew(float sx, float sy) | Canvasを歪曲させる。
|
行列で変形する | ||
void | setMatrix(Matrix matrix) | 現在、Canvasに設定されているMatrixを完全に入れ替える。
|
void | concat(Matrix matrix) | 現在、Canvasに設定されているMatrixに前側から掛け算を行う。
|
Matrix | getMatrix() | 現在、Canvasに設定されているMatrixを取得する。 API level 16で非推奨になりました。 |
void | getMatrix(Matrix ctm) | 現在、Canvasに設定されているMatrixを私たMatrixに設定する。
|
描画の保存 | ||
boolean | quickReject(float left, float top, float right, float bottom, Canvas.EdgeType type) | 現在のMatrixによって変形した後、四角形の左上と右下の座標で指定された領域がクリップされたCanvas内に含まれるかを判定する。 含まれない場合はtrue、含まれる場合はfalseを返却する。
|
boolean | quickReject(RectF rect, Canvas.EdgeType type) | 現在のMatrixによって変形した後、RectFで指定された領域がクリップされたCanvas内に含まれるかを判定する。 含まれない場合はtrue、含まれる場合はfalseを返却する。
|
boolean | quickReject(Path path, Canvas.EdgeType type) | 現在のMatrixによって変形した後、Pathで指定された領域がクリップされたCanvas内に含まれるかを判定する。 含まれない場合はtrue、含まれる場合はfalseを返却する。
|
描画の保存 | ||
int | getSaveCount() | Returns the number of matrix/clip states on the Canvas’ private stack. |
void | restore() | This call balances a previous call to save(), and is used to remove all modifications to the matrix/clip state since the last save call. |
void | restoreToCount(int saveCount) | Efficient way to pop any calls to save() that happened after the save count reached saveCount. |
int | save(int saveFlags) | Based on saveFlags, can save the current matrix and clip onto a private stack. |
int | save() | Saves the current matrix and clip onto a private stack. |
頂点配列を使って描画する | ||
void | drawVertices(Canvas.VertexMode mode, int vertexCount, float[] verts, int vertOffset, float[] texs, int texOffset, int[] colors, int colorOffset, short[] indices, int indexOffset, int indexCount, Paint paint) | Draw the array of vertices, interpreted as triangles (based on mode). |
Canvasの情報を取得する | ||
int | getDensity() | Returns the target density of the canvas. |
DrawFilter | getDrawFilter() | |
int | getHeight() | Returns the height of the current drawing layer |
int | getMaximumBitmapHeight() | Returns the maximum allowed height for bitmaps drawn with this canvas. |
int | getMaximumBitmapWidth() | Returns the maximum allowed width for bitmaps drawn with this canvas. |
int | getWidth() | Returns the width of the current drawing layer |
boolean | isHardwareAccelerated() | Indicates whether this Canvas uses hardware acceleration. |
boolean | isOpaque() | Return true if the device that the current layer draws into is opaque (i.e. |
void | setBitmap(Bitmap bitmap) | Specify a bitmap for the canvas to draw into. |
void | setDensity(int density) | Specifies the density for this Canvas’ backing bitmap. |
void | setDrawFilter(DrawFilter filter) |
レイヤー | ||
int | saveLayer(float left, float top, float right, float bottom, Paint paint) | Convenience for saveLayer(left, top, right, bottom, paint, ALL_SAVE_FLAG) |
int | saveLayer(RectF bounds, Paint paint, int saveFlags) | This behaves the same as save(), but in addition it allocates and redirects drawing to an offscreen bitmap. |
int | saveLayer(RectF bounds, Paint paint) | Convenience for saveLayer(bounds, paint, ALL_SAVE_FLAG) |
int | saveLayer(float left, float top, float right, float bottom, Paint paint, int saveFlags) | Helper version of saveLayer() that takes 4 values rather than a RectF. |
int | saveLayerAlpha(float left, float top, float right, float bottom, int alpha, int saveFlags) | Helper for saveLayerAlpha() that takes 4 values instead of a RectF. |
int | saveLayerAlpha(RectF bounds, int alpha, int saveFlags) | This behaves the same as save(), but in addition it allocates and redirects drawing to an offscreen bitmap. |
int | saveLayerAlpha(float left, float top, float right, float bottom, int alpha) | Helper for saveLayerAlpha(left, top, right, bottom, alpha, ALL_SAVE_FLAG) |
int | saveLayerAlpha(RectF bounds, int alpha) | Convenience for saveLayerAlpha(bounds, alpha, ALL_SAVE_FLAG) |
未分類 | ||
void | drawPicture(Picture picture) | Save the canvas state, draw the picture, and restore the canvas state. |
void | drawPicture(Picture picture, Rect dst) | Draw the picture, stretched to fit into the dst rectangle. |
void | drawPicture(Picture picture, RectF dst) | Draw the picture, stretched to fit into the dst rectangle. |
void | drawPath(Path path, Paint paint) | Draw the specified path using the specified paint. |
void | drawColor(int color, PorterDuff.Mode mode) | Fill the entire canvas’ bitmap (restricted to the current clip) with the specified color and porter-duff xfermode. |
void | drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount, float x, float y, boolean isRtl, Paint paint) | Draw a run of text, all in a single direction, with optional context for complex text shaping. |
void | drawTextRun(CharSequence text, int start, int end, int contextStart, int contextEnd, float x, float y, boolean isRtl, Paint paint) | Draw a run of text, all in a single direction, with optional context for complex text shaping. |
Region.Opについて
オプションは6種類存在します、これらのオプションは今の描画範囲とメソッドで指定された範囲の二つの範囲を元に描画範囲を決定します。
Region.Op UNION | 元の描画範囲と指定された範囲の両方が描画範囲となります。 |
Region.Op REPLACE | 元の描画範囲を指定された範囲に置き換えます。 |
Region.Op DIFFERENCE | 元の描画範囲に対して指定された範囲を削除します。 |
Region.Op REVERSE_DIFFERENCE | 指定された範囲に対して、元の描画範囲を削除した部分が描画範囲になります。 |
Region.Op INTERSECT | 元の描画範囲と指定された範囲の重なる部分が描画範囲となります。 |
Region.Op XOR | 2つの範囲の論理演算XORをとります。 |
|
|
|
|
|
||||||||||
| ||||||||||||||