In order to floodfill drawn objects, you can make use of the following sample:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace FloodFill{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } Bitmap bm; Graphics g; private bool SameColor(Color c1, Color c2) { return ((c1.A == c2.A) && (c1.B == c2.B) && (c1.G == c2.G) && (c1.R == c2.R)); } private void tobien1(Bitmap bm, Point p, Color Color, Color LineColor) { Stack S = new Stack(); S.Push(p); while (S.Count != 0) { p = S.Pop(); Color CurrentColor = bm.GetPixel(p.X, p.Y); if (!SameColor(CurrentColor, Color) && !SameColor(CurrentColor, LineColor)) { bm.SetPixel(p.X, p.Y, Color); S.Push(new Point(p.X - 1, p.Y)); S.Push(new Point(p.X + 1, p.Y)); S.Push(new Point(p.X, p.Y - 1)); S.Push(new Point(p.X, p.Y + 1)); } } } private void Form1_Load(object sender, EventArgs e) { g = this.CreateGraphics(); } private void DrawRectangle(Bitmap bm, Point p, int width, int height, Color c) { Graphics g = Graphics.FromImage(bm); g.DrawRectangle(new Pen(c), p.X, p.Y, width, height); } private void Form1_Paint(object sender, PaintEventArgs e) { bm = new Bitmap(ClientSize.Width, ClientSize.Height); DrawRectangle(bm, new Point(100,100), 200, 50, Color.Blue); g.DrawImage(bm, new Point(0, 0)); } private void button1_Click(object sender, EventArgs e) { tobien1(bm, new Point(120,120), Color.Violet, Color.Blue); g.DrawImage(bm, new Point(0, 0)); } }}