I write Coloring algorithm FloodFill and that ok's, it's work. I can description it: choose a new point X in your drawings, ex: g.drawrectangle(new pen(Color.Blue), 100,100,200,50) , Asolute, a point X can be: (120,120) or more, more, etc...In addition choose a color you want paint( i choose Violet) and Color of Rectangle'Line: Blue, after all, it will spreading 4 directions and top where's color of line(Blue) So, like:
and code:
Code:
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<Point> S = new Stack<Point>();
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));
}
}
}
It's work, Ok? Now, i want: how can make it slowly, slowy process of spreading 4 directions, my mean: when you press F5 to build, and all what you see: it finished. So, can be make it slowly, slowly??? can be? I want to see spreading 4 directions slow and how it' work. Can you understand and help me? Thanks.
It seems like you haven't read my previous post properly. Read again. FloodFilling an area means filling that area at once, hence its name. Look at its definition(s) :
What you want to do, is not a FloodFill par se, it will end up being some sort of animation - which is totally unecessary IMHO, and it will waste a lot of resources unecessarily.
If you want to waste resources, time, and uneceaasry logic, fine, go ahead add a timer - bun't don't say I didn't warn you of the consequences....
It seems like you haven't read my previous post properly. Read again. FloodFilling an area means filling that area at once, hence its name. Look at its definition(s) :
What you want to do, is not a FloodFill par se, it will end up being some sort of animation - which is totally unecessary IMHO, and it will waste a lot of resources unecessarily.
If you want to waste resources, time, and uneceaasry logic, fine, go ahead add a timer - bun't don't say I didn't warn you of the consequences....
Yeah, that's right, i want it like same:
I want my rectangle is painted like this picture, add timer? Yes, i think it, and try, but not result well, maybe i code wrong, can you?
Last edited by Loosexll; August 14th, 2012 at 06:43 AM.
Loosexll, if I understood you well, you just want to slow down the program so that you can actually watch the algorithm working in real time, slow enough for the human eye to follow, so that you can track it and visually understand how it works, and visually check for errors? Correct?
If so, you need to structure your program differently, and establish a render loop - but I'll wait for your answer before I give you any advice, because that would require to restructure your program.
Loosexll, if I understood you well, you just want to slow down the program so that you can actually watch the algorithm working in real time, slow enough for the human eye to follow, so that you can track it and visually understand how it works, and visually check for errors? Correct?
If so, you need to structure your program differently, and establish a render loop - but I'll wait for your answer before I give you any advice, because that would require to restructure your program.
* The Best Reasons to Target Windows 8
Learn some of the best reasons why you should seriously consider bringing your Android mobile development expertise to bear on the Windows 8 platform.