어딘가에 사용자 정의 색상으로 이미지를 채워야 합니다. Graphics.FillRectangle 메서드는 Brush로만 채울 수 있는 것 같습니다. 그런데 일반 Brush는 Brushes에 의해 정의된 Brush인데 어떻게 해야 합니까?
GOOGLE에는 두 가지 방법이 있습니다.
1. 새로운 SolidBrush로 채우기
공개 무효 FillByColor(직사각형 직사각형, 색상 c, 그래픽 G){ G.FillRectangle(new SolidBrush(c), 직사각형);}
참조 문서: "방법: 선형 그라데이션 만들기"
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 FLOODFILLSURFACE = 1;private void 버튼1_Click(객체 전송자, EventArgs e){ 그래픽 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 = ExtFloodFill(vDC, 10, 10, GetPixel( vDC, 10, 10), FLOODFILLSURFACE); SelectObject(vDC, vPreviouseBrush); vGraphics.ReleaseHdc(vDC);
참고 기사: http://www.csharpwin.com/csharpspace/9115r3566.shtml
(이 기사의 출처: http://www.cnblogs.com/allanswolf/archive/2010/04/22/1718217.html )