グラフィックス(3)-ColorクラスとPaintクラス


グラフィックスを描画するには、Canvasオブジェクトを取得して、このCanvasに描画をおこなうことになりますが、 このためにはColorクラスとPaintクラスがとういうものか知っておく必要があります。

実際にCanvasに描画をおこなう前に、このColorとPaintについて述べる事にします。

Colorクラス

グラフィックの描画等で、色を指定するにはint型の値を使います。

ここでは、便宜上、このint型の値をColor値と呼ぶ事にします。

Color値は、16進0x00~0xffまでのRGB(赤緑青)値と透明度を示すアルファ値の、4つの要素からなります。

RGB(赤緑青)とアルファ値についてはRGB を参照して下さい。

Colorクラスには、色を指定するのに便利な定数やメソッドが、定義されています。

Colorクラスには、あらかじめよく使う色を示す以下のような、int型の定数が定義されています。

BLACK(黒),BLUE(青),CYAN(水色),DKGRAY(暗い灰色),GRAY(灰色),GREEN(緑),LTGRAY(暗い灰色),MAGENTA(紫),RED(赤),WHITE(白),YELLOW(黄色)

また、透明である事を示すTRANSPARENT定数も、定義されています。

メソッド

Colorクラスの静的メソッドには、Color値とHSV色空間を示す値の相互変換をおこなうメソッドや,Color値からRGB値およびアルファ値要素を取り出すメソッド、 逆にRGB値およびアルファ値からColor値を求めるメソッドが、用意されています。

  • static int HSVToColor(int alpha, float[] hsv)
  • static int HSVToColor(int alpha, float[] hsv)
  • static int HSVToColor(float[] hsv)
  • static void RGBToHSV(int red, int green, int blue, float[] hsv)
  • static int alpha(int color)
  • static int argb(int alpha, int red, int green, int blue)
  • static int blue(int color)
  • static void colorToHSV(int color, float[] hsv)
  • static int green(int color)
  • static int parseColor(String colorString)
  • static int red(int color)
  • static int rgb(int red, int green, int blue)

parseColorメソッドは、色を示す文字列からColor値を取得します。 文字列の指定には 、#RRGGBBまたは#AARRGGBB形式か 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta', 'yellow', 'lightgray', 'darkgray'の文字列を指定します。 parseColor以外のメソッドについては、メソッド名と引数から使い方は想像できると思います。

以下のプログラムは、画面左半分を黒色に、右半分を白色に塗りつぶした後に、太い緑色の線を、透明度を16段階に変化させて描画して、どのように視えるを確認するためのものです。

リスト7

12行目のsetStrokeWidthメソッドは、描画する線の太さを指定しています。

「グラフィックス(1)-Viewクラスへの描画」の、リスト1のCustomViewクラスのonDrawメソッド内を、上記のプログラムに書き換えると、以下の図のように表示されます。

今後、掲載するサンプルのほとんどは、Viewクラスではリスト1,SurfaceViewではリスト4の、 コメントにある「この間にグラフィック描画のコードを記述する。」の部分に記述する事で、動作させる事ができます。

 

 

画面をみてみると、透明度の変化によって表示色がどのように変化するかが、わかると思います。

Paintクラス

Paintオブジェクトは、グラフィックスを描画する時に使われる、ペンのようなものと思えば良いでしょう。

ペンのように、描画する図形の色や点や線の太さなどを、指定する事ができます。

コンストラクタ

Paintクラスのコンストラクタには、以下の3つの形式があります。

  • Paint()
    デフォルトの設定のPaintオブジェクトを生成します。
  • Paint(int flags)
    Paintクラスに定義されているフラグ定数を指定して、Paintオブジェクトを生成します。
    よく使われるフラグ定数は、ANTI_ALIAS_FLAGで、これを指定するとアンチエイリアス機能付きで、図形が描画されます。
  • Paint(Paint paint)
    引数で指定されたPaintオブジェクトの設定に従って、新しいPaintオブジェクトを生成します。

メソッド

Paintクラスには、さまざまなメソッドが用意されていますが、その中で比較的よく使うと思われるメソッドを、以下に示します。

  • void setColor(int color)
    描画色を、Color値で指定します。
  • void setARGB(int a, int r, int g, int b)
    描画色を、RGBとアルファ値で指定します。
  • void setAlpha(int a)
    描画色に、アルファ値のみを単独で指定します。
    例えば、以下のColor値の設定は
    次のように、RGBとアルファ値を個別に設定しても、同じです。
  • void setAntiAlias(boolean aa)
    アンチエイリアスを設定するかどうかを、指定します。
    以下のプログラムは、アンチエイリアスを設定しない場合と、した場合の、2つの円を描画するコードです。
    このプログラムを実行すると、以下のように表示されます。



    右側の円の方が、円が滑らかに描画されているのが、わかると思います。
    アンチエイリアスを設定すると、輪郭がぼやけてしまいますが滑らかに表示されます。
  • void setStrokeWidth(float width)
    描画する線の太さを、指定します。
  • void setTextSize(float textSize)
    描画する文字の大きさを、指定します。
    文字の描画については「テキストの描画」を参照して下さい。

    文字については、以下のようなメソッドがあります。
    • setTextAlign(Paint.Align align)
      Set the paint's text alignment.
    • void setTextScaleX(float scaleX)
      Set the paint's horizontal scale factor for text.
    • void setTextSize(float textSize)
      Set the paint's text size.
    • void setTextSkewX(float skewX)
      Set the paint's horizontal skew factor for text.
    • Typeface setTypeface(Typeface typeface)
  • void setStyle(Paint.Style style)
    描画する図形の内部を塗りつぶしたり、輪郭線を描画すかどうかを、次のenum型Paint.Styleの値で指定します。
    • Paint.Style.STROKE
      図形の輪郭線のみを、描画する。
    • Paint.Style.FILL
      図形の内部を、塗りつぶす。
    • Paint.Style.FILL_AND_STROKE
      図形の内部を塗りつぶし、かつ輪郭線のみを描画する。

    以下のコードは、それぞれの描画スタイルで円を描くプログラムです。
    このプログラムを実行すると、以下のように表示されます。

     

     

  • void reset()
    デフォルトの設定に戻します。

参考URL

 

ページのトップへ戻る