Utilities/EmbeddedResources.cs
author moel.mich
Wed, 11 Jul 2012 22:28:39 +0000
changeset 361 0a386ef7d5bb
parent 127 76aaf45a01c7
permissions -rw-r--r--
Fixed Issue 274. Fixed Issue 107.
     1 /*
     2  
     3   This Source Code Form is subject to the terms of the Mozilla Public
     4   License, v. 2.0. If a copy of the MPL was not distributed with this
     5   file, You can obtain one at http://mozilla.org/MPL/2.0/.
     6  
     7   Copyright (C) 2009-2010 Michael Möller <mmoeller@openhardwaremonitor.org>
     8 	
     9 */
    10 
    11 using System;
    12 using System.Collections.Generic;
    13 using System.Drawing;
    14 using System.IO;
    15 using System.Reflection;
    16 
    17 namespace OpenHardwareMonitor.Utilities {
    18   public class EmbeddedResources {
    19 
    20     public static Image GetImage(string name) {
    21       name = "OpenHardwareMonitor.Resources." + name;
    22 
    23       string[] names = 
    24         Assembly.GetExecutingAssembly().GetManifestResourceNames();
    25       for (int i = 0; i < names.Length; i++) {
    26         if (names[i].Replace('\\', '.') == name) {
    27           using (Stream stream = Assembly.GetExecutingAssembly().
    28             GetManifestResourceStream(names[i])) {
    29 
    30             // "You must keep the stream open for the lifetime of the Image."
    31             Image image = Image.FromStream(stream);
    32 
    33             // so we just create a copy of the image 
    34             Bitmap bitmap = new Bitmap(image);
    35 
    36             // and dispose it right here
    37             image.Dispose();
    38 
    39             return bitmap;
    40           }
    41         }
    42       } 
    43 
    44       return new Bitmap(1, 1);    
    45     }
    46 
    47     public static Icon GetIcon(string name) {
    48       name = "OpenHardwareMonitor.Resources." + name;
    49 
    50       string[] names =
    51         Assembly.GetExecutingAssembly().GetManifestResourceNames();
    52       for (int i = 0; i < names.Length; i++) {
    53         if (names[i].Replace('\\', '.') == name) {
    54           using (Stream stream = Assembly.GetExecutingAssembly().
    55             GetManifestResourceStream(names[i])) {
    56             return new Icon(stream);
    57           }
    58         }          
    59       } 
    60 
    61       return null;
    62     }
    63          
    64   }
    65 }