日記を埋めるためだけのネタつぶし(5)

Doja3.0で半透明塗りつぶし処理(50%)限定版
50%限定でないものもできるが、処理が遅くなってしまう。
505レベルだと、速度的にリアルタイムのものは厳しいが、メニューのダイアログ程度であるならば
十分使用できると思われる。


/*!
* @brief 矩形を半透明で塗りつぶします。
*
* @param x 矩形の左上のX座標を指定します。
* @param y 矩形の左上のY座標を指定します。
* @param w 矩形の幅を指定します
* @param h 矩形の高さを指定します
* @param r 赤の色を指定します。
* @param g 緑の色を指定します。
* @param b 青の色を指定します。
*
*/
final private void fillRectEx(int x, int y, int w, int h, int r, int g, int b) {
Graphics g = getGraphics();
int p[] = g.getRGBPixels(x, y, w, h, null, 0);
int c = (r << 16) | (g << 8) | b;
for (int i = 0; i < p.length; i++) {
p[i] = (p[i] & c) + (((p[i] ^ c) & 0xfefefe) >> 1);
}
g.setRGBPixels(x, y, w, h, p, 0);
p = null;
System.gc();
}