This is the second article about fade algorithms. In the first article I described the basic algorithm, now I will to introduce you to some advance effects we can do with this basic algorithm.
|
We will use the algorithm MakeFadeRegionToWhite(…) introduced on the post How to – Fade Algorithms (1) to create a new fade effect. This effect can be used, for example, on an initial screen where we usually show the company’s logo.
To create the background effect, we will use the next new algorithm:
| Method Name | |
| MakeMiddleFadeRegion | |
| Parameters | |
| iWidth | Width of the region that we want to fade |
| iHeight | Height of the region that we want to fade |
| iLogoHeight | Height of the logo that will be show |
| iColor | Color to fade |
| bMiddleWhite | If the value is true the color on the middle of the screen will be white |
| Return Value | |
| An int data array with the fade image | |
This is the algorithm:
public static int [] MakeMiddleFadeRegion(int iWidth, int iHeight,int iLogoHeight, int iColor, boolean bMiddleWhite)
{
int [] data1 = MakeFadeRegionToWhite(iWidth, (iHeight - iLogoHeight) / 2, iColor, !bMiddleWhite);
int [] data2 = MakeFadeRegionToWhite(iWidth, (iHeight - iLogoHeight) / 2, iColor, bMiddleWhite);
int [] data = new int[iWidth * iHeight];
int iDiff = data.length - data1.length - data2.length;
for (int i =0 ; i < data1.length ;i++)
{
data[i] = data1[i];
}
for (int i = 0 ; i < iDiff ;i++)
{
data[i + data1.length] = 0x00FFFFFF;
}
for (int i =0 ; i < data2.length ;i++)
{
data[i + data1.length + iDiff] = data2[i];
}
return data;
}
Then we have to use this method in a Canvas Object in this way:
public class MyCanvas extends GameCanvas
{
private Image objFadeImage =null;
private Image objLogoImage =null;
public void paint(Graphics g)
{
iViewH = this.getHeight();
iViewW = this.getWidth();
// create the fade background
if (objFadeImage == null)
{
int [] imgData = Utils.MakeMiddleFadeRegion(iViewW, iViewH,54, 0xd30007,true);
objFadeImage = Image.createRGBImage(imgData, iViewW, iViewH, true);
}
// load the logo
if (objLogoImage == null)
{
try {
objLogoImage = Image.createImage("/res/Logo_150_53.png");
} catch (IOException ex) {
ex.printStackTrace();
}
}
// draw fade background
g.drawImage(objFadeImage,
0,
0,
Graphics.LEFT | Graphics.TOP );
// draw logo
if (objLogoImage != null)
g.drawImage(objLogoImage,
(int)iViewW / 2,
(int)iViewH / 2,
Graphics.VCENTER | Graphics.HCENTER );
}
}


Very nice!!
cool….but how to do it horizontally…can u append the control to do the gradient vertically or horizontally