如何在C#代码中创建ImageBrush

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

1
你的代码在我这里使用已知的URL可以工作,你确定你想要的是.jpeg而不是.jpg吗? - Mark Hall
3个回答

12

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

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

8
在C#中,您可以像这样使用它,首先从XAML中删除fill,然后在C#中使用与之前相同的代码。它必须能够工作。
ImageBrush ib = new ImageBrush();

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

2

这段代码创建了一个ImageBrush,使用的图片"Assets/image.png"是UWP项目的一部分。相对路径在UWP版本的ImageBrush中不可用。

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

请提供英语原文,以便我翻译。 - Mostafiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接