devxlogo

FloodFill Objects Using C#

FloodFill Objects Using C#

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));        }    }}

devx-admin

Share the Post: