我有位图图像变量,我想将它绑定到我的xaml窗口。
System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
string[] resources = thisExe.GetManifestResourceNames();
var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SplashDemo.Resources.Untitled-100000.png");
Bitmap image = new Bitmap(stream);
这是我的xaml代码
<Image Source="{Binding Source}" HorizontalAlignment="Left" Height="210" Margin="35,10,0,0" VerticalAlignment="Top" Width="335">
</Image>
你可以帮我用C#代码将这个位图变量绑定到这个xaml图像吗?
答案 0 :(得分:4)
如果你真的想用C#代码而不是XAML内部设置它,你应该使用这个简单的解决方案described further on the MSDN reference:
string path = "Resources/Untitled-100000.png";
BitmapImage bitmap = new BitmapImage(new Uri(path, UriKind.Relative));
image.Source = bitmap;
但首先,您需要为Image
提供一个名称,以便您可以从c#中引用它:
<Image x:Name="image" ... />
无需引用Windows窗体类。 如果您坚持将图像嵌入到程序集中,则需要以下更长的代码来加载图像:
string path = "SplashDemo.Resources.Untitled-100000.png";
using (Stream fileStream = GetType().Assembly.GetManifestResourceStream(path))
{
PngBitmapDecoder bitmapDecoder = new PngBitmapDecoder(fileStream,
BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
ImageSource imageSource = bitmapDecoder.Frames[0];
image.Source = imageSource;
}
答案 1 :(得分:1)
以下是一些示例代码:
// Winforms Image we want to get the WPF Image from...
System.Drawing.Image imgWinForms = System.Drawing.Image.FromFile("test.png");
// ImageSource ...
BitmapImage bi = new BitmapImage();
bi.BeginInit();
MemoryStream ms = new MemoryStream();
// Save to a memory stream...
imgWinForms.Save(ms, ImageFormat.Bmp);
// Rewind the stream...
ms.Seek(0, SeekOrigin.Begin);
// Tell the WPF image to use this stream...
bi.StreamSource = ms;
bi.EndInit();
答案 2 :(得分:0)
如果您使用的是WPF,请在项目中右键单击您的图片,然后将Build Action
设置为Resource
。假设您的图片名为MyImage.jpg
且位于项目的Resources
文件夹中,您应该可以直接在xaml
中引用它,而无需使用任何C#代码。像这样:
<Image Source="/Resources/MyImage.jpg"
HorizontalAlignment="Left"
Height="210"
Margin="35,10,0,0"
VerticalAlignment="Top"
Width="335">
</Image>