7

在 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")));
4

3 回答 3

12

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

rectangle.Fill = new ImageBrush(new BitmapImage(
    new Uri(@"C:\Users\xiaorui.dong\Pictures\profile.jpeg", UriKind.Relative)));
于 2012-11-23T21:01:13.760 回答
8

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

ImageBrush ib = new ImageBrush();

ib.ImageSource = new BitmapImage(new Uri("your path",UriKind.Relative));
rectangle.Fill = ib;
于 2012-11-23T21:03:49.510 回答
2

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

var imageBrush = new ImageBrush();
imageBrush.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/image.png"));
于 2016-07-16T19:17:27.623 回答