用 png/jpg 图像动态填充椭圆? ImageBrush 没有帮助,URI 不工作
Dynamically Fill Ellipse with png/jpg image? ImageBrush not helpful, URI not working
好的,所以我已经阅读了这里的一些问题,所有问题都有相同或相似的答案,我正在尝试通过代码将图像插入椭圆。
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 中执行时,它起作用了。
这个问题有解决办法吗?
这个有效:
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
注意两点:
- 在 images 目录中有一个名为 error.png
的图像
- 单击图像文件并从属性 window 中,将 Build Action 设置为 Content 并设置 复制到输出目录到始终复制。
使图像文件成为程序集资源。这比单独的内容文件更实用。
文件 image.png
应位于 Visual Studio 项目中名为 Art
的文件夹中,并且其 Build Action
(在文件的属性中)应设置为Resource
.
然后您将使用 Resource File Pack URI 访问文件:
ib.ImageSource = new BitmapImage(new Uri("pack://application:,,,/Art/image.png"));
好的,所以我已经阅读了这里的一些问题,所有问题都有相同或相似的答案,我正在尝试通过代码将图像插入椭圆。
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 中执行时,它起作用了。
这个问题有解决办法吗?
这个有效:
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
注意两点:
- 在 images 目录中有一个名为 error.png 的图像
- 单击图像文件并从属性 window 中,将 Build Action 设置为 Content 并设置 复制到输出目录到始终复制。
使图像文件成为程序集资源。这比单独的内容文件更实用。
文件 image.png
应位于 Visual Studio 项目中名为 Art
的文件夹中,并且其 Build Action
(在文件的属性中)应设置为Resource
.
然后您将使用 Resource File Pack URI 访问文件:
ib.ImageSource = new BitmapImage(new Uri("pack://application:,,,/Art/image.png"));