私の質問:リソース イメージの明るさを変更し、その 3 つのインスタンスを ImageIcons として保持できるようにしたいと考えています。1 つは 50% の明るさ (非常に暗い)、もう 1 つは 75% の明るさ (少し明るい)、最後は 100% の明るさ (元の画像と同じ) です。透明感も残したい。
私が試したこと:私は周りを検索しましたが、最良の解決策は を使用しているように見えますがRescaleOp
、それを理解することはできません. scaleFactor と offset が何であるかわかりません。これが私が試したコードです。
public void initialize(String imageLocation, float regularBrightness, float focusedBrightness, float pressedBrightness, String borderTitle) throws IOException {
BufferedImage bufferedImage = ImageIO.read(ButtonIcon.class.getResource(imageLocation));
setRegularIcon(getAlteredImageIcon(bufferedImage, regularBrightness));
setFocusedIcon(getAlteredImageIcon(bufferedImage, focusedBrightness));
setPressedIcon(getAlteredImageIcon(bufferedImage, pressedBrightness));
setTitle(borderTitle);
init();
}
private ImageIcon getAlteredImageIcon(BufferedImage bufferedImage, float brightness) {
RescaleOp rescaleOp = new RescaleOp(brightness, 0, null);
return new ImageIcon(rescaleOp.filter(bufferedImage, null));
}
呼び出しは次のようになります。
seeATemplateButton.initialize("/resources/templateIcon-regular.png", 100f, 75f, 50f, "See A Template");
//I think my 100f, 75f, 50f variables need to change, but whenever I change them it behaves unexpectedly (changes colors and stuff).
そのコードで何が起こるか:画像は「見えない」ように見えます。マウスクリックイベントが発生したJLabel上にあり、正常に機能するため、そこにあることがわかります。明るさの変更部分をスキップして、問題なく動作すると言うsetRegularIcon(new ImageIcon(Button.class.getResource(imageLocation));
と、明らかに暗くはなりません。
私が必要だと思うもの:offset
、scaleFactor
、およびfilter
メソッドの意味/動作、およびその結果、輝度変数に与える数値を理解するのに役立つものがあります。
どんな助けでも大歓迎です!ありがとう!