Swing/RatingLabel のバックアップの現在との差分(No.6)
TITLE:RGBImageFilterでアイコンの色調を変更
RGBImageFilterでアイコンの色調を変更
編集者:Terai Atsuhiro~
作成日:2006-08-21
更新日:2022-11-16 (水) 16:41:34
- category: swing folder: RatingLabel title: RGBImageFilterでアイコンの色調を変更 tags: [ImageIcon, RGBImageFilter, JLabel] author: aterai pubdate: 2006-08-21T11:55:27+09:00 description: RGBImageFilterで色調を変更したアイコンの用意し、評価用コンポーネントを作成します。 image: hreflang:
href: https://java-swing-tips.blogspot.com/2008/12/jlabel-star-rating-bar.html lang: en
概要
RGBImageFilter
で色調を変更したアイコンの用意し、評価用コンポーネントを作成します。
概要
RGBImageFilterで色調を変更したアイコンの用意し、評価用コンポーネントを作成します。Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spanadd
private final ImageProducer ip = orgIcon.getImage().getSource();
#spanend
#spandel
**サンプルコード [#a85a2963]
#spanend
#spandel
#code{{
#spanend
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();
}
}
#spandel
View in GitHub: Java, Kotlin- &jnlp;
- &jar;
- &zip;
private static ImageIcon makeStarImageIcon(
ImageProducer ip, float rf, float gf, float bf) { return new ImageIcon(Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(ip, new SelectedImageFilter(rf, gf, bf))));
}
解説
RGBImageFilterを使用して、一つのアイコンから複数の色の異なるアイコンを生成しています。 class SelectedImageFilter extends RGBImageFilter {private final float rf; private final float gf; private final float bf;上記のサンプルは、アマゾンなど*1でよく見かける5段階の評価を行うコンポーネントです。クリックしたアイコンの位置が評価レベルになります。
protected SelectedImageFilter(float rf, float gf, float bf) { super(); this.rf = Math.min(1f, rf); this.gf = Math.min(1f, gf); this.bf = Math.min(1f, bf); canFilterIndexColorModel = false; }
参考リンク
- XP Style Icons - Windows Application Icon, Software XP Icons
- アイコンを利用しています。
@Override public int filterRGB(int x, int y, int argb) { int r = (int) (((argb >> 16) & 0xFF) * rf); int g = (int) (((argb >> 8) & 0xFF) * gf); int b = (int) ((argb & 0xFF) * bf); return (argb & 0xFF_00_00_00) | (r << 16) | (g << 8) | (b); }
} }}
- アイコンを利用しています。
コメント
- 「Rating Bar」と言うみたいです。Masuga Design » Unobtrusive AJAX Star Rating Bar -- terai
解説
上記のサンプルはRGBImageFilter
を使用して1
つのアイコンから複数の色の異なるアイコンを生成し、5
段階の評価を行うコンポーネントを作成しています。クリックしたアイコンの位置が評価レベルになります。
参考リンク
- PI Diagona Icons Pack 1.0 - Download Royalty Free Icons and Stock Images For Web & Graphics Design
- アイコンを引用