คุณต้องเติมรูปภาพด้วยสีที่กำหนดเองที่ไหนสักแห่ง ดูเหมือนว่าวิธี Graphics.FillRectangle สามารถเติมได้ด้วย Brush เท่านั้น แต่ Brush ปกติคือ Brush ที่กำหนดโดย Brushes ฉันควรทำอย่างไร?
มีสองวิธีในการ GOOGLE:
1. เติม SolidBrush ใหม่
โมฆะสาธารณะ FillByColor (สี่เหลี่ยมสี่เหลี่ยม, สี c, กราฟิก G) { G.FillRectangle (SolidBrush ใหม่ (c), สี่เหลี่ยม);}
บทความอ้างอิง: "วิธีการ: สร้างการไล่ระดับสีเชิงเส้น"
2. ใช้ API เพื่อเติมพื้นที่ปิดด้วยสีที่ระบุ (ไม่ได้ทดสอบ)
ใช้งานการเติมสีที่ระบุโดยใช้ API
ใช้ 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")] บูลภายนอกแบบคงที่สาธารณะ DeleteObject (IntPtr hObject ); [DllImport ("gdi32.dll")] สาธารณะคงที่ภายนอก int GetPixel (IntPtr hdc, int x, int y); สาธารณะ uint แบบคงที่ FLOODFILLBORDER = 0; uint แบบคงที่สาธารณะ FLOODFILLSURFACE = 1; โมฆะส่วนตัว button1_Click (ผู้ส่งวัตถุ EventArgs e){ Graphics vGraphics = Graphics.FromHwnd(Handle); vGraphics.DrawRectangle(Pens.Blue, สี่เหลี่ยมผืนผ้าใหม่ (0, 0, 300, 300)); vGraphics.DrawRectangle (Pens.Blue, สี่เหลี่ยมผืนผ้าใหม่ (50, 70, 300) ) , 300)); IntPtr vDC = vGraphics.GetHdc(); IntPtr vBrush = CreateSolidBrush(ColorTranslator.ToWin32(Color.Red)); vDC , 10, 10), FLOODFILLSURFACE(vDC, vPreviouseBrush); DeleteObject(vBrush);
บทความอ้างอิง: http://www.csharpwin.com/csharpspace/9115r3566.shtml
(ที่มาของบทความนี้: http://www.cnblogs.com/allanswolf/archive/2010/04/22/1718217.html )