Comment : peindre une zone avec une image
Cet exemple montre comment utiliser la ImageBrush classe pour peindre une zone avec une image. Une ImageBrush image unique est affichée, qui est spécifiée par sa ImageSource propriété.
Exemple
L’exemple suivant peint le bouton à l’aide Background d’un ImageBrush.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using System.Windows.Media;
namespace Microsoft.Samples.Graphics.UsingImageBrush
{
public class PaintingWithImagesExample : Page
{
public PaintingWithImagesExample()
{
Background = Brushes.White;
StackPanel mainPanel = new StackPanel();
mainPanel.Margin = new Thickness(20.0);
// Create a button.
Button berriesButton = new Button();
berriesButton.Foreground = Brushes.White;
berriesButton.FontWeight = FontWeights.Bold;
FontSizeConverter sizeConverter = new FontSizeConverter();
berriesButton.FontSize = (Double)sizeConverter.ConvertFromString("16pt");
berriesButton.FontFamily = new FontFamily("Verdana");
berriesButton.Content = "Berries";
berriesButton.Padding = new Thickness(20.0);
berriesButton.HorizontalAlignment = HorizontalAlignment.Left;
// Create an ImageBrush.
ImageBrush berriesBrush = new ImageBrush();
berriesBrush.ImageSource =
new BitmapImage(
new Uri(@"sampleImages\berries.jpg", UriKind.Relative)
);
// Use the brush to paint the button's background.
berriesButton.Background = berriesBrush;
mainPanel.Children.Add(berriesButton);
this.Content = mainPanel;
}
}
}
Par défaut, une ImageBrush image s’étire pour remplir complètement la zone que vous peinturez. Dans l’exemple précédent, l’image est étirée pour remplir le bouton, ce qui peut éventuellement déformer l’image. Vous pouvez contrôler ce comportement en définissant la Stretch propriété sur TileBrushUniform ou UniformToFill, ce qui entraîne la conservation du rapport d’aspect de l’image.
Si vous définissez les propriétés et TileMode les Viewport propriétés d’un ImageBrush, vous pouvez créer un modèle répétitif. L’exemple suivant peint un bouton en utilisant un modèle créé à partir d’une image.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using System.Windows.Media;
namespace Microsoft.Samples.Graphics.UsingImageBrush
{
public class TiledImageBrushExample : Page
{
public TiledImageBrushExample()
{
Background = Brushes.White;
StackPanel mainPanel = new StackPanel();
mainPanel.Margin = new Thickness(20.0);
// Create a button.
Button berriesButton = new Button();
berriesButton.Foreground = Brushes.White;
berriesButton.FontWeight = FontWeights.Bold;
FontSizeConverter sizeConverter = new FontSizeConverter();
berriesButton.FontSize = (Double)sizeConverter.ConvertFromString("16pt");
berriesButton.FontFamily = new FontFamily("Verdana");
berriesButton.Content = "Berries";
berriesButton.Padding = new Thickness(20.0);
berriesButton.HorizontalAlignment = HorizontalAlignment.Left;
// Create an ImageBrush.
ImageBrush berriesBrush = new ImageBrush();
berriesBrush.ImageSource =
new BitmapImage(
new Uri(@"sampleImages\berries.jpg", UriKind.Relative)
);
// Set the ImageBrush's Viewport and TileMode
// so that it produces a pattern from
// the image.
berriesBrush.Viewport = new Rect(0,0,0.5,0.5);
berriesBrush.TileMode = TileMode.FlipXY;
// Use the brush to paint the button's background.
berriesButton.Background = berriesBrush;
mainPanel.Children.Add(berriesButton);
this.Content = mainPanel;
}
}
}
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Media.Imaging
Imports System.Windows.Media
Namespace Microsoft.Samples.Graphics.UsingImageBrush
Public Class TiledImageBrushExample
Inherits Page
Public Sub New()
Background = Brushes.White
Dim mainPanel As New StackPanel()
mainPanel.Margin = New Thickness(20.0)
' Create a button.
Dim berriesButton As New Button()
With berriesButton
.Foreground = Brushes.White
.FontWeight = FontWeights.Bold
Dim sizeConverter As New FontSizeConverter()
.FontSize = CType(sizeConverter.ConvertFromString("16pt"), Double)
.FontFamily = New FontFamily("Verdana")
.Content = "Berries"
.Padding = New Thickness(20.0)
.HorizontalAlignment = HorizontalAlignment.Left
End With
' Create an ImageBrush.
Dim berriesBrush As New ImageBrush()
berriesBrush.ImageSource = New BitmapImage(New Uri("sampleImages\berries.jpg", UriKind.Relative))
' Set the ImageBrush's Viewport and TileMode
' so that it produces a pattern from
' the image.
berriesBrush.Viewport = New Rect(0, 0, 0.5, 0.5)
berriesBrush.TileMode = TileMode.FlipXY
' Use the brush to paint the button's background.
berriesButton.Background = berriesBrush
mainPanel.Children.Add(berriesButton)
Me.Content = mainPanel
End Sub
End Class
End Namespace
Pour plus d’informations sur la ImageBrush classe, consultez Peinture avec images, dessins et visuels.
Cet exemple de code fait partie d’un exemple plus large fourni pour la ImageBrush classe. Pour l’exemple complet, consultez la page ImageBrush, exemple.
Voir aussi
.NET Desktop feedback