Gradient
Poniżej prezentuje klasę umożliwiającą rysowanie gradienta poziomo lub pionowo:
Przykładowe użycie :
Funkcja zaczerpnięta z forum nokii
http://wiki.forum.nokia.com/index.php/Draw_Gradient_in_Java_ME
import javax.microedition.lcdui.Graphics; public class Gradient { public static final int VERTICAL = 0; public static final int HORIZONTAL = 1; public static void gradientBox(Graphics g, int color1, int color2, int left, int top, int width, int height, int orientation) { int max = orientation == VERTICAL ? height : width; for(int i = 0; i < max; i++) { int color = midColor(color1, color2, max * (max - 1 - i) / (max - 1), max); g.setColor(color); if(orientation == VERTICAL) g.drawLine(left, top + i, left + width - 1, top + i); else g.drawLine(left + i, top, left + i, top + height - 1); } } static int midColor(int color1, int color2, int prop, int max) { int red = (((color1 >> 16) & 0xff) * prop + ((color2 >> 16) & 0xff) * (max - prop)) / max; int green = (((color1 >> 8) & 0xff) * prop + ((color2 >> 8) & 0xff) * (max - prop)) / max; int blue = (((color1 >> 0) & 0xff) * prop + ((color2 >> 0) & 0xff) * (max - prop)) / max; int color = red << 16 | green << 8 | blue; return color; } public static int ScrollUp (int O_ILE, int aktualna_wartosc, int KoniecTekstu, int Limit) { int Scroll = aktualna_wartosc; int i = 0; // jezeli nie osiagnieto limitu w przesuwaniu, to mozna przesunac w gore tekst for (i = 0; i<O_ILE; i++) { if (Scroll < Limit) { Scroll = Scroll + 10; } } return Scroll; } public static int ScrollDown (int O_ILE, int aktualna_wartosc, int KoniecTekstu, int Limit) { int Scroll = aktualna_wartosc; int i = 0; for (i = 0; i<O_ILE; i++) { if (KoniecTekstu < Limit) {} else { Scroll = Scroll - 10; } } return Scroll; } }
Przykładowe użycie :
import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; public class GradientRectCanvas extends Canvas { protected void paint(Graphics g) { int halfWidth = getWidth() / 2; int halfHeight = getHeight() / 2; Gradient.gradientBox(g, 0xffffff, 0xff0000, 0, 0, halfWidth, halfHeight, Gradient.HORIZONTAL); Gradient.gradientBox(g, 0xff0000, 0xffffff, halfWidth, 0, halfWidth, halfHeight, Gradient.VERTICAL); Gradient.gradientBox(g, 0xffff00, 0x00ffff, 0, halfHeight, halfWidth, halfHeight, Gradient.VERTICAL); Gradient.gradientBox(g, 0x00ff00, 0x0000ff, halfWidth, halfHeight, halfWidth, halfHeight, Gradient.VERTICAL); } }
Funkcja zaczerpnięta z forum nokii
http://wiki.forum.nokia.com/index.php/Draw_Gradient_in_Java_ME