皮肤和DLL和图片等项目文件完全整合到exe中
C#开发的程序原生界面实在是太丑了,自己又没有美化天赋,所以只能使用皮肤控件了,网上找到了IrisSkin2,包含一个.dll文件和若干ssk后缀的皮肤文件,代码其实很简单的。但是后来发现个问题,就是exe的运行必须有资源文件的支持,不然根本就打不开软件,但我开发的100多K的小软件实在没必要这样,是直接在桌面运行的那种,所以想到将全部的依赖文件整合到exe文件中,网上查找了很多资料,下面说下过程。
首先是IrisSkin2的使用方法:
初始化皮肤:

Sunisoft.IrisSkin.SkinEngine se = new Sunisoft.IrisSkin.SkinEngine();
se.SkinAllForm = true;
设置皮肤:

se.SkinFile="Skins/mdd_spring.ssk";
可以看到非常简单,调换皮SkinFile的值就可以更换皮肤了,所有的皮肤名称我放在一个Combox中。
下面是将文件整合:
将Properties\Resources.resx文件打开,在“添加资源”-“添加现有文件”,选择皮肤文件就行了,Resources.resx这个文件本身是包括在exe中的
其后是调用的问题:
有两种调用方式:Properties.Resources.名称 Properties.Resources.ResourceManager.GetObject("名称"),由于现在只知道名称,所以使用第二种方式,返回式是Object类型,se.SkinFile是string类型,不兼容,SkinEngine还有一种设置皮肤的方法se.SkinStream,是Stream类型,所以要将Object转化为Stream
先强制转化为byte[],然后转化为Stream
byte[] obj=(byte[])Properties.Resources.ResourceManager.GetObject(selectedValue);
se.SkinStream = new MemoryStream(obj);
至于整个dll文件,网上的方法是:找到你引用的程序集的属性,把 “嵌入互操作类型” 改成 true,我用的VS2008貌似没有这个选项,VS2010的可以试下
另外一种方式:同样把dll文件添加到Properties\Resources.resx文件中,然后再使用
byte[] obj = (byte[])Properties.Resources.ResourceManager.GetObject(Properties.Resources.IrisSkin2);
System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(buffer); //Load assembly using byte array
Assembly.Load具体用法可参考:Assembly.Load 详解
整合exe增加的大小基本就是添加东西的大小,如果谁有更简便的方法请留下言
出处:http://blog.csdn.net/yz1311/article/details/17009151
皮肤和DLL和图片等项目文件完全整合到exe中的更多相关文章
- Pyinstaller如何将资源文件一起打包至exe中
基本原理:Pyinstaller 可以将资源文件一起bundle到exe中,当exe在运行时,会生成一个临时文件夹,程序可通过sys._MEIPASS访问临时文件夹中的资源 官方说明:https:// ...
- Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤
资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在 ...
- delphi 将Dll等生成资源文件
资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在资 ...
- .NET Winform 将引用的dll文件集成到exe中(转)
Winform程序经常需要引用一些第三方dll文件,这些dll在发布后与exe文件保存在同一目录下,虽然将dll文件集成到exe中会增大文件尺寸,但程序目录会相对整洁. 下面介绍一种比较简单的集成方法 ...
- Pyinstaller打包: 将资源文件或文件夹打包到最后生成的exe中
前提:用pyinstaller打包时部分资源文件可以利用qrc转成py文件来读取,但是有部分文件类型不适用. 原理:Pyinstaller 将资源文件一起打包到exe中.当exe运行时,会生成一个临时 ...
- .Net中把图片等文件放入DLL中,并在程序中引用
原文:.Net中把图片等文件放入DLL中,并在程序中引用 [摘要] 有时我们需要隐藏程序中的一些资源,比如游戏,过关后才能看到图片,那么图片就必须隐藏起来,否则不用玩这个游戏就可以看到你的图片了,呵呵 ...
- .NET 使用 Azure Blob 存储图片或文件
使用的是VS2017 一.先使用 NuGet 获取这两个包. 执行以下步骤: 在“解决方案资源管理器”中,右键单击你的项目并选择“管理 NuGet 包”. 1.在线搜索“WindowsAzure.St ...
- HTML中上传与读取图片或文件(input file)----在路上(25)
input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ...
- C#开发微信门户及应用(19)-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)
我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送.回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流.企业号具有关注安全.消息无限制等特 ...
随机推荐
- 转:C语言嵌入式系统编程之软件架构篇
http://blog.csdn.net/ce123_zhouwei/article/details/6978672
- $用python实现快速排序算法
本文主要介绍用python实现基本的快速排序算法,体会一下python的快排代码可以写得多么简洁. 1. 三言两语概括算法核心思想 先从待排序的数组中找出一个数作为基准数(取第一个数即可),然后将原来 ...
- Go sync模块
// A WaitGroup waits for a collection of goroutines to finish.// The main goroutine calls Add to set ...
- netty上手
关于netty的基础NIO,请参见:NIO原理及实例 下面介绍Netty的上手使用: 首先为项目添加jar依赖: <dependency> <groupId>io.netty& ...
- MVC 中 System.Web.Optimization 找不到引用
在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...
- 使用log4j2打印Log,log4j不能打印日志信息,log4j2不能打印日志信息,log4j和logj2,idea控制台信息乱码(文末)
说来惭愧,今天就写了个"hello world",了解了一下log4j的日志. 本来是想在控制台打印个log信息,也是遇到坎坷重重,开始也没去了解log4j就来使用,log4j配置 ...
- Python-flask中数据库连接池DBUtils
一.DBUtils DBUtils是Python的一个用于实现数据库连接池的模块. 连接池的三种模式: 第一种模式: 它的缺点:每一次请求反复创建数据库的链接,链接的次数太多 ...
- 0.00-050613_ZC_Chapter4_20151230
1. 32位 保护模式 段选择符 --> 段描述符(段描述符表) --> 段基地址 + 偏移量 ==> 线性地址(ZC: 这个地址就是段的开始地址) 1.2. 段限长字段LIMIT ...
- Java-集合类源码List篇(二)
前言 上篇中,我们分析了ArrayList的常用方法及其实现机制.ArrayList是基于内存空间连续的数组来实现的,List中其实还提供了一种基于链表结构的LinkedList来实现集合.同时多线程 ...
- WPF绑定数据源之RelativeSource
Command="{Binding ConfirmRegisterCommand}" CommandParameter="{Binding RelativeSource= ...