Кисти и заполненные фигуры
Закрытая фигура, например прямоугольник или многоточие, состоит из контура и интерьера. Контур рисуется с помощью объектапера, а интерьер заполняется объектом Кисти. Windows GDI+ предоставляет несколько классов кисти для заполнения интерьеров закрытых фигур: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrushи PathGradientBrush. Все эти классы наследуются от класса Brush. На следующем рисунке показан прямоугольник, заполненный сплошной кистью и многоточием, заполненным кистью хэтча.
Твердые кисти
Чтобы заполнить закрытую фигуру, требуется объект графики и объект Brush. Объект graphics предоставляет методы, такие как FillRectangle и FillEllipse, а объект Brush сохраняет атрибуты заливки, такие как цвет и шаблон. Адрес объекта Brush передается в качестве одного из аргументов метода заливки. В следующем примере многоточие заполняется сплошным красным цветом.
SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);
Обратите внимание, что в предыдущем примере кисть имеет тип SolidBrush, который наследует от Кисти.
Люк кисти
При заполнении фигуры кистью хэтча вы указываете цвет переднего плана, цвет фона и стиль люка. Цвет переднего плана — это цвет штриховки.
HatchBrush myHatchBrush(
HatchStyleVertical,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0));
GDI+ предоставляет более 50 стилей хэтчов, указанных в HatchStyle. Три стиля, показанные на следующем рисунке, — "Горизонтальный", "Переадресация" и "Кросс".
Кисти текстуры
С помощью кисти текстуры можно заполнить фигуру шаблоном, хранящимся в растровом рисунке. Например, предположим, что следующий рисунок хранится в файле диска с именем MyTexture.bmp.
В следующем примере заполняется многоточие, повторяя рисунок, хранящийся в MyTexture.bmp.
Image myImage(L"MyTexture.bmp");
TextureBrush myTextureBrush(&myImage);
myGraphics.FillEllipse(&myTextureBrush, 0, 0, 100, 50);
На следующем рисунке показана заполненная многоточие.
Градиентные кисти
Вы можете использовать градиентную кисть для заливки фигуры цветом, который постепенно изменяется с одной части фигуры на другую. Например, горизонтальная градиентная кисть изменит цвет при переходе с левой стороны фигуры на правую сторону. В следующем примере заполняется многоточие горизонтальной градиентной кистью, которая изменяется с синего на зеленый при переходе с левой стороны эллипса на правую сторону.
LinearGradientBrush myLinearGradientBrush(
myRect,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0),
LinearGradientModeHorizontal);
myGraphics.FillEllipse(&myLinearGradientBrush, myRect);
На следующем рисунке показана заполненная многоточие.
Градиентная кисть пути может быть настроена для изменения цвета при переходе от центра фигуры к границе.
Градиентные кисти пути довольно гибкие. Градиентная кисть, используемая для заполнения треугольника на следующем рисунке, постепенно изменяется от красного в центре к каждому из трех разных цветов вершин.