Sie müssen das Bild irgendwo mit einer benutzerdefinierten Farbe füllen. Es scheint, dass die Graphics.FillRectangle-Methode nur mit Brush gefüllt werden kann. Aber der reguläre Pinsel ist der durch Pinsel definierte Pinsel. Was soll ich tun?
Es gibt zwei Möglichkeiten, auf GOOGLE zuzugreifen:
1. Mit neuem SolidBrush füllen
public void FillByColor(Rectangle rect,Color c,Graphics G){ G.FillRectangle(new SolidBrush(c), rect);}
Referenzartikel: „Gewusst wie: Erstellen eines linearen Farbverlaufs“
2. Verwenden Sie die API, um einen geschlossenen Bereich mit der angegebenen Farbe zu füllen (nicht getestet).
Implementieren Sie die angegebene Farbfüllung mithilfe der API
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, neues Rechteck(0, 0, 300, 300)); vGraphics.DrawRectangle(Pens.Blue, neues Rechteck(50, 70, 300). ) , 300)); IntPtr vDC = vGraphics.GetHdc(); IntPtr vBrush = CreateSolidBrush(ColorTranslator.ToWin32(Color.Red)); vDC , 10, 10), FLOODFILLSURFACE); SelectObject(vDC, vPreviouseBrush);
Referenzartikel: http://www.csharpwin.com/csharpspace/9115r3566.shtml
(Quelle dieses Artikels: http://www.cnblogs.com/allanswolf/archive/2010/04/22/1718217.html )