This shows you the differences between two versions of the page.
c:graphics.h:floodfill [2015/05/06 23:06] |
c:graphics.h:floodfill [2024/02/16 01:05] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== floodfill ===== | ||
+ | |||
+ | |||
+ | ====Syntax of floodfill ==== | ||
+ | <code c> | ||
+ | #include <graphics.h> | ||
+ | void floodfill(int x, int y, int border); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Description of floodfill ==== | ||
+ | <code c> | ||
+ | floodfill fills an enclosed area on bitmap devices. (x,y) is a "seed | ||
+ | point" within the enclosed area to be filled. The area bounded by the | ||
+ | color border is flooded with the current fill pattern and fill color. If | ||
+ | the seed point is within an enclosed area, the inside will be filled. If | ||
+ | the seed is outside the enclosed area, the exterior will be filled. | ||
+ | Use fillpoly instead of floodfill whenever possible so that you can | ||
+ | maintain code compatibility with future versions. | ||
+ | floodfill does not work with the IBM-8514 driver. | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Example of floodfill ==== | ||
+ | <code c> | ||
+ | /* floodfill example */ | ||
+ | |||
+ | #include <graphics.h> | ||
+ | #include <stdlib.h> | ||
+ | #include <stdio.h> | ||
+ | #include <conio.h> | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | /* request autodetection */ | ||
+ | int gdriver = DETECT, gmode, errorcode; | ||
+ | int maxx, maxy; | ||
+ | |||
+ | |||
+ | /* initialize graphics and local variables */ | ||
+ | initgraph(&gdriver, &gmode, ""); | ||
+ | |||
+ | /* read result of initialization */ | ||
+ | errorcode = graphresult(); | ||
+ | if (errorcode != grOk) { /* an error occurred */ | ||
+ | printf("Graphics error: %s\n", grapherrormsg(errorcode)); | ||
+ | |||
+ | printf("Press any key to halt:"); | ||
+ | getch(); | ||
+ | exit(1); /* terminate with an error code */ | ||
+ | } | ||
+ | |||
+ | maxx = getmaxx(); | ||
+ | maxy = getmaxy(); | ||
+ | |||
+ | /* select drawing color */ | ||
+ | setcolor(getmaxcolor()); | ||
+ | |||
+ | |||
+ | /* select fill color */ | ||
+ | setfillstyle(SOLID_FILL, getmaxcolor()); | ||
+ | |||
+ | /* draw a border around the screen */ | ||
+ | rectangle(0, 0, maxx, maxy); | ||
+ | |||
+ | /* draw some circles */ | ||
+ | circle(maxx / 3, maxy /2, 50); | ||
+ | circle(maxx / 2, 20, 100); | ||
+ | |||
+ | circle(maxx-20, maxy-50, 75); | ||
+ | circle(20, maxy-20, 25); | ||
+ | |||
+ | /* wait for a key */ | ||
+ | getch(); | ||
+ | |||
+ | /* fill in bounded region */ | ||
+ | floodfill(2, 2, getmaxcolor()); | ||
+ | |||
+ | /* clean up */ | ||
+ | getch(); | ||
+ | closegraph(); | ||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== See also ==== | ||
+ | [[drawpoly]] | ||
+ | [[fillpoly]] | ||
+ | [[graphresult]] | ||
+ | [[setcolor]] | ||
+ | [[setfillstyle]] | ||
+ | |||
+ | |||
+ | ===== output of floodfill example ===== | ||
+ | |||
+ | no output of example at the moment | ||
+ | do not hesitate and add it... | ||
+ | |||
+ | |||