/**
* Function: Realize the "Fill color" function supported by many picture editing software.
* Given a screen (represented by a two-dimensional array, the element is a color value), a point and a new color value, the new color is filled into the surrounding area of the store, knowing that the original color values have all changed.
*/
/** * Idea: Suppose that you want to call Paintfill on a pixel (such as red), that is, to call Paintfill one at a to the surrounding pixels, to expand outward, to stop filling once the non-red pixels are encountered. * Note: When encountering image problems, be aware of the order of X and Y in screen[y][x]. x represents the horizontal axis (that is, from left to right), which actually corresponds to the number of columns, not the number of rows. The value of Y equals the number of rows. * @param screen * @param x * @param y * @param ncolor * @return */public static Boolean Paintfill (color[][] Screen,int x,i NT Y,color ncolor) {if (Screen[y][x]==ncolor) return False;return paintfill (screen, x, Y, screen[y][x], ncolor);} public static Boolean Paintfill (color[][] screen,int x,int y,color ocolor,color ncolor) {if (x<0| | x>=screen[0].length| | y<0| | Y>=screen.length) return False;if (Screen[y][x]==ocolor) {screen[y][x]=ncolor;paintfill (screen, x-1, Y, Ocolor, Ncolor);//Left Paintfill (screen, x+1, y, Ocolor, ncolor);//Right Paintfill (screens, X, Y-1, Ocolor, ncolor);//On!!! Paintfill (screen, x, y+1, Ocolor, Ncolor); }return true;}
Enum Color{black,white,red,yellow,green}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
9.9 Recursive and dynamic Planning (vii)--implementation of the "Fill Color" feature supported by many image editing software