如何在C#代码中创建ImageBrush

时间:2012-11-23 20:52:22

标签: c# wpf

在XAML中:

    <Rectangle Stroke="Aqua" Opacity="0.7" StrokeThickness="10" Canvas.Left="24" Canvas.Top="22" Height="86" Width="102">
        <Rectangle.Fill>
            <ImageBrush ImageSource="C:\Users\xiaorui.dong\Pictures\profile.jpeg"></ImageBrush>
        </Rectangle.Fill>
    </Rectangle>

XAML工作正常,但如何在C#代码中创建上述 ImageBrush

C#应该是这样的:

Rectangle rectangle = new Rectangle();
rectangle.StrokeThickness = 10;
rectangle.Height = 200;
rectangle.Width = 100;
rectangle.SetValue(Canvas.LeftProperty, 100d);
rectangle.SetValue(Canvas.TopProperty, 100d);
rectangle.Fill = new ImageBrush(new BitmapImage(new Uri(@"C:\Users\xiaorui.dong\Pictures\profile.jpeg")));

3 个答案:

答案 0 :(得分:13)

我猜测问题在于定位图像,而您获得的异常是因为您没有提供UriKind参数。尝试将UriKind.Relative作为参数提供给Uri

rectangle.Fill = new ImageBrush(new BitmapImage(
    new Uri(@"C:\Users\xiaorui.dong\Pictures\profile.jpeg", UriKind.Relative)));

答案 1 :(得分:8)

在c#中你可以使用它,首先是从XAML中删除填充然后在c#中使用相同的代码,就像你使用它一样。它必须工作。

ImageBrush ib = new ImageBrush();

ib.ImageSource = new BitmapImage(new Uri("your path",UriKind.Relative));
rectangle.Fill = ib;

答案 2 :(得分:2)

此代码使用图像“Assets / image.png”创建ImageBrush,该图像是UWP项目的一部分。相对路径在UWP版本的ImageBrush中不可用。

var imageBrush = new ImageBrush();
imageBrush.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/image.png"));