Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 10:36, 12 April 2008.

J2ME Draw Gradient

From Forum Nokia Wiki


Here is a J2ME class for gradients drawing, supporting both horizontal and vertical gradients.

Image:J2me_gradients.jpg

This could be useful to substitute background gradient images with graphics drawn by code.

package com.jappit.wiki.gradientrect.graphics;
 
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, 100 * (max - 1 - i) / (max - 1));
			
			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 red = 
			(((color1 >> 16) & 0xff) * prop +
			((color2 >> 16) & 0xff) * (100 - prop)) / 100;
		
		int green = 
			(((color1 >> 8) & 0xff) * prop +
			((color2 >> 8) & 0xff) * (100 - prop)) / 100;
		
		int blue = 
			(((color1 >> 0) & 0xff) * prop +
			((color2 >> 0) & 0xff) * (100 - prop)) / 100;
		
		int color = red << 16 | green << 8 | blue;
		
		return color;
	}
}

and here is a sample Canvas using the gradientBox method (the final effect is shown in the screenshot at beginning of this article):

package com.jappit.wiki.gradientrect.display;
 
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
 
import com.jappit.wiki.gradientrect.graphics.Gradient;
 
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);
	}
 
}
Related Discussions
Thread Thread Starter Forum Replies Last Post
Listbox with Background image tvollmer Symbian User Interface 12 2005-10-26 07:36
Really simple drawing problem NavaronSoftware Mobile Java Media (Graphics & Sounds) 1 2004-01-16 09:59
how to stretch a Bitmap? anurag_iit2k Symbian Media (Graphics & Sounds) 4 2007-10-22 11:40
Draw and save image shyam9 General Symbian C++ 10 2008-04-08 11:31
BigProblem = How to copy in OffScreenBitmap ? IngeSchmidt Symbian Tools & SDKs 10 2004-07-24 12:06
 
Powered by MediaWiki