Радиальный градиент
- /***
- * Graphics g - используемый Graphics
- * int x - центр X
- * int y - центр Y
- * int radius - радиус
- * int color - цвет в виде 0xXXXXXX
- ***/
- private void addRoundGradient(Graphics g, int x, int y, int radius, int color) {
- for(int i = x-radius; i < x+radius+1; i++) {
- for(int j = y-radius; j < y+radius+1; j++) {
- // Формула расчёта расстояния от проверяемой точки до центра круга
- int rr = (int)Math.sqrt((i-x)*(i-x)+(j-y)*(j-y));
- // Если проверяемая точка попадает в диапазон радиуса
- if(rr <= radius) {
- //Собираю цвет
- int alpha = (int)(255*(1-(float)rr/(float)radius));
- int tmp_color = alpha << 24 | color;
- g.drawRGB(new int[]{tmp_color}, 0, 1, i, j, 1, 1, true);
- }
- }
- }
- }
Мой собственный код, нигде не подсмотренный. Идея появилась из формулы получения расстояния между двумя точками