Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du använder egenskapen Stretch för en ImageBrush för att bevara bildens proportioner.
När du använder en ImageBrush för att måla ett område sträcker sig innehållet som standard för att helt fylla utdataområdet. När utdataområdet och bilden har olika proportioner förvrängs bilden av den här utsträckningen.
För att få en ImageBrush att bevara bildförhållandet för bilden, ställ in egenskapen Stretch på Uniform eller UniformToFill.
Exempel
I följande exempel används två ImageBrush objekt för att måla två rektanglar. Varje rektangel är 300 x 150 bildpunkter och var och en innehåller en bild på 300 x 300 bildpunkter. Egenskapen Stretch för den första penseln är inställd på Uniformoch egenskapen Stretch för den andra penseln är inställd på UniformToFill.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using System.Windows.Media;
using System.Windows.Shapes;
namespace Microsoft.Samples.Graphics.UsingImageBrush
{
/// <summary>
/// Demonstrates different ImageBrush Stretch settings.
/// </summary>
public class StretchModes : Page
{
public StretchModes()
{
// Create an ImageBrush with its Stretch
// property set to Uniform. The image it
// contains will be expanded as much as possible
// to fill the output area while still
// preserving its aspect ratio.
ImageBrush uniformBrush = new ImageBrush();
uniformBrush.ImageSource =
new BitmapImage(new Uri("sampleImages\\square.jpg", UriKind.Relative));
uniformBrush.Stretch = Stretch.Uniform;
// Freeze the brush (make it unmodifiable) for performance benefits.
uniformBrush.Freeze();
// Create a rectangle and paint it with the ImageBrush.
Rectangle rectangle1 = new Rectangle();
rectangle1.Width = 300;
rectangle1.Height = 150;
rectangle1.Stroke = Brushes.MediumBlue;
rectangle1.StrokeThickness = 1.0;
rectangle1.Fill = uniformBrush;
// Create an ImageBrush with its Stretch
// property set to UniformToFill. The image it
// contains will be expanded to completely fill
// the rectangle, but its aspect ratio is preserved.
ImageBrush uniformToFillBrush = new ImageBrush();
uniformToFillBrush.ImageSource =
new BitmapImage(new Uri("sampleImages\\square.jpg", UriKind.Relative));
uniformToFillBrush.Stretch = Stretch.UniformToFill;
// Freeze the brush (make it unmodifiable) for performance benefits.
uniformToFillBrush.Freeze();
// Create a rectangle and paint it with the ImageBrush.
Rectangle rectangle2 = new Rectangle();
rectangle2.Width = 300;
rectangle2.Height = 150;
rectangle2.Stroke = Brushes.MediumBlue;
rectangle2.StrokeThickness = 1.0;
rectangle2.Margin = new Thickness(0, 10, 0, 0);
rectangle2.Fill = uniformToFillBrush;
StackPanel mainPanel = new StackPanel();
mainPanel.Children.Add(rectangle1);
mainPanel.Children.Add(rectangle2);
Content = mainPanel;
Background = Brushes.White;
Margin = new Thickness(20);
Title = "ImageBrush Stretch Modes";
}
}
}
Följande bild visar utdata från den första penseln, som har en Stretch inställning för Uniform.
Nästa bild visar utdata från den andra penseln, som har en inställning Stretch för UniformToFill.
Observera att egenskapen Stretch fungerar identiskt för de andra TileBrush objekten, d.v.s. för DrawingBrush och VisualBrush. Mer information om ImageBrush och andra TileBrush objekt finns i Målning med bilder, ritningar och visuella objekt.
Observera också att även om egenskapen Stretch verkar ange hur TileBrush innehåll sträcker sig för att passa utdataområdet, anger den faktiskt hur TileBrush innehåll sträcker sig för att fylla baspanelen. Mer information finns i TileBrush.
Det här kodexemplet är en del av ett större exempel som tillhandahålls för klassen ImageBrush. Det fullständiga exemplet finns i ImageBrush Sample.
Se även
.NET Desktop feedback