我起初用getpixles和setpixles的方法实现,但是处理太太太慢了。
后来用floodfill,可是函数返回值为1,说明运行成功,但是不知道为什么图像没有反应。
求高手给段实现代码。。我实在没办法了--!!
分不够再加.

解决方案 »

  1.   

    图形图像处理很难作的,而且.net作这个很慢的。
      

  2.   

    一定是图形学作业 当初我也做过 全部是用C+WINAPI实现的 
            private void Form1_MouseClick(object sender, MouseEventArgs e)
            {
                Graphics g = this.CreateGraphics();
                FloodFill(g.GetHdc(), e.X,e.Y, 0x000000FF);
                g.ReleaseHdc();
                g.Dispose();
            }
    注意设置current brush
      

  3.   

    没弄过来 应该是一个叫SelectOjbect函数 你看一下SDK
      

  4.   

    画笔(Brush)
    GDI+有几种不同类型的画笔,本章不准备详细介绍它们,这里仅解释几个比较简单的画笔,让您掌握其要领即可。每种画笔都由一个派生自System.Drawing.Brush的类的实例来表示。最简单的画笔System.Drawing.SolidBrush仅指定了区域用纯色来填充:Brush solidBeigeBrush = new SolidBrush(Color.Beige);Brush solidFunnyOrangyBrownBrush =                                new SolidBrush(Color.FromArgb(255,155,100));另外,如果画笔是一种Web安全颜色,就可以用另外一个类System.Drawing.Brushes构造出画笔。Brushes是永远不能实例化的一个类(它有一个私有构造函数,禁止实例化)。它有许多静态属性,每个属性都返回指定颜色的画笔。您可以象下面一样使用画笔:Brush solidAzureBrush = Brushes.Azure;Brush solidChocolateBrush = Brushes.Chocolate;比较复杂的一种画笔是影线画笔(hatch brush),它通过绘制一种模式填充区域,这种类型的画笔比较高级,所以在Drawing2D命名空间中,用System.Drawing.Drawing2D.HatchBrush类表示。Brushes类不能帮助我们使用影线画笔,而需通过提供一个影线型式和两种颜色(前景色和背景色,背景色可以忽略,此时将使用默认的黑色),来显式构造一个影线画笔。影线型式可以取自于枚举System.Drawing.Drawing2D.HatchStyle,其中有许多HatchStyle值,其完整列表参阅MSDN文档说明。为了让用户掌握这个概念,一般的型式包括ForwardDiagonal、Cross、DiagonalCross、SmallConfetti和ZigZag。构造影线画笔的示例如下所示。Brush crossBrush = new HatchBrush(HatchStyle.Cross, Color.Azure); // background color of CrossBrush is black  Brush brickBrush = new HatchBrush(HatchStyle.DiagonalBrick,                                   Color.DarkGoldenrod, Color.Cyan);GDI只能使用实线和影线画笔,GDI+添加了两种新画笔:●       System.Drawing.Drawing2D.LinearGradientBrush用一种在屏幕上可变的颜色填充区域。●       System.Drawing.Drawing2D.PathGradientBrush与此类似,但其颜色沿着要填充的区域的路径而变化。如果细心使用,这些画笔会得到一些惊人的效果。
      

  5.   

    //参考http://new.aspnetmania.com/Forums/ForumMessage/196936.htmlprivate void button1_Click(object sender, EventArgs e)
    {
        Graphics vGraphics = Graphics.FromHwnd(Handle);
        vGraphics.DrawRectangle(Pens.Blue, new Rectangle(0, 0, 300, 300));
        vGraphics.DrawRectangle(Pens.Blue, new Rectangle(50, 70, 300, 300));
        FloodFillHelper.FloodFill(vGraphics, new Point(10, 10),
            FloodFillHelper.GetPixel(vGraphics, 10, 10), Color.Red);
    }public class FloodFillHelper
    {
        [DllImport("Gdi32.dll")]
        private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
        [DllImport("Gdi32.dll")]
        private static extern IntPtr CreateSolidBrush(int crColor);
        [DllImport("gdi32", CharSet = CharSet.Auto)]
        private static extern bool ExtFloodFill(IntPtr hDC, int x, int y, int сolorRefColor, FillType fillType);
        [DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool DeleteObject(IntPtr hObject);
        [DllImport("GDI32", CharSet = CharSet.Auto)]
        private static extern int GetPixel(IntPtr hdc, int x, int y);
        private enum FillType
        {
            FLOODFILLBORDER = 0,
            FLOODFILLSURFACE = 1
        }
        public static void FloodFill(Graphics g, Point p, Color src, Color trg)
        {
            FloodFill(g, p.X, p.Y, src, trg);
        }
        public static void FloodFill(Graphics g, int x, int y, Color src, Color trg)
        {
            IntPtr hdc = g.GetHdc();
            IntPtr hBrush = CreateSolidBrush(ColorTranslator.ToWin32(trg));
            IntPtr hPreviouseBrush = SelectObject(hdc, hBrush);
            System.Diagnostics.Trace.WriteLine(ExtFloodFill(hdc, x, y, ColorTranslator.ToWin32(src), FillType.FLOODFILLSURFACE));
            SelectObject(hdc, hPreviouseBrush);
            DeleteObject(hBrush);
            g.ReleaseHdc(hdc);
        }
        public static Color GetPixel(Graphics g, int x, int y)
        {
            IntPtr hdc = g.GetHdc();
            int cr = GetPixel(hdc, x, y);
            g.ReleaseHdc(hdc);
            return ColorTranslator.FromWin32(cr);
        }
        public static Color GetPixel(Image img, int x, int y)
        {
            using (Graphics g = Graphics.FromImage(img))
            {
                IntPtr hdc = g.GetHdc();
                int cr = GetPixel(hdc, x, y);
                g.ReleaseHdc(hdc);
                return ColorTranslator.FromWin32(cr);
            }
        }
    }
      

  6.   

    to:zswang(伴水清清)(专家门诊清洁工)
    我想你不仅是在解决我这个问题,你把我上次问的问题也一并解决了。真的很感谢
      

  7.   

    WinForm中可以,
    WebForm中只显示两个兰框,没有填充效果。