Udostępnij za pośrednictwem


Pędzle i wypełnione kształty w GDI+

Zamknięty kształt, taki jak prostokąt lub wielokropek, składa się z konturu i wnętrza. Kontur jest rysowany piórem, a wnętrze jest wypełnione szczotką. GDI+ udostępnia kilka klas pędzli do wypełniania wnętrz zamkniętych kształtów: SolidBrush, , HatchBrushTextureBrush, LinearGradientBrushi PathGradientBrush. Wszystkie te klasy dziedziczą z Brush klasy . Na poniższej ilustracji przedstawiono prostokąt wypełniony stałym pędzlem i wielokropkiem wypełnionym szczotką kreskową.

Screenshot of a rectangle filled with a solid brush and an ellipse filled with a hatch brush.

Stałe szczotki

Aby wypełnić zamknięty kształt, potrzebne jest wystąpienie Graphics klasy i klasy Brush. Wystąpienie Graphics klasy udostępnia metody, takie jak FillRectangle i FillEllipse, oraz Brush przechowuje atrybuty wypełnienia, takie jak kolor i wzorzec. Element Brush jest przekazywany jako jeden z argumentów metody fill. W poniższym przykładzie kodu pokazano, jak wypełnić wielokropek kolorem czerwonym.

SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)

Uwaga

W poprzednim przykładzie szczotka ma typ SolidBrush, który dziedziczy z Brushklasy .

Szczotki kreskowe

Po wypełnieniu kształtu pędzlem kreskowym należy określić kolor pierwszego planu, kolor tła i styl kreskowania. Kolor pierwszego planu jest kolorem kreskowania.

HatchBrush myHatchBrush =
   new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
Dim myHatchBrush As _
   New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)

GDI+ zapewnia ponad 50 stylów kreskowania; trzy style pokazane na poniższej ilustracji to Horizontal, ForwardDiagonali Cross.

Screenshot of three ellipses that are filled with a horizontal hatch brush, forward diagonal hatch brush, and a cross hatch brush.

Szczotki tekstury

Za pomocą pędzla tekstury można wypełnić kształt wzorcem przechowywanym w mapie bitowej. Załóżmy na przykład, że poniższy obraz jest przechowywany w pliku dysku o nazwie MyTexture.bmp.

Screenshot of the My Texture dot b m p file.

Poniższy przykład kodu pokazuje, jak wypełnić wielokropek, powtarzając obraz przechowywany w pliku MyTexture.bmp.

Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);
Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)

Na poniższej ilustracji przedstawiono wypełniony wielokropek.

Screenshot of an ellipse that is filled with a texture brush.

Pędzle gradientowe

GDI+ udostępnia dwa rodzaje pędzli gradientowych: liniowy i ścieżki. Możesz użyć pędzla gradientu liniowego, aby wypełnić kształt kolorem, który zmienia się stopniowo w miarę przechodzenia przez kształt w poziomie, w pionie lub po przekątnej. W poniższym przykładzie kodu pokazano, jak wypełnić wielokropek poziomym pędzlem gradientowym, który zmienia się z niebieskiego na zielony podczas przechodzenia z lewej krawędzi wielokropka do prawej krawędzi.

LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
   myRectangle,
   Color.Blue,
   Color.Green,
   LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);
Dim myLinearGradientBrush As New LinearGradientBrush( _
   myRectangle, _
   Color.Blue, _
   Color.Green, _
   LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)

Na poniższej ilustracji przedstawiono wypełniony wielokropek.

Screenshot of an ellipse filled with a horizontal gradient brush.

Pędzl gradientu ścieżki można skonfigurować tak, aby zmieniał kolor w miarę przechodzenia z środka kształtu w kierunku krawędzi.

Screenshot of an ellipse filled with a path gradient brush.

Szczotki gradientowe ścieżki są dość elastyczne. Szczotka gradientowa używana do wypełnienia trójkąta na poniższej ilustracji zmienia się stopniowo z czerwonego na środku do każdego z trzech różnych kolorów na wierzchołkach.

Screenshot of a triangle filled with a path gradient brush.

Zobacz też