Javaプログラミング/Javaプログラミング関連情報

Graphics2Dに挑戦!(4ページ目)

Graphicsの高性能版「Graphics2D」を使って、より高度なグラフィック表現を目指そう!

執筆者:掌田 津耶乃

グラディエーションの利用


続いて、「ペイント」について、再度考えてみましょう。ここまでのサンプルでは、setPaintではすべてColorを引数に指定していました。が、これは別にColorである必要はないのです。「Paint」クラスのインスタンス(Colorもこれのサブクラスです)であれば、どんなものでもsetPaintで指定することができます。

Paint継承クラスの一つである「GradientPaint」というクラスを使えば、グラディエーションを使って塗りつぶすことができます。ちょっとやってみましょうか。

public void paintComponent(Graphics g) {
  super.paintComponent(g);
  Graphics2D g2 = (Graphics2D)g;
  int w = this.getWidth() - 20;
  int h = this.getHeight() - 20;
  Ellipse2D shape = new Ellipse2D.Double(10,10,w,h);
    GradientPaint paint = new GradientPaint(10f,10f,
      Color.RED,(float)w,(float)h,Color.YELLOW);
  g2.setPaint(paint);
  g2.fill(shape);
  paint = new GradientPaint(10f,(float)h,Color.GREEN,
    (float)w,10,Color.BLUE);
  g2.setPaint(paint);
  g2.setStroke(new BasicStroke(20));
  g2.draw(shape);
}

内部の塗りつぶしと線分をそれぞれグラディエーションして描く。


いかがですか、ずいぶんと面白い効果を得ることができますね。ここでは、「GradientPaint」というクラスを利用しています。これが、グラディエーションしながら塗りつぶしを行うためのクラスです。newする際に、グラディエーションに関する細かな情報を引数に指定していますね。

new GradientPaint(横位置1,縦位置1,[Color1],横位置2,縦位置2,[Color2]);


2つの位置と2つのColorを指定しています。これで、2点の間をグラディエーションしていきながら塗りつぶしを行う、というわけです。グラディエーション・クラスは、このGradientPaintの他にもいくつか用意されており、直線的なグラディエーションや、円形のグラディエーション、3つ以上の色を使ったグラディエーションなどさまざまな塗り方を指定できるようになっています。

他にも、イメージをテクスチャーとして塗りつぶすためのものなども用意されており、「塗りつぶし」の方法はかなり幅広く用意されているといってよいでしょう。基本図形であるシェイプと、この「ストローク」「ペイント」だけでもマスターできれば、ずいぶんと描画の幅は広がるはずですよ。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます