Debes rellenar la imagen con un color personalizado en algún lugar. Parece que el método Graphics.FillRectangle solo se puede rellenar con Brush. Pero el Pincel normal es el Pincel definido por Pinceles, ¿qué debo hacer?
Hay dos formas de GOOGLE:
1. Rellenar con el nuevo SolidBrush
public void FillByColor(Rectangle rect,Color c,Graphics G){ G.FillRectangle(new SolidBrush(c), rect);}
Artículo de referencia: "Cómo: crear un degradado lineal"
2. Utilice API para llenar un área cerrada con un color específico (no probado)
Implementar el relleno de color especificado mediante API
usando System.Runtime.InteropServices; [DllImport ("gdi32.dll")] público estático externo IntPtr SelectObject (IntPtr hdc, IntPtr hgdiobj); [DllImport("gdi32.dll")]bool externo estático público ExtFloodFill(IntPtr hdc, int nXStart, int nYStart, int crColor, uint fuFillType);[DllImport("gdi32.dll")]bool externo estático público 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(remitente del objeto, EventArgs e){ Gráficos vGraphics = Graphics.FromHwnd(Handle); vGraphics.DrawRectangle(Pens.Blue, nuevo Rectángulo(0, 0, 300, 300)); vGraphics.DrawRectangle(Pens.Blue, nuevo Rectángulo(50, 70, 300) ) , 300)); IntPtr vDC = vGraphics.GetHdc(); IntPtr vBrush = CreateSolidBrush(ColorTranslator.ToWin32(Color.Red)); IntPtr vPreviouseBrush = SelectObject(vDC, vBrush(vDC, 10, 10, GetPixel); vDC, 10, 10), FLOODFILLSURFACE); SelectObject(vDC, vPreviouseBrush(vBrush);}
Artículo de referencia: http://www.csharpwin.com/csharpspace/9115r3566.shtml
(Fuente de este artículo: http://www.cnblogs.com/allanswolf/archive/2010/04/22/1718217.html )