TITLE:RGBImageFilterでアイコンの色調を変更

RGBImageFilterでアイコンの色調を変更

編集者:Terai Atsuhiro
作成日:2006-08-21
更新日:2022-11-16 (水) 16:41:34

概要

RGBImageFilterで色調を変更したアイコンの用意し、評価用コンポーネントを作成します。

#screenshot

サンプルコード

private final ImageProducer ip = orgIcon.getImage().getSource();
private MyLabel makeLabel(float[] filter) {
  SelectedImageFilter sif = new SelectedImageFilter(filter);
  ImageIcon imageIcon = new ImageIcon(
    createImage(new FilteredImageSource(ip, sif)));
  return new MyLabel(imageIcon);
}
private class SelectedImageFilter extends RGBImageFilter {
  private final float[] filter;
  public SelectedImageFilter(float[] filter) {
    this.filter = filter;
    canFilterIndexColorModel = true;
  }
  public int filterRGB(int x, int y, int argb) {
    Color color = new Color(argb, true);
      float[] array = new float[4];
      color.getComponents(array);
      return new Color(array[0]*filter[0],
                       array[1]*filter[1],
                       array[2]*filter[2],
                       array[3]).getRGB();
    }
  }
}
  • &jnlp;
  • &jar;
  • &zip;

解説

RGBImageFilterを使用して、一つのアイコンから複数の色の異なるアイコンを生成しています。

上記のサンプルは、アマゾンなど*1でよく見かける5段階の評価を行うコンポーネントです。クリックしたアイコンの位置が評価レベルになります。

コメント