Радиальный градиент

  1. /***
  2. * Graphics g - используемый Graphics
  3. * int x - центр X
  4. * int y - центр Y
  5. * int radius - радиус
  6. * int color - цвет в виде 0xXXXXXX
  7. ***/
  8. private void addRoundGradient(Graphics g, int x, int y, int radius, int color) {
  9.     for(int i = x-radius; i < x+radius+1; i++) {
  10.         for(int j = y-radius; j < y+radius+1; j++) {
  11.             // Формула расчёта расстояния от проверяемой точки до центра круга
  12.             int rr = (int)Math.sqrt((i-x)*(i-x)+(j-y)*(j-y));
  13.  
  14.             // Если проверяемая точка попадает в диапазон радиуса
  15.             if(rr <= radius) {
  16.                 //Собираю цвет
  17.                 int alpha = (int)(255*(1-(float)rr/(float)radius));
  18.                 int tmp_color = alpha << 24 | color;
  19.  
  20.                 g.drawRGB(new int[]{tmp_color}, 0, 1, i, j, 1, 1, true);
  21.             }
  22.         }
  23.     }
  24. }
Мой собственный код, нигде не подсмотренный. Идея появилась из формулы получения расстояния между двумя точками :gg:

Реклама

Мы в соцсетях

tw tg yt gt