VS2010皮肤控件介绍

在我们平时使用的各种工具中,如QQ,迅雷,以及各种空间等,都提供了一些换肤功能,可以让我们选择各种我们喜欢的界面。本文就对VS中常用的窗口程序做一个简单的换肤,利用一个dll文件来进行实现。

 

首先我们要加载一个叫做IrisSkin2.dll的dll文件,通过“添加引用”,在应用里添加IrisSkin2.dll,就可以完成对这个dll的调用。然后在工具栏中添加一个SkinEngine的控件。可以在工具栏中添加一个选项卡,比如命名为Skin,然后右键单击,在选择项的.NETFramework组件中找到SkinEngine的控件。

 

 

 

这时候,我们就能看到在工具栏中有了一个SkinEngine的控件了。

除此之外,我们还需要一个皮肤文件,通常后缀为.ssk,或者是.skn文件。可以用两种方法来实现,一种是在bin/Debug中添加名为ssk的文件,此种方法比较简单,只需要在程序中添加如此代码就OK了。

this.skinEngine1.SkinFile =  "MSN.ssk";

文件名可以是任意存在的文件名。只要是在Debug里存在的。

另一种方法是使用MemoryStream。通过一个简单的函数来设置来实现。

private void SetSkinFile(byte[] bytes)

        {

            memoryStream=new MemoryStream(bytes);

            skinEngine1.SkinStream = memoryStream;            

        }

在使用的时候,需要调用该函数,如SetSkinFile(Properties.Resources.Wave1);使用Resources文件的前提是必须在Resource中添加相应的资源。具体方法如下:

选择Properties中的Resources,选择添加资源,将相对应的SSK资源添加进来。

整个窗口的代码如下:

using System;

using System.Windows.Forms;

using System.IO;

 

namespace 皮肤

{

    public partial class Form1 : Form

    {

        private int num = 0;

        private MemoryStream memoryStream;

 

        public Form1()

        {

            InitializeComponent();

            SetSkinFile(Properties.Resources.Wave1);            

        }

//此处实现的是通过按钮来实现不断换肤功能,主要是对bin里面的

        //几个皮肤文件做循环

        private void button1_Click(object sender, EventArgs e)

        {

            num = (num++) % 6 + 1; 

            this.skinEngine1.SkinFile =  num + ".ssk";

        }

 

         private void SetSkinFile(byte[] bytes)

        {

            memoryStream=new MemoryStream(bytes);

            skinEngine1.SkinStream = memoryStream;            

        }

    }

}

以上程序的运行效果如下:

 

 

如此一来,只要我们有相应的皮肤文件,都可以加到我们想要的窗口上,实现窗口的美化。

具体源码可以在此免费下载:http://download.csdn.net/source/2862647

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL和Mariadb都启动不了了_linux centos7mariadb安装成功启动不了 解决思路

查看系统日志/var/log/mariadb/mariadb.log190313 14:31:03 InnoDB: Database was not shut down normally!InnoDB: Starting crash recovery.InnoDB: Reading tablespace information from the .ibd files...InnoDB: Restoring possible half-written data pages from the dou…

java 线程转储_获取Java线程转储的常用方法(推荐)

1. 线程转储简介线程转储(Thread Dump)就是JVM中所有线程状态信息的一次快照。线程转储一般使用文本格式, 可以将其保存到文本文件中, 然后人工查看和分析, 或者使用工具/API自动分析。Java中的线程模型, 直接使用了操作系统的线程调度模型, 只进行简单的封装。线程调用栈, 也称…

Oracle conn 协议适配器错误解决

Oracle conn 协议适配器错误 --解决方法C:\Documents and Settings\administrator>set oracle_sidmyoracleC:\Documents and Settings\administrator>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 12月 26 09:47:16 2012Copyright (c) 1982, 2005…

python给定一个整数n、判断n是否为素数_输入一个大于3的整数n,判断它是否为素数...

#include //让n被i除(i的值从2到n-1)int main(){int n,i;printf("please enter a integer number,n?");scanf("%d",&n);for(i2;i<n-1;i)if(n%i0) break;if(i",n);else printf("%d is a prime number.",n);return 0;}**************…

编译Ngnix遇到的问题,查看程序依赖的库文件

要点:ldd 可以读取每个可以运行的程序依赖的 so 文件。 编译的时候提示需要Openssl库. 查看本机,已经安装了openssl 查看编译报错文件,查找Openssl所依赖的库 more objs/autoconf.err 查看openssl所依赖的库文件 ldd /usr/bin/openssl ldd –u /usr/bin/openssl objdump -x ob…

[JavaWeb修行之路 Day1] 安装、配置、部署Tomcat

一、相关软件下载 Tomcat下载地址&#xff1a;http://tomcat.apache.org 。选择Tomcat 6或者Tomcat 7。Eclipse下载地址&#xff1a;http://www.eclipse.org/downloads/ 。选择Eclipse IDE for Java EE Developers进行下载。当然&#xff0c;也可以使用MyEclipse&#xff0c;收…

应用层为何不能设置分辨率

以下内容源于朱有鹏《物联网大讲堂》课程的学习&#xff0c;如有侵权&#xff0c;请告知删除。 5、在应用程序中设置分辨率 &#xff08;1&#xff09;可视分辨率&#xff08;即实际分辨率&#xff09;、虚拟分辨率 &#xff08;2&#xff09;实验及结果 vinfo.xres 1024; …

Vagrant 快速入门

1. Vagrant功能: Vagrant uses Oracle’s VirtualBox to build configurable, lightweight, and portable virtual machines dynamically.. 【Vagrant 使用Oracle VM VirtualBox 动态创建和配置轻量级的&#xff0c;可重现的&#xff0c;便携的虚拟机环境。】 2. Vagrant下载: …

各种分页存储过程 (转)

在项目中&#xff0c;我们经常遇到或用到分页&#xff0c;那么在大数据量&#xff08;百万级以上&#xff09;下&#xff0c;哪种分页算法效率最优呢&#xff1f;我们不妨用事实说话。 测试环境 硬件&#xff1a;CPU 酷睿双核T5750 内存&#xff1a;2G 软件:Windows server 20…

ViewBag 找不到编译动态表达式所需的一种或多种类型,是否缺少引用?

症状&#xff1a; 类似上面的警告提示&#xff0c;运行程序不会有任何错误&#xff0c;但若干地方都提示警告&#xff0c;并且明明dll的引用都是正确的。 解决方案&#xff1a; 删除&#xff1a;C:\Users\{your computer name}\AppData\Local\Temp\Temporary ASP.NET Files 该目…

framebuffer驱动详解4——framebuffer驱动分析2(probe函数讲解)

以下内容源于朱有鹏《物联网大讲堂》课程的学习&#xff0c;如有侵权&#xff0c;请告知删除。 主要在填充fbdev这个结构体。 二、framebuffer驱动分析2 1、probe函数分析 &#xff08;1&#xff09;struct s3c_platform_fb 这个结构体是fb的platform_data结构体&#xff1…

XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析

在实施XenDesktop5项目过程中&#xff0c;发现XenDesktop5版本的数据库镜像事务日志很大&#xff0c;在XenDesktop4和XenApp版本中不存在该问题&#xff1b;于是我根据该现象探究XenDesktop5及以上版本镜像数据库事务日志为何如此之大以及我们今后实施的过程中该如何来维护这么…

input子系统详解1——input子系统简介

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 转载博客&#xff1a;input输入子系统 - 涛少& - 博客园​​​​​​​ 前言 Linux系统支持的输入设备繁多&#xff0c;例如键盘、鼠标、触摸屏、手柄等等&#xff0c;Linux系统是如何管理如此…

【04】Effective Java - 类和接口

为什么80%的码农都做不了架构师&#xff1f;>>> 1、使类和成员的可访问性最小化 封装是软件设计的基本原则之一&#xff0c;它的好处就是解除组成系统的各个模块之间的耦合关系&#xff0c;使得这些模块可以独立地开发、测试、优化、使用、理解 修改&#xff0c;同…

input子系统详解3——input子系统框架核心层分析

以下内容源于朱有鹏嵌入式课程的学习&#xff0c;如有侵权请告知删除。 一、前言 由input子系统简介可知&#xff0c;input子系统分为三层&#xff1a; 1、上层输入事件驱动层 涉及的文件有x210_kernel\drivers\input\evdev.c、mousedev.c 和 joydev.c文件&#xff0c;分别对应…

Gitlab Merge Request Builder Plugin 配置小记

2019独角兽企业重金招聘Python工程师标准>>> 以前在给一些开源项目贡献代码的时候&#xff0c;在github上一提交pull request或者提交的分支代码更新了的时候&#xff0c;jenkins就会自动把代码进行merge并且运行单元测试&#xff0c;当时看了心里就2个字&#xff1…

IOS:屏幕旋转与Transform

IOS&#xff1a;屏幕旋转与Transform iTouch&#xff0c;iPhone&#xff0c;iPad设置都是支持旋转的&#xff0c;如果我们的程序能够根据不同的方向做出不同的布局&#xff0c;体验会更好。 如何设置程序支持旋转呢&#xff0c;通常我们会在程序的info.plist中进行设置Supporte…

input子系统详解4——输入事件驱动层源码分析

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、前言 由input子系统简介可知&#xff0c;input子系统分为三层&#xff1a; ​ 1、上层输入事件驱动层 涉及的文件有x210_kernel\drivers\input\evdev.c、mousedev.c 和 joydev.c文件&#xff0…

java公钥加密私钥解密过程_GPG加密解密过程

GPG加密解密过程一、Linux系统下1.安装yum安装[rootPOC-ORACLE ~]# yum install gnupg下载安装包安装https://www.gnupg.org/download/index.en.html查看gpg帮助[rootPOC-ORACLE ~]# gpg --helpgpg (GnuPG) 2.0.14libgcrypt 1.4.5Copyright (C) 2009 Free Software Foundation,…

十分钟让你明白Objective-C的语法(和Java、C++的对比)

2019独角兽企业重金招聘Python工程师标准>>> 很多想开发iOS&#xff0c;或者正在开发iOS的程序员以前都做过Java或者C&#xff0c;当第一次看到Objective-C的代码时都会头疼&#xff0c;Objective-C的代码在语法上和Java, C有着很大的区别&#xff0c;有的同学会感觉…