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 を作成します。ImageBrush の UWP バージョンでは、相対パスは使用できません。

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