Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » .NET » C#
Language: .NET
Expertise: Intermediate
Aug 24, 2017

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));
        }
    }
}
Hannes du Preez
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date