Você precisa preencher a imagem com uma cor personalizada em algum lugar. Parece que o método Graphics.FillRectangle só pode ser preenchido com Brush. Mas o Pincel normal é o Pincel definido pelos Pincéis, o que devo fazer?
Existem duas maneiras de acessar o GOOGLE:
1. Preencha com o novo SolidBrush
public void FillByColor(Retângulo rect,Cor c,Gráficos G){ G.FillRectangle(new SolidBrush(c), rect);}
Artigo de referência: "Como: Criar um Gradiente Linear"
2. Use API para preencher uma área fechada com cor especificada (não testada)
Implementar preenchimento de cores especificado usando API
usando 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(objeto remetente, EventArgs e){ Gráficos vGraphics = Graphics.FromHwnd(Handle); vGraphics.DrawRectangle(Pens.Blue, new Rectangle(0, 0, 300, 300)); ), 300)); IntPtr vDC = vGraphics.GetHdc(); IntPtr vBrush = CreateSolidBrush(ColorTranslator.ToWin32(Color.Red)); vDC, 10, 10), FLOODFILLSURFACE); SelectObject(vDC, vPreviouseBrush);}
Artigo de referência: http://www.csharpwin.com/csharpspace/9115r3566.shtml
(Fonte deste artigo: http://www.cnblogs.com/allanswolf/archive/2010/04/22/1718217.html )