WPF (c#) lehet olyan csinálni hogy az exét és a képet egybe rakjuk?










1) A Source Explorer-ben jobb klikk a projektre (nem a solution-re)
2) Properties
3) Resources
Itt elég sok fajta resource-t lehet hozzáadni, például string-eket, képeket, stb.
Ha hozzáadod és elmented, a projekteden belül meg fog jelenni egy Properties.Resources nevű osztály, amin keresztül statikus tagokkal el tudod érni az erőforrásaidat.
Viszont arra figyelj, hogy amíg a Resource-ban tárolt képek System.Drawing.Image típusúak, a WPF ablakodon System.Windows.Media.ImageSource-t kell használnod. Szóval kénytelen leszel írni rá egy metódust, ami átalakítja az Image-t ImageSource-ra:
/// <summary>
/// Creates an <see cref="ImageSource"/> from the given <see cref="Image"/>.
/// </summary>
/// <param name="b">The <see cref="Image"/> to convert.</param>
/// <returns>The <see cref="ImageSource"/> instance or null if b is null.</returns>
public static ImageSource ToImageSource(this Image b) {
.. #region Error checking
.. if (b == null)
.. .. return null;
.. #endregion
.. BitmapImage img = new BitmapImage();
.. using (MemoryStream ms = new MemoryStream()) {
.. .. b.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
.. .. ms.Position = 0;
.. .. ms.Seek(0, SeekOrigin.Begin);
.. .. img.BeginInit();
.. .. img.CacheOption = BitmapCacheOption.OnLoad;
.. .. img.StreamSource = ms;
.. .. img.EndInit();
.. }
.. return img;
}





Szerintem felesleges Properties.Resource-ba karni, mint mondtad is ez WinFormshoz való. Csak simán add hozzá a projecthez és válaszd ki a build action-nél hgoy Resource (nem Embedded resource). Ekkor belerakja az exebe.
Xaml-ből így lehet használni:
<Image Source="Konyvtar/filenev.png" />
A Konyvtar/filenev a solution-ben létrehozott elérési út, szóval ha a MainWindows.xaml mellé teszed elég csak a fajlnev
Ha kódból is el akarod érni, szólj.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!