在.NET中嵌入和使用资源文件
嵌入和使用资源文件,以下是全部源代码:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Reflection;
using System.IO;
using System.Diagnostics;
namespace ResourceDemo
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
ArrayList pics;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.PictureBox pBox;
private System.Windows.Forms.Button btnDisplay;
private System.Windows.Forms.TextBox txtInfo;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
// Instantiate our ArrayList
pics = new ArrayList();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.pBox = new System.Windows.Forms.PictureBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.btnDisplay = new System.Windows.Forms.Button();
this.txtInfo = new System.Windows.Forms.TextBox();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// pBox
//
this.pBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pBox.Location = new System.Drawing.Point(8, 8);
this.pBox.Name = "pBox";
this.pBox.Size = new System.Drawing.Size(264, 272);
this.pBox.TabIndex = 0;
this.pBox.TabStop = false;
this.pBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
//
// groupBox1
//
this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
this.txtInfo,
this.btnDisplay});
this.groupBox1.Location = new System.Drawing.Point(288, 8);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(192, 264);
this.groupBox1.TabIndex = 1;
this.groupBox1.TabStop = false;
//
// btnDisplay
//
this.btnDisplay.Location = new System.Drawing.Point(48, 24);
this.btnDisplay.Name = "btnDisplay";
this.btnDisplay.Size = new System.Drawing.Size(96, 23);
this.btnDisplay.TabIndex = 0;
this.btnDisplay.Text = "Display Picture";
this.btnDisplay.Click += new System.EventHandler(this.button1_Click);
//
// txtInfo
//
this.txtInfo.Location = new System.Drawing.Point(8, 56);
this.txtInfo.Multiline = true;
this.txtInfo.Name = "txtInfo";
this.txtInfo.ReadOnly = true;
this.txtInfo.Size = new System.Drawing.Size(176, 200);
this.txtInfo.TabIndex = 2;
this.txtInfo.Text = "txtInfo";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(496, 293);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.groupBox1,
this.pBox});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.groupBox1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
// go to a random picture in our arraylist and
// display it
Random generator = new Random();
Bitmap bmp = pics[ generator.Next(pics.Count) ] as Bitmap;
if(!(null==bmp))
{
pBox.Image = bmp;
}
bmp = null;
generator = null;
}
private void Form1_Load(object sender, System.EventArgs e)
{
Stream imgStream = null;
Bitmap bmp = null;
// get a reference to the current assembly
Assembly a = Assembly.GetExecutingAssembly();
// get a list of resource names from the manifest
string [] resNames = a.GetManifestResourceNames();
// populate the textbox with information about our resources
// also look for images and put them in our arraylist
txtInfo.Clear();
txtInfo.Text += String.Format("Found {0} resourcesrn", resNames.Length);
txtInfo.Text += "----------rn";
foreach(string s in resNames)
{
txtInfo.Text += s + "rn";
if(s.EndsWith(".bmp"))
{
// attach to stream to the resource in the manifest
imgStream = a.GetManifestResourceStream(s);
if( !(null==imgStream) )
{
// create a new bitmap from this stream and
// add it to the arraylist
bmp = Bitmap.FromStream( imgStream ) as Bitmap;
if( !(null==bmp) )
{
pics.Add( bmp );
}
bmp = null;
imgStream.Close();
imgStream = null;
}
}
}
txtInfo.Text += "----------rn";
txtInfo.Text += String.Format("Found {0} Bitmapsrn",
pics.Count);
}
}
}