Вам нужно где-то заполнить изображение своим цветом. Кажется, метод Graphics.FillRectangle можно заполнить только с помощью Brush. Но обычная кисть — это кисть, определяемая кистями, что мне делать?
В GOOGLE есть два способа:
1. Заполните новой SolidBrush.
public void FillByColor(Rectangle rect,Color c,Graphics G) { G.FillRectangle(new SolidBrush(c), rect);}
Справочная статья: «Как создать линейный градиент».
2. Используйте API для заполнения замкнутой области указанным цветом (не тестировалось).
Реализовать указанную цветовую заливку с помощью API
использование 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 FLOODFILLBORDER = 0;public static uint FLOODFILLSURFACE = 1;private void button1_Click(отправитель объекта, EventArgs e) { Graphics vGraphics = Graphics.FromHwnd(Handle); vGraphics.DrawRectangle(Pens.Blue, новый Rectangle(0, 0, 300, 300)); vGraphics.DrawRectangle(Pens.Blue, новый 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);}
Справочная статья: http://www.csharpwin.com/csharpspace/9115r3566.shtml.
(Источник этой статьи: http://www.cnblogs.com/allanswolf/archive/2010/04/22/1718217.html )