// Load image from a file path Bitmap image = new Bitmap(@"c:\ufo.gif");
The only safe way to make sure that the image, or any file, stays with code is to embed it and load it as a resource, a named piece of data embedded in the assembly itself.
Following command line shows how to embed a file into the assembly:
csc [source file name.cs] /resource:[resource file name] csc ufo.cs /resource:UFOApplication.ufo.gif
Following codes shows how to retrieve resources from the assembly manifest:
using System;
using System.IO;
using System.Windows.Forms;
using System.Drawing;
using System.Reflection;
namespace UFOApplication {
 public class Form1: Form {
  private Assembly assembly;
  private Bitmap image;
  // Constructor
  public Form1() {
   // Get current object type's assembly.
   this.assembly = this.GetType().Assembly;
   // Load the image binary stream from the assembly manifest.
   // Stream stream = this.assembly.GetManifestResourceStream("UFOApplication.ufo.gif");
   Stream stream = this.assembly.GetManifestResourceStream(this.GetType(), "ufo.gif");
   // Construct the bitmap from stream.
   this.image = new Bitmap(stream);  
   this.Paint += new PaintEventHandler(Form1_Paint);
  }
  private void Form1_Paint(object sender, PaintEventArgs e) {
   // Draw the bitmap on the form.
   e.Graphics.DrawImage(this.image, 0, 0); 
  }
  // The main entry point for the application.
  public static void Main() {
   Application.Run(new Form1());
  }
 }
}
The proper type of object will be needed to load the relevant type of each resource.
No comments:
Post a Comment