Es ruft System.Drawing.Bitmap (von WindowsBased) ab und konvertiert es in BitmapSource, die tatsächlich als Bildquelle für Ihr Bildsteuerelement in WPF verwendet werden kann.
@lindexi Obwohl MemoryStreamimplementiert IDisposable, muss es nicht explizit entsorgt werden, da es keine nicht verwalteten Ressourcen umschließt . Es ist wie ein Byte-Array und wird schließlich von GC gesammelt.
Kennyzx
2
Ich habe ein Programm mit geschrieben wpfund die Datenbank zum Anzeigen von Bildern verwendet. Dies ist mein Code:
SqlConnection con = new SqlConnection(@"Data Source=HITMAN-PC\MYSQL;
Initial Catalog=Payam;
Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from news", con);
DataTable dt = new DataTable();
da.Fill(dt);
string adress = dt.Rows[i]["ImgLink"].ToString();
ImageSource imgsr = new BitmapImage(new Uri(adress));
PnlImg.Source = imgsr;
Gute Antwort, aber ich würde dringend empfehlen, die SQL-Objekte mit Anweisungen zu versehen, damit sie entsorgt werden, wenn Sie sie nicht mehr verwenden.
Antworten:
Sie können die Source-Eigenschaft des Bildes verwenden. Versuchen Sie diesen Code ...
ImageSource imageSource = new BitmapImage(new Uri("C:\\FileName.gif")); image1.Source = imageSource;
quelle
Laut http://khason.net/blog/how-to-use-systemdrawingbitmap-hbitmap-in-wpf/
[DllImport("gdi32")] static extern int DeleteObject(IntPtr o); public static BitmapSource loadBitmap(System.Drawing.Bitmap source) { IntPtr ip = source.GetHbitmap(); BitmapSource bs = null; try { bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); } finally { DeleteObject(ip); } return bs; }
Es ruft System.Drawing.Bitmap (von WindowsBased) ab und konvertiert es in BitmapSource, die tatsächlich als Bildquelle für Ihr Bildsteuerelement in WPF verwendet werden kann.
quelle
Es ist einfach für Festplattendateien, aber schwieriger für Bitmap im Speicher.
System.Drawing.Bitmap bmp; Image image; ... MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); ms.Position = 0; BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.StreamSource = ms; bi.EndInit(); image.Source = bi;
Hier gestohlen
quelle
MemoryStream
implementiertIDisposable
, muss es nicht explizit entsorgt werden, da es keine nicht verwalteten Ressourcen umschließt . Es ist wie ein Byte-Array und wird schließlich von GC gesammelt.Ich habe ein Programm mit geschrieben
wpf
und die Datenbank zum Anzeigen von Bildern verwendet. Dies ist mein Code:SqlConnection con = new SqlConnection(@"Data Source=HITMAN-PC\MYSQL; Initial Catalog=Payam; Integrated Security=True"); SqlDataAdapter da = new SqlDataAdapter("select * from news", con); DataTable dt = new DataTable(); da.Fill(dt); string adress = dt.Rows[i]["ImgLink"].ToString(); ImageSource imgsr = new BitmapImage(new Uri(adress)); PnlImg.Source = imgsr;
quelle