أنت بحاجة إلى ملء الصورة بلون مخصص في مكان ما. يبدو أن طريقة Graphics.FillRectangle لا يمكن ملؤها إلا باستخدام الفرشاة. لكن الفرشاة العادية هي الفرشاة التي تحددها الفرشاة، ماذا علي أن أفعل؟
هناك طريقتان للوصول إلى GOOGLE:
1. املأ باستخدام SolidBrush الجديد
public void fillByColor(Rectangle rect,Color c,Graphics G){ G.FillRectangle(new SolidBrush(c), rect);}
مقالة مرجعية: "كيفية: إنشاء تدرج خطي"
2. استخدم API لملء منطقة مغلقة باللون المحدد (لم يتم اختباره)
تنفيذ تعبئة الألوان المحددة باستخدام API
use System.Runtime.InteropServices;[DllImport("gdi32.dll")]العام الثابت الخارجي IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);[DllImport("gdi32.dll")]الخارجي العام الثابت IntPtr CreateSolidBrush(int crColor); [DllImport("gdi32.dll")]المنطق المنطقي الخارجي الثابت العام ExtFloodFill(IntPtr hdc, int nXStart, int nYStart, int crColor, uint fuFillType);[DllImport("gdi32.dll")]المنطق المنطقي الخارجي الثابت العام حذفObject(IntPtr hObject );[DllImport("gdi32.dll")]الخارجي الثابت العام int GetPixel(IntPtr hdc, int x, int y);uint العام الثابت FLOODFILLBORDER = 0;uint العام الثابت FLOODFILLSURFACE = 1;زر الفراغ الخاص1_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); vDC، 10، 10)، FLOODFILLSURFACE)؛ SelectObject(vDC, vPreviouseBrush);
المقالة المرجعية: http://www.csharpwin.com/csharpspace/9115r3566.shtml
(مصدر هذه المقالة: http://www.cnblogs.com/allanswolf/archive/2010/04/22/1718217.html )