用png / jpg图像动态填充椭圆? ImageBrush无用,URI无效

时间:2017-02-05 04:35:50

标签: c# wpf png jpeg imagebrush

好的,所以我在这里阅读了一些问题,所有问题都有相同或类似的答案,我正在尝试从代码中将图像插入椭圆。

ImageBrush ib = new ImageBrush();
        ib.ImageSource = new BitmapImage(new Uri("Art/image.png", UriKind.Relative));
        Sun.Fill = ib;

使用此代码没有任何反应,我得到黑屏并丢失一些对象。 我更改了代码,删除了UriKind,将其更改为absolute,更改为RelativeOrAbsolute,我尝试了@"Art\image.png"。所有这些都加起来相同。 但是当我在XAML中做它时,它可以工作。 这个问题有解决方案吗?

2 个答案:

答案 0 :(得分:1)

这有效:

var d = new System.Windows.Shapes.Ellipse();
ImageBrush ib = new ImageBrush();
ib.ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri("images/error.png", UriKind.Relative));
d.Fill = ib;

this.Content = d; // assuming the parent is a Window

注意两件事:

  1. images 目录中有一个名为 error.png
  2. 的图像
  3. 点击图片文件,然后在属性窗口中,将构建操作设置为内容,并将复制到输出目录设置为始终复制

答案 1 :(得分:1)

使图像文件成为装配资源。这比单独的内容文件更实用。

文件image.png应位于Visual Studio项目中名为Art的文件夹中,并且Build Action(在文件的属性中)应该设置为Resource

然后您将使用Resource File Pack URI来访问该文件:

ib.ImageSource = new BitmapImage(new Uri("pack://application:,,,/Art/image.png"));