首页  编辑  

用指定颜色填充一个闭合区域

Tags: /C#/图形图像/   Date Created:

using System . Runtime . InteropServices;

[ DllImport ( "gdi32.dll" )]

public static extern IntPtr SelectObject( IntPtr hdc, IntPtr hgdiobj);

[ DllImport ( "gdi32.dll" )]

public static extern IntPtr CreateSolidBrush( int crColor);

[ DllImport ( "gdi32.dll" )]

public static extern bool ExtFloodFill( IntPtr hdc, int nXStart, int nYStart,

    int crColor, uint fuFillType);

[ DllImport ( "gdi32.dll" )]

public static extern bool DeleteObject( IntPtr hObject);

[ DllImport ( "gdi32.dll" )]

public static extern int GetPixel( IntPtr hdc, int x, int y);

public static uint FLOODFILLBORDER = 0 ;

public static uint FLOODFILLSURFACE = 1 ;

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

    IntPtr vDC = vGraphics . GetHdc();

    IntPtr vBrush = CreateSolidBrush( ColorTranslator . ToWin32( Color . Red));

    IntPtr vPreviouseBrush = SelectObject(vDC, vBrush);

   ExtFloodFill(vDC, 10 , 10 , GetPixel(vDC, 10 , 10 ), FLOODFILLSURFACE);

   SelectObject(vDC, vPreviouseBrush);

   DeleteObject(vBrush);

   vGraphics . ReleaseHdc(vDC);

}