WPF Fırçalarına Genel Bakış
Ekranınızda görülebilen her şey, bir fırça tarafından boyandığı için görülebilir. Örneğin, bir düğmenin arka planını, metin ön kümesini ve bir şeklin dolgusunu betimleyen bir fırça kullanılır. bu konu, Windows Presentation Foundation (WPF) fırçalarıyla boyama kavramlarını tanıtır ve örnekler sağlar. Fırçalar, Kullanıcı arabirimi (UI) nesnelerini basit, düz renklerden karmaşık desen ve görüntü kümelerine göre boyamanıza olanak sağlar.
Fırça ile boyama
Bir Brush alanı çıktısı ile bir "boyar". Farklı fırçalar farklı türlerde çıktıya sahiptir. Bazı fırçalar, bir alanı düz renk ile, diğerleri ise gradyan, kalıp, resim veya çizim ile boyar. Aşağıdaki çizimde, farklı türlerin her birinin örnekleri gösterilmektedir Brush .

Fırça örnekleri
Çoğu görsel nesne nasıl boyanmış olduğunu belirtmenizi sağlar. Aşağıdaki tabloda, içinde kullanabileceğiniz bazı ortak nesneler ve özellikler listelenmiştir Brush .
| Sınıf | Fırça özellikleri |
|---|---|
| Border | BorderBrush, Background |
| Control | Background, Foreground |
| Panel | Background |
| Pen | Brush |
| Shape | Fill, Stroke |
| TextBlock | Background |
Aşağıdaki bölümler, farklı türleri anlatmaktadır Brush ve her birine bir örnek sağlar.
düz renk ile Paint
Bir SolidColorBrush alanı kesintisiz bir şekilde boyar Color . ' I belirtmek için çeşitli yollar vardır ColorSolidColorBrush : Örneğin, Alfa, kırmızı, mavi ve yeşil kanallarını belirtebilir veya sınıf tarafından sunulan önceden tanımlanmış renkten birini kullanabilirsiniz Colors .
Aşağıdaki örnek, ' a SolidColorBrush boyamak için bir kullanır FillRectangle . Aşağıdaki çizimde boyanmış dikdörtgen gösterilmektedir.

SolidColorBrush kullanılarak boyanmış bir dikdörtgen
Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;
// Create a SolidColorBrush and use it to
// paint the rectangle.
SolidColorBrush myBrush = new SolidColorBrush(Colors.Red);
exampleRectangle.Fill = myBrush;
Dim exampleRectangle As New Rectangle()
exampleRectangle.Width = 75
exampleRectangle.Height = 75
' Create a SolidColorBrush and use it to
' paint the rectangle.
Dim myBrush As New SolidColorBrush(Colors.Red)
exampleRectangle.Fill = myBrush
<Rectangle Width="75" Height="75">
<Rectangle.Fill>
<SolidColorBrush Color="Red" />
</Rectangle.Fill>
</Rectangle>
Sınıfı hakkında daha fazla bilgi için SolidColorBrush bkz. SolidColorBrush.
doğrusal gradyan ile Paint
LinearGradientBrush, Doğrusal gradyan ile bir alanı boyar. Doğrusal bir gradyan, gradyan ekseninde iki veya daha fazla rengi bir çizgi genelinde karıştırır. GradientStopGradyandaki renkleri ve bunların konumlarını belirtmek için nesneleri kullanırsınız.
Aşağıdaki örnek, ' a LinearGradientBrush boyamak için bir kullanır FillRectangle . Aşağıdaki çizimde boyanmış dikdörtgen gösterilmektedir.

Bir Doğrgradientbrush kullanılarak boyanmış bir dikdörtgen
Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;
// Create a LinearGradientBrush and use it to
// paint the rectangle.
LinearGradientBrush myBrush = new LinearGradientBrush();
myBrush.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0));
myBrush.GradientStops.Add(new GradientStop(Colors.Orange, 0.5));
myBrush.GradientStops.Add(new GradientStop(Colors.Red, 1.0));
exampleRectangle.Fill = myBrush;
Dim exampleRectangle As New Rectangle()
exampleRectangle.Width = 75
exampleRectangle.Height = 75
' Create a LinearGradientBrush and use it to
' paint the rectangle.
Dim myBrush As New LinearGradientBrush()
myBrush.GradientStops.Add(New GradientStop(Colors.Yellow, 0.0))
myBrush.GradientStops.Add(New GradientStop(Colors.Orange, 0.5))
myBrush.GradientStops.Add(New GradientStop(Colors.Red, 1.0))
exampleRectangle.Fill = myBrush
<Rectangle Width="75" Height="75">
<Rectangle.Fill>
<LinearGradientBrush>
<GradientStop Color="Yellow" Offset="0.0" />
<GradientStop Color="Orange" Offset="0.5" />
<GradientStop Color="Red" Offset="1.0" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
Sınıfı hakkında daha fazla bilgi için LinearGradientBrush bkz. LinearGradientBrush.
radyal gradyan ile Paint
Bir RadialGradientBrush radyal gradyan ile bir alanı boyar. Radyal gradyan bir daire içinde iki veya daha fazla rengi karıştırır. Sınıfında olduğu gibi LinearGradientBrush , GradientStop nesneleri Gradyandaki renkleri ve onların konumlarını belirtmek için kullanırsınız.
Aşağıdaki örnek, ' a RadialGradientBrush boyamak için bir kullanır FillRectangle . Aşağıdaki çizimde boyanmış dikdörtgen gösterilmektedir.

RadialGradientBrush kullanarak boyanmış bir dikdörtgen
Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;
// Create a RadialGradientBrush and use it to
// paint the rectangle.
RadialGradientBrush myBrush = new RadialGradientBrush();
myBrush.GradientOrigin = new Point(0.75, 0.25);
myBrush.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0));
myBrush.GradientStops.Add(new GradientStop(Colors.Orange, 0.5));
myBrush.GradientStops.Add(new GradientStop(Colors.Red, 1.0));
exampleRectangle.Fill = myBrush;
Dim exampleRectangle As New Rectangle()
exampleRectangle.Width = 75
exampleRectangle.Height = 75
' Create a RadialGradientBrush and use it to
' paint the rectangle.
Dim myBrush As New RadialGradientBrush()
myBrush.GradientOrigin = New Point(0.75, 0.25)
myBrush.GradientStops.Add(New GradientStop(Colors.Yellow, 0.0))
myBrush.GradientStops.Add(New GradientStop(Colors.Orange, 0.5))
myBrush.GradientStops.Add(New GradientStop(Colors.Red, 1.0))
exampleRectangle.Fill = myBrush
<Rectangle Width="75" Height="75">
<Rectangle.Fill>
<RadialGradientBrush GradientOrigin="0.75,0.25">
<GradientStop Color="Yellow" Offset="0.0" />
<GradientStop Color="Orange" Offset="0.5" />
<GradientStop Color="Red" Offset="1.0" />
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
Sınıfı hakkında daha fazla bilgi için RadialGradientBrush bkz. RadialGradientBrush.
bir görüntüyle Paint
ImageBrush, İle bir alanı boyar ImageSource .
Aşağıdaki örnek ImageBrush , ' a boyamak için bir kullanır FillRectangle . Aşağıdaki çizimde boyanmış dikdörtgen gösterilmektedir.

Görüntü kullanılarak boyanmış bir dikdörtgen
Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;
// Create an ImageBrush and use it to
// paint the rectangle.
ImageBrush myBrush = new ImageBrush();
myBrush.ImageSource =
new BitmapImage(new Uri(@"sampleImages\pinkcherries.jpg", UriKind.Relative));
exampleRectangle.Fill = myBrush;
Dim exampleRectangle As New Rectangle()
exampleRectangle.Width = 75
exampleRectangle.Height = 75
' Create an ImageBrush and use it to
' paint the rectangle.
Dim myBrush As New ImageBrush()
myBrush.ImageSource = New BitmapImage(New Uri("sampleImages\pinkcherries.jpg", UriKind.Relative))
exampleRectangle.Fill = myBrush
<Rectangle Width="75" Height="75">
<Rectangle.Fill>
<ImageBrush ImageSource="sampleImages\pinkcherries.jpg" />
</Rectangle.Fill>
</Rectangle>
Sınıfı hakkında daha fazla bilgi için ImageBrush bkz. ImageBrush.
çizim ile Paint
DrawingBrush, İle bir alanı boyar Drawing . Drawing, Şekil, resim, metin ve medya içerebilir.
Aşağıdaki örnek, ' a DrawingBrush boyamak için bir kullanır FillRectangle . Aşağıdaki çizimde boyanmış dikdörtgen gösterilmektedir.

DrawingBrush kullanılarak boyanmış bir dikdörtgen
Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;
// Create a DrawingBrush and use it to
// paint the rectangle.
DrawingBrush myBrush = new DrawingBrush();
GeometryDrawing backgroundSquare =
new GeometryDrawing(
Brushes.White,
null,
new RectangleGeometry(new Rect(0, 0, 100, 100)));
GeometryGroup aGeometryGroup = new GeometryGroup();
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 50, 50)));
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(50, 50, 50, 50)));
LinearGradientBrush checkerBrush = new LinearGradientBrush();
checkerBrush.GradientStops.Add(new GradientStop(Colors.Black, 0.0));
checkerBrush.GradientStops.Add(new GradientStop(Colors.Gray, 1.0));
GeometryDrawing checkers = new GeometryDrawing(checkerBrush, null, aGeometryGroup);
DrawingGroup checkersDrawingGroup = new DrawingGroup();
checkersDrawingGroup.Children.Add(backgroundSquare);
checkersDrawingGroup.Children.Add(checkers);
myBrush.Drawing = checkersDrawingGroup;
myBrush.Viewport = new Rect(0, 0, 0.25, 0.25);
myBrush.TileMode = TileMode.Tile;
exampleRectangle.Fill = myBrush;
Dim exampleRectangle As New Rectangle()
exampleRectangle.Width = 75
exampleRectangle.Height = 75
' Create a DrawingBrush and use it to
' paint the rectangle.
Dim myBrush As New DrawingBrush()
Dim backgroundSquare As New GeometryDrawing(Brushes.White, Nothing, New RectangleGeometry(New Rect(0, 0, 100, 100)))
Dim aGeometryGroup As New GeometryGroup()
aGeometryGroup.Children.Add(New RectangleGeometry(New Rect(0, 0, 50, 50)))
aGeometryGroup.Children.Add(New RectangleGeometry(New Rect(50, 50, 50, 50)))
Dim checkerBrush As New LinearGradientBrush()
checkerBrush.GradientStops.Add(New GradientStop(Colors.Black, 0.0))
checkerBrush.GradientStops.Add(New GradientStop(Colors.Gray, 1.0))
Dim checkers As New GeometryDrawing(checkerBrush, Nothing, aGeometryGroup)
Dim checkersDrawingGroup As New DrawingGroup()
checkersDrawingGroup.Children.Add(backgroundSquare)
checkersDrawingGroup.Children.Add(checkers)
myBrush.Drawing = checkersDrawingGroup
myBrush.Viewport = New Rect(0, 0, 0.25, 0.25)
myBrush.TileMode = TileMode.Tile
exampleRectangle.Fill = myBrush
<Rectangle Width="75" Height="75">
<Rectangle.Fill>
<DrawingBrush Viewport="0,0,0.25,0.25" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="White">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,100,100" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0,50,50" />
<RectangleGeometry Rect="50,50,50,50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
<GeometryDrawing.Brush>
<LinearGradientBrush>
<GradientStop Offset="0.0" Color="Black" />
<GradientStop Offset="1.0" Color="Gray" />
</LinearGradientBrush>
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
Sınıfı hakkında daha fazla bilgi için DrawingBrush bkz. DrawingBrush.
görselle Paint
Bir VisualBrush nesne ile bir alanı boyar Visual . Görsel nesne örnekleri Button , Page , ve içerir MediaElement . VisualBrushAyrıca, uygulamanızın bir bölümünden başka bir alana içerik yansımanızı sağlar; yansıma efektleri oluşturmak ve ekranın bölümlerini büyütme konusunda çok yararlı olur.
Aşağıdaki örnek, ' a VisualBrush boyamak için bir kullanır FillRectangle . Aşağıdaki çizimde boyanmış dikdörtgen gösterilmektedir.

VisualBrush kullanılarak boyanmış bir dikdörtgen
Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;
// Create a VisualBrush and use it
// to paint the rectangle.
VisualBrush myBrush = new VisualBrush();
//
// Create the brush's contents.
//
StackPanel aPanel = new StackPanel();
// Create a DrawingBrush and use it to
// paint the panel.
DrawingBrush myDrawingBrushBrush = new DrawingBrush();
GeometryGroup aGeometryGroup = new GeometryGroup();
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 50, 50)));
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(50, 50, 50, 50)));
RadialGradientBrush checkerBrush = new RadialGradientBrush();
checkerBrush.GradientStops.Add(new GradientStop(Colors.MediumBlue, 0.0));
checkerBrush.GradientStops.Add(new GradientStop(Colors.White, 1.0));
GeometryDrawing checkers = new GeometryDrawing(checkerBrush, null, aGeometryGroup);
myDrawingBrushBrush.Drawing = checkers;
aPanel.Background = myDrawingBrushBrush;
// Create some text.
TextBlock someText = new TextBlock();
someText.Text = "Hello, World";
FontSizeConverter fSizeConverter = new FontSizeConverter();
someText.FontSize = (double)fSizeConverter.ConvertFromString("10pt");
someText.Margin = new Thickness(10);
aPanel.Children.Add(someText);
myBrush.Visual = aPanel;
exampleRectangle.Fill = myBrush;
Dim exampleRectangle As New Rectangle()
exampleRectangle.Width = 75
exampleRectangle.Height = 75
' Create a VisualBrush and use it
' to paint the rectangle.
Dim myBrush As New VisualBrush()
'
' Create the brush's contents.
'
Dim aPanel As New StackPanel()
' Create a DrawingBrush and use it to
' paint the panel.
Dim myDrawingBrushBrush As New DrawingBrush()
Dim aGeometryGroup As New GeometryGroup()
aGeometryGroup.Children.Add(New RectangleGeometry(New Rect(0, 0, 50, 50)))
aGeometryGroup.Children.Add(New RectangleGeometry(New Rect(50, 50, 50, 50)))
Dim checkerBrush As New RadialGradientBrush()
checkerBrush.GradientStops.Add(New GradientStop(Colors.MediumBlue, 0.0))
checkerBrush.GradientStops.Add(New GradientStop(Colors.White, 1.0))
Dim checkers As New GeometryDrawing(checkerBrush, Nothing, aGeometryGroup)
myDrawingBrushBrush.Drawing = checkers
aPanel.Background = myDrawingBrushBrush
' Create some text.
Dim someText As New TextBlock()
someText.Text = "Hello, World"
Dim fSizeConverter As New FontSizeConverter()
someText.FontSize = CDbl(fSizeConverter.ConvertFromString("10pt"))
someText.Margin = New Thickness(10)
aPanel.Children.Add(someText)
myBrush.Visual = aPanel
exampleRectangle.Fill = myBrush
<Rectangle Width="75" Height="75">
<Rectangle.Fill>
<VisualBrush TileMode="Tile">
<VisualBrush.Visual>
<StackPanel>
<StackPanel.Background>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing>
<GeometryDrawing.Brush>
<RadialGradientBrush>
<GradientStop Color="MediumBlue" Offset="0.0" />
<GradientStop Color="White" Offset="1.0" />
</RadialGradientBrush>
</GeometryDrawing.Brush>
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0,50,50" />
<RectangleGeometry Rect="50,50,50,50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</StackPanel.Background>
<TextBlock FontSize="10pt" Margin="10">Hello, World!</TextBlock>
</StackPanel>
</VisualBrush.Visual>
</VisualBrush>
</Rectangle.Fill>
</Rectangle>
Sınıfı hakkında daha fazla bilgi için VisualBrush bkz. VisualBrush.
önceden tanımlanmış ve sistem fırçalarını kullanarak Paint
Windows Presentation Foundation (WPF), nesneleri boyamak için kullanabileceğiniz önceden tanımlanmış ve sistem fırçaları kümesi sağlar.
Kullanılabilir önceden tanımlanmış fırçaların bir listesi için, Brushes sınıfına bakın. önceden tanımlanmış bir fırçanın nasıl kullanılacağını gösteren bir örnek için bkz. Paint bir alanı düz renk ile.
Kullanılabilir sistem fırçalarının bir listesi için, sınıfına bakın SystemColors . bir örnek için bkz. sistem fırçası ile bir alan Paint.
Ortak fırça özellikleri
Brush nesneler Opacity , fırçayı saydam veya kısmen saydam hale getirmek için kullanılabilecek bir özellik sağlar. Opacity0 değeri fırçayla tamamen saydam hale gelir, Opacity 1 değeri de fırçayı tamamen opak hale getirir. Aşağıdaki örnek, Opacity yüzde 25 opak hale getirmek için özelliğini kullanır SolidColorBrush .
<Rectangle Width="100" Height="100">
<Rectangle.Fill>
<SolidColorBrush Color="Blue" Opacity="0.25" />
</Rectangle.Fill>
</Rectangle>
Rectangle myRectangle = new Rectangle();
myRectangle.Width = 100;
myRectangle.Height = 100;
SolidColorBrush partiallyTransparentSolidColorBrush
= new SolidColorBrush(Colors.Blue);
partiallyTransparentSolidColorBrush.Opacity = 0.25;
myRectangle.Fill = partiallyTransparentSolidColorBrush;
Fırça kısmen saydam renkler içeriyorsa, rengin opaklık değeri, fırçanın opaklık değeri ile çarpma ile birleştirilir. Örneğin, bir fırçanın opaklık değeri 0,5 ise ve fırçaya ilişkin bir rengin opaklık değeri 0,5 ise, çıkış rengi bir opaklık değeri olan 0,25.
Not
Bir fırçanın opaklık değerini değiştirmek, özelliğini kullanarak bir öğenin tüm saydamlığını değiştirmek daha verimlidir UIElement.Opacity .
Veya özelliklerini kullanarak fırçanın içeriğini döndürebilir, ölçeklendirebilir, eğebilir ve çevirebilirsiniz TransformRelativeTransform . Daha fazla bilgi için bkz. fırça dönüşümüne genel bakış.
AnimatableNesneler olduklarından Brush nesneler canlandırılabilirler. Daha fazla bilgi için bkz. animasyon genel bakış.
Freezable özellikleri
Sınıfından devraldığı Freezable için, Brush sınıfı birkaç özel özellik sağlar: Brush nesneler Freezableolarak, birden fazla nesne arasında paylaşılan ve klonlanmış olabilir. Ayrıca, Brush dışındaki tüm türler, VisualBrush performansı artırmak ve iş parçacığı açısından güvenli hale getirilbilmek için salt okunurdur.
Nesneler tarafından sunulan farklı özellikler hakkında daha fazla bilgi için Freezable bkz. Freezable.
Nesnelerin neden dondurulamadığı hakkında daha fazla bilgi için VisualBrush , VisualBrush tür sayfasına bakın.