在.NET中嵌入和使用资源文件

此博客展示了一个使用.NET 开发的 Windows 窗体应用程序代码。该程序能从当前程序集的资源中获取图片,将其存储在数组列表里,点击按钮可随机显示图片。代码涉及资源流操作、随机数生成等.NET 相关技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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} resources/r/n", resNames.Length);
            txtInfo.Text += "----------/r/n";
            foreach(string s in resNames)
            {
                txtInfo.Text += s + "/r/n";
                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 += "----------/r/n";
            txtInfo.Text += String.Format("Found {0} Bitmaps/r/n",
                pics.Count);                        
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值