0

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

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

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

4

2 回答 2

2

这有效:

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. 单击图像文件并从属性窗口中,将Build Action设置为Content并将Copy to Output Directory设置为Copy Always
于 2017-02-05T07:23:57.273 回答
2

使图像文件成为程序集资源。这比拥有单独的内容文件更实用。

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

然后您将使用资源文件包 URI来访问该文件:

ib.ImageSource = new BitmapImage(new Uri("pack://application:,,,/Art/image.png"));
于 2017-02-05T09:47:00.420 回答