• 皮肤和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中。

            下面是将文件整合:

            将PropertiesResources.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文件添加到PropertiesResources.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

  • 相关阅读:
    Linux Shell脚本启动jar、关闭jar
    SpringBoot基于切面来拦截@PathVariable参数及抛出异常全局处理方法
    SpringBoot引用font awesome不显示问题的解决
    解决RestTemplate请求url出现301转发错误 301 Moved Permanently
    npm报错:Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 10.x
    npm 安装 chromedriver 失败的解决办法
    npm run dev报错 JS stacktrace(Node内存溢出)
    Mysql批量修改表字段名称为小写
    Ubuntu18 apt更换国内源 加快下载速度
    微信小程序如何实现支付宝支付?
  • 原文地址:https://www.cnblogs.com/mq0036/p/6657561.html
Copyright © 2020-2023  润新知