using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Web;
using System.IO;
namespace WpfApp
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public MainWindow(Stream stream)
{
InitializeComponent();
String path = @"C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg";
var image = new BitmapImage();
try
{
image.BeginInit();
image.StreamSource = stream;
image.EndInit();
using (Stream bmpStream = System.IO.File.Open(path,System.IO.FileMode.Open))
{
Image im = Image.FromStream(bmpStream);
//Bitmap img = (Bitmap)Image.FromFile("aa.gif", true);
//var im = ImageFromStream(bmpStream);
grid1.Background = new ImageBrush(new BitmapImage(new Uri(@"im")));
}
// return image;
}
catch (Exception a)
{
// return image;
}
}
public void Window_Loaded(object sender, RoutedEventArgs e)
{
}
}
}
위 코드를 사용하여 jpg 이미지를 비트 맵으로 스트리밍하고 C #을 사용하여 그리드로 설정했지만 Image im = Image.FromStream(bmpStream);
오류가 표시됩니다. 누군가 jpg 이미지를 비트 맵으로 스트리밍하고 그리드로 설정하는 방법을 안내해 주시겠습니까?
WPF가 이미지를 처리하고 표시하는 방식은 WinForms가 수행 한 방식과 약간 다릅니다. 대부분의 이미지 표시 "사물"은 a가 필요하며 ImageSource
사용할 올바른 것을 검색해야합니다. 이 경우 BitmapImage
- 를 사용할 수 있어야 하지만 마지막으로 확인했을 때 바이트 스트림의 내용을 올바르게 표시하려면 좀 더주의가 필요합니다.
이 스 니펫은이 작업을 올바르게 수행하는 방법을 보여줍니다 BitmapImage
.
private static BitmapImage LoadImage(Stream stream)
{
// assumes that the streams position is at the beginning
// for example if you use a memory stream you might need to point it to 0 first
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.StreamSource = stream;
image.EndInit();
image.Freeze();
return image;
}
보시다시피 이미지가로드 되 자마자 스트림을 사용하도록 이미지에 지시해야합니다 (또는 ObjectDisposedException
s.
반환 된 객체를 이미지의 소스 속성으로 사용할 수 있습니다.
그래서 나는 당신이 찾고있는 것이 다음과 같다고 생각합니다.
public MainWindow(Stream stream)
{
InitializeComponent();
grid1.Background = new ImageBrush(LoadImage(stream));
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다