[C#] Eingebettete Resourcen aus Resources.resx auslesen

  • Resourcendatei muss im Projektbaum unter Projektname->Properties->Resources.resx vorhanden sein
  • auf Resources.resx Doppelklicken (öffnen) und oben Resource hinzufügen->Vorhandene Datei hinzufügen … wählen
  • Datei auswählen (bmp, ico, txt, wav …) und hinzufügen, die Resource wird nun ohne Dateinamenerweiterung im Designer hinterlegt
  • Zugriff auf die hinterlegte Resourcen Properties.Resources:
    using System.Drawing;
    using System.Resources;
    using System.Reflection;
    
    class CMyClass
    {
        // Button, der ein Bildchen aus der Resource verwenden soll
        private Button _btnTest = new Button();
        // Imagelist, die Images beinhaltet
        private ImageList _ilImages = new ImageList();
    
        public CMyClass()
        {
            // Bitmap anhand seines Resourcen-Namens holen
            Bitmap bmpTest = Properties.Resources.BmpTest;
    
            // Imagelist vorbereiten
            _ilImages.ColorDepth = ColorDepth.Depth32Bit;
            _ilImages.ImageSize = new Size(16, 16);
            _ilImages.TransparentColor = Color.Black; // transparente Farbe festlegen
    
            // Bild hinzufügen
            _ilImages.Images.Add(bmpTest);
    
            // Bild für Button festlegen
            _btnStartStop.ImageList = _ilImages;
            // Index des Bitmaps in der Imagelist
            _btnTest.ImageIndex = 0;
        }
    }
    
  • Zugriff auf die hinterlegte Resourcen über ResourceManager:
    using System.Drawing;
    using System.Resources;
    using System.Reflection;
    
    class CMyClass
    {
        // Button, der ein Bildchen aus der Resource verwenden soll
        private Button _btnTest = new Button();
        // Imagelist, die Images beinhaltet
        private ImageList _ilImages = new ImageList();
    
        public CMyClass()
        {
            // Bilder aus lokalen Resources.resx holen
            // wobei "Standardnamespace" meist der Projektname ist
            ResourceManager rm = new ResourceManager("Standardnamespace.Properties.Resources", Assembly.GetExecutingAssembly());
    
            // Bitmap anhand seines Namens (ohne Dateinamenerweiterung!) aus der Resource holen
            Bitmap bmpTest = rm.GetObject("BmpTest") as Bitmap;
    
            // Imagelist vorbereiten
            _ilImages.ColorDepth = ColorDepth.Depth32Bit;
            _ilImages.ImageSize = new Size(16, 16);
            _ilImages.TransparentColor = Color.Black; // transparente Farbe festlegen
    
            // Bild hinzufügen
            _ilImages.Images.Add(bmpTest);
    
            // Bild für Button festlegen
            _btnStartStop.ImageList = _ilImages;
            // Index des Bitmaps in der Imagelist
            _btnTest.ImageIndex = 0;
        }
    }