Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
53
Task/Bitmap-Flood-fill/C-sharp/bitmap-flood-fill.cs
Normal file
53
Task/Bitmap-Flood-fill/C-sharp/bitmap-flood-fill.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
|
||||
namespace FloodFill
|
||||
{
|
||||
class Program
|
||||
{
|
||||
private static bool ColorMatch(Color a, Color b)
|
||||
{
|
||||
return (a.ToArgb() & 0xffffff) == (b.ToArgb() & 0xffffff);
|
||||
}
|
||||
|
||||
static void FloodFill(Bitmap bmp, Point pt, Color targetColor, Color replacementColor)
|
||||
{
|
||||
Queue<Point> q = new Queue<Point>();
|
||||
q.Enqueue(pt);
|
||||
while (q.Count > 0)
|
||||
{
|
||||
Point n = q.Dequeue();
|
||||
if (!ColorMatch(bmp.GetPixel(n.X, n.Y),targetColor))
|
||||
continue;
|
||||
Point w = n, e = new Point(n.X + 1, n.Y);
|
||||
while ((w.X >= 0) && ColorMatch(bmp.GetPixel(w.X, w.Y),targetColor))
|
||||
{
|
||||
bmp.SetPixel(w.X, w.Y, replacementColor);
|
||||
if ((w.Y > 0) && ColorMatch(bmp.GetPixel(w.X, w.Y - 1),targetColor))
|
||||
q.Enqueue(new Point(w.X, w.Y - 1));
|
||||
if ((w.Y < bmp.Height - 1) && ColorMatch(bmp.GetPixel(w.X, w.Y + 1),targetColor))
|
||||
q.Enqueue(new Point(w.X, w.Y + 1));
|
||||
w.X--;
|
||||
}
|
||||
while ((e.X <= bmp.Width - 1) && ColorMatch(bmp.GetPixel(e.X, e.Y),targetColor))
|
||||
{
|
||||
bmp.SetPixel(e.X, e.Y, replacementColor);
|
||||
if ((e.Y > 0) && ColorMatch(bmp.GetPixel(e.X, e.Y - 1), targetColor))
|
||||
q.Enqueue(new Point(e.X, e.Y - 1));
|
||||
if ((e.Y < bmp.Height - 1) && ColorMatch(bmp.GetPixel(e.X, e.Y + 1), targetColor))
|
||||
q.Enqueue(new Point(e.X, e.Y + 1));
|
||||
e.X++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Bitmap bmp = new Bitmap("Unfilledcirc.bmp");
|
||||
FloodFill(bmp, new Point(200, 200), Color.White, Color.Red);
|
||||
FloodFill(bmp, new Point(100, 100), Color.Black, Color.Blue);
|
||||
bmp.Save("Filledcirc.bmp");
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue