DEV皮肤(系统默认和自定义皮肤调用)
基于DEV版本9.3.4.0,查看DEV控件的皮肤。
DEV控件提供了多种多样的皮肤样式,用户可以直接引用这些皮肤样式。也可以通过DEV提供的工具来制作自己喜欢的皮肤样式。
下面的实例程序比官方DEMO的实例程序缺少5中默认的皮肤样式,我自己没有找到,如果有人知道希望可以告诉我,谢谢!其实程序也用不到官方提供的那么多皮肤样式(因为里面有很多相似的或者挺难看的)我们只要根据自己需要添加几种即可,这里是实例程序,因此列出了大部分皮肤样式。
下面介绍一下自己编写的实例程序:
首先,搭建实例环境,如下图所示(本人使用VS2008和DEV9.3.4.0)
建立框架后除了必要的引用外要单独添加下面两个引用,第一个引用是调用DEV的额外皮肤所必须的,第二个引用是调用Office皮肤所必须的引用。
添加引用之后,我们要使用这些引用,首先要在程序开始时候进行注册,这个过程在Program.cs中进行完成。下面是类文件中的代码
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Windows.Forms;
5:
6: namespace DevSkin
7: {
8: static class Program
9: {
10: /// <summary>
11: /// 应用程序的主入口点。
12: /// </summary>
13: [STAThread]
14: static void Main()
15: {
16: DevExpress.UserSkins.BonusSkins.Register();//进行皮肤组件注册
17: DevExpress.UserSkins.OfficeSkins.Register();//进行皮肤组件注册
18: DevExpress.Skins.SkinManager.Default.RegisterAssembly(typeof(DevExpress.UserSkins.SkinProjectTest).Assembly); //Register!
19: Application.EnableVisualStyles();
20: Application.SetCompatibleTextRenderingDefault(false);
21: //Add
22: if (!DevExpress.Skins.SkinManager.AllowFormSkins)
23: {
24: DevExpress.Skins.SkinManager.EnableFormSkins();
25: }
26: Application.Run(new RibbonFrmMain());
27: }
28: }
29: }
下面是主窗体的全部代码,其中对于皮肤调用通过添加注释的方式进行说明。
注意:里面皮肤的中文名称大部分都是我自己起的名称,并没有查阅相关资料,如果觉得不合适可以自己修改哈。
1: using System;
2: using System.Collections;
3: using System.Collections.Generic;
4: using System.ComponentModel;
5: using System.Data;
6: using System.Drawing;
7: using System.Text;
8: using System.Windows.Forms;
9: using DevExpress.XtraBars;
10: using DevExpress.XtraBars.Ribbon;
11: using DevExpress.XtraBars.Ribbon.Gallery;
12: using DevExpress.XtraBars.Ribbon.Internal;
13: using DevExpress.XtraEditors;
14: using DevExpress.Skins;
15: using DevExpress.Utils.Drawing;
16:
17: namespace DevSkin
18: {
19: public partial class RibbonFrmMain : DevExpress.XtraBars.Ribbon.RibbonForm
20: {
21: public RibbonFrmMain()
22: {
23: InitializeComponent();
24: }
25:
26: private void RibbonFormMain_Load(object sender, EventArgs e)
27: {
28: //RibbonGalleryBarItem ribbonGalleryBarItem_Skin = new RibbonGalleryBarItem();
29: ribbonGalleryBarItem_Skin.Gallery.AllowHoverImages = true;
30: ribbonGalleryBarItem_Skin.Gallery.Appearance.ItemCaption.Options.UseFont = true;
31: ribbonGalleryBarItem_Skin.Gallery.Appearance.ItemCaption.Options.UseTextOptions = true;
32: ribbonGalleryBarItem_Skin.Gallery.Appearance.ItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
33: ribbonGalleryBarItem_Skin.Gallery.ColumnCount = 4;
34: ribbonGalleryBarItem_Skin.Gallery.FixedHoverImageSize = false;
35: DevExpress.XtraBars.Ribbon.GalleryItemGroup galleryItemGroup_System = new DevExpress.XtraBars.Ribbon.GalleryItemGroup();
36: DevExpress.XtraBars.Ribbon.GalleryItemGroup galleryItemGroup_Office = new DevExpress.XtraBars.Ribbon.GalleryItemGroup();
37: DevExpress.XtraBars.Ribbon.GalleryItemGroup galleryItemGroup_Bonus = new DevExpress.XtraBars.Ribbon.GalleryItemGroup();
38:
39: galleryItemGroup_System.Caption = "系统皮肤";
40: galleryItemGroup_Office.Caption = "Office皮肤";
41: galleryItemGroup_Bonus.Caption = "附加风格";
42: ribbonGalleryBarItem_Skin.Gallery.Groups.AddRange(new DevExpress.XtraBars.Ribbon.GalleryItemGroup[] { galleryItemGroup_System, galleryItemGroup_Office, galleryItemGroup_Bonus });
43: ribbonGalleryBarItem_Skin.Gallery.ImageSize = new System.Drawing.Size(32, 17);
44: ribbonGalleryBarItem_Skin.Gallery.ItemImageLocation = DevExpress.Utils.Locations.Top;
45: ribbonGalleryBarItem_Skin.Gallery.RowCount = 4;
46: ribbonGalleryBarItem_Skin.Gallery.InitDropDownGallery += new DevExpress.XtraBars.Ribbon.InplaceGalleryEventHandler(rgbiSkins_Gallery_InitDropDownGallery);
47: ribbonGalleryBarItem_Skin.Gallery.ItemClick += new DevExpress.XtraBars.Ribbon.GalleryItemClickEventHandler(rgbiSkins_Gallery_ItemClick);
48: ribbonGalleryBarItem_Skin.Name = "ribbonGalleryBarItem_Skin";
49: //ribbonPageGroup_Skin.ItemLinks.Add(ribbonGalleryBarItem_Skin);
50: InitSkinGallery(ribbonGalleryBarItem_Skin);
51: }
52:
53: #region 皮肤
54:
55: private void rgbiSkins_Gallery_ItemClick(object sender, DevExpress.XtraBars.Ribbon.GalleryItemClickEventArgs e)
56: {
57: DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle(e.Item.Tag.ToString());
58: }
59: private void rgbiSkins_Gallery_InitDropDownGallery(object sender, DevExpress.XtraBars.Ribbon.InplaceGalleryEventArgs e)
60: {
61: e.PopupGallery.CreateFrom((sender as DevExpress.XtraBars.Ribbon.Gallery.InRibbonGallery).OwnerItem.Gallery);
62: e.PopupGallery.AllowFilter = false;
63: e.PopupGallery.ShowItemText = true;
64: e.PopupGallery.ShowGroupCaption = true;
65: e.PopupGallery.AllowHoverImages = false;
66: foreach (GalleryItemGroup galleryGroup in e.PopupGallery.Groups)
67: foreach (GalleryItem item in galleryGroup.Items)
68: item.Image = item.HoverImage;
69: e.PopupGallery.ColumnCount = 2;
70: e.PopupGallery.ImageSize = new Size(70, 36);
71: }
72: private void InitSkinGallery(RibbonGalleryBarItem rgbiSkins)
73: {
74: Hashtable skinName = new Hashtable();
75: //系统风格 系统默认
76: skinName.Add("SystemDev Caramel", "焦糖");
77: skinName.Add("SystemDev Money Twins", "潮汐");
78: skinName.Add("SystemDev Lilian", "莉莲");
79: skinName.Add("SystemDev The Asphalt World", "柏油");
80: skinName.Add("SystemDev iMaginary", "虚幻");
81: skinName.Add("SystemDev Black", "夜色");
82: skinName.Add("SystemDev Blue", "蓝色");
83: //Office风格 添加OfficeSkins这个dll才可用 要先进行注册才能使用
84: skinName.Add("Office 2007 Blue", "Office 2007 蓝色");
85: skinName.Add("Office 2007 Black", "Office 2007 黑色");
86: skinName.Add("Office 2007 Silver", "Office 2007 银色");
87: skinName.Add("Office 2007 Green", "Office 2007 绿色");
88: skinName.Add("Office 2007 Pink", "Office 2007 粉色");
89: //额外风格 添加BonusSkin这个dll才可用 要先进行注册才能使用
90: skinName.Add("Bonus Coffee", "咖啡色调");
91: skinName.Add("Bonus Liquid Sky", "碧海蓝天");
92: skinName.Add("Bonus London Liquid Sky", "伦敦夜空");
93: skinName.Add("Bonus Glass Oceans", "玻璃海洋");
94: skinName.Add("Bonus Stardust", "星尘");
95: skinName.Add("Bonus Xmas 2008 Blue", "蓝色圣诞2008");
96: skinName.Add("Bonus Valentine", "粉色情人节");
97: skinName.Add("Bonus McSkin", "玻璃黑");
98: skinName.Add("Bonus Springtime", "春暖花开");
99: skinName.Add("Bonus Seven", "淡蓝色调");
100: skinName.Add("Bonus Darkroom", "黑色空间");
101: skinName.Add("Bonus Foggy", "朦胧记忆");
102: skinName.Add("Bonus Sharp Plus", "深黑色调");
103: skinName.Add("Bonus Sharp", "浓色灰黑");
104: skinName.Add("Bonus Seven Classic", "淡灰经典");
105: skinName.Add("Bonus High Contrast", "纯黑夜色");
106: skinName.Add("Bonus Dark Side", "浓黑一方");
107: skinName.Add("Bonus Pumpkin", "万圣节南瓜");
108: skinName.Add("Bonus Summer 2008", "阳光海滩");
109:
110: //自定义皮肤,通过SkinEdit制作
111: skinName.Add("BonusMySkin_Lilian_Test", "MySkin");
112: //皮肤与官方实例相比缺少5种,
113: //分别为Flat,Office 2003,Style3D,UltraFlat,Window Theme
114: SimpleButton imageButton = new SimpleButton();
115: foreach (SkinContainer cnt in SkinManager.Default.Skins)
116: {
117: string nameTemp = null;
118: foreach (DictionaryEntry item in skinName)
119: {
120: string halfName = string.Empty;
121: if (item.Key.ToString().Contains("SystemDev"))
122: {
123: halfName = item.Key.ToString().Replace("SystemDev", "");
124: }
125: else if (item.Key.ToString().Contains("Bonus"))
126: {
127: halfName = item.Key.ToString().Replace("Bonus", "");
128: }
129: else if (item.Key.ToString().Contains("Office"))
130: {
131: halfName = item.Key.ToString();
132: }
133: else
134: {
135: halfName = null;
136: }
137: if (halfName.Trim() == cnt.SkinName.Trim())
138: {
139: nameTemp = item.Key.ToString();
140: break;
141: }
142: }
143: if (string.IsNullOrEmpty(nameTemp))
144: {
145: continue;
146: }
147: imageButton.LookAndFeel.SetSkinStyle(cnt.SkinName);
148: GalleryItem gItem = new GalleryItem();
149: int groupIndex = -1;
150: if (nameTemp.IndexOf("SystemDev") > -1)
151: groupIndex = 0;
152: if (nameTemp.IndexOf("Office") > -1)
153: groupIndex = 1;
154: if (nameTemp.IndexOf("Bonus") > -1)
155: groupIndex = 2;
156: rgbiSkins.Gallery.Groups[groupIndex].Items.Add(gItem);
157: gItem.Image = GetSkinImage(imageButton, 32, 17, 2);
158: gItem.HoverImage = GetSkinImage(imageButton, 70, 36, 5);
159: gItem.Tag = cnt.SkinName;
160: gItem.Caption = skinName[nameTemp].ToString();
161: gItem.Hint = skinName[nameTemp].ToString();
162: rgbiSkins.Gallery.Groups[1].Visible = false;
163: }
164: }
165: private Bitmap GetSkinImage(SimpleButton button, int width, int height, int indent)
166: {
167: Bitmap image = new Bitmap(width, height);
168: using (Graphics g = Graphics.FromImage(image))
169: {
170: StyleObjectInfoArgs info = new StyleObjectInfoArgs(new GraphicsCache(g));
171: info.Bounds = new Rectangle(0, 0, width, height);
172: button.LookAndFeel.Painter.GroupPanel.DrawObject(info);
173: button.LookAndFeel.Painter.Border.DrawObject(info);
174: info.Bounds = new Rectangle(indent, indent, width - indent * 2, height - indent * 2);
175: button.LookAndFeel.Painter.Button.DrawObject(info);
176: }
177: return image;
178: }
179:
180: #endregion
181:
182: private void btn_Test_ItemClick(object sender, ItemClickEventArgs e)
183: {
184: DevFrmTest frmTest = new DevFrmTest();
185: frmTest.ShowDialog();
186: }
187: }
188: }
其中大部分均为DEV控件提供的皮肤,skinName.Add("BonusMySkin_Lilian_Test", "MySkin")这一个皮肤是我自己通过SkinEditor制作的皮肤,通过这个工具进行皮肤制作比较繁琐,希望大家有什么更好的方式可以告诉我。
下面重点说一下自定义皮肤的制作:
SkinEditor工具在DEV的默认安装目录下面,可以在开始菜单中看到。
打开SkinEditor工具,进入主界面。依次进入File->New创建新的Project,在对话框汇总输入Project的名称和皮肤名称,设置存储路径以及选择模板皮肤(新皮肤基于选择的模板皮肤进行制作),点击OK按钮,进入新创建的皮肤的制作。
注意:SkinEditor的详细使用方法可以查看SkinEditor的英文帮助文档或者官方使用说明,下面只是进行简单的介绍。
制作的详细方法大家进行慢慢摸索,我也只是刚刚接触。编辑完成保存新制作的皮肤即可。
我可以使用同样的方法为同一个Project添加多个自定义皮肤。可以通过ProjectManager工具管理Project中的皮肤,可以对其进行添加删除等。
完成之后,我们通过选工具可以把该Project文件编译成DLL。
编译成功后弹出下面提示框。
我们将生成的DLL拷贝到我们的程序中,然后添加引用(例如前面引用截图中的SkinProject_Test引用就是自己制作的皮肤Project生成的),其使用方法之后基本相同,详细参考前面程序。
下面查看一下皮肤效果:
默认风格
系统提供风格之一(这里没法每一个风格都进行截图,截取一个典型的)
自己制作的风格(只是修改少量,如按钮进行测试)
DEV皮肤(系统默认和自定义皮肤调用)相关推荐
- 有自定义皮肤的计算机,QQ音乐怎么自定义皮肤丨QQ音乐自定义皮肤图解
在使用QQ音乐的时候,突然觉得自己的播放器主页面不是那么精彩怎么办,这时候你可以通过皮肤的更换来解决,那么QQ音乐怎么自定义皮肤,为此电脑系统城为你带来一个详细的QQ音乐自定义皮肤方法介绍,让你可以轻 ...
- 1.9离线服务器不显示皮肤,迅雷9如何自定义皮肤?迅雷9更换皮肤的方法
iphone可以下载迅雷吗? 你好!之前可以下载,现在不能了.原因是针对近期有说法称"'XcodeGhost'木32313133353236313431303231363533e58685e ...
- 网易我的世界导入皮肤服务器显示吗,我的世界导出皮肤别人,导入本地皮肤别人看得见吗...
如果你是盗版,去安装在客户端,别人也要下载,如果之前遇到我的世界导入皮肤别人可以看到吗问题,可能是皮肤不够稳定,你上传的皮肤不能及时同步,请重开游戏或重新登录试试. 导入皮肤别人可以看到吗 让别人看见 ...
- android 自定义皮肤,仿墨迹天气在Android App中实现自定义zip皮肤更换
在这里谈一下墨迹天气的换肤实现方式,不过首先声明我只是通过反编译以及参考了一些网上其他资料的方式推测出的换肤原理, 在这里只供参考. 若大家有更好的方式, 欢迎交流. 墨迹天气下载的皮肤就是一个zip ...
- 如何制作.Text Blog自定义皮肤
如何制作.Text Blog自定义皮肤 昨天在CSDN上发表了一片关于制作.Text Blog自定义皮肤的文章,对于刚接触.TextBlog的爱好者可以参阅 察看.(老手想必都会了,呵呵,小生在此耍耍 ...
- android+自定义皮肤,android studio自定义更换皮肤详细图文教程
android studio这款app程序开发软件内也内置了多种皮肤主题,程序开发人员如果感觉一种皮肤太过单调乏味,可以选择使用软件内的其他皮肤风格,软件默认的皮肤是IntelliJ,还有黑色的Dra ...
- android 自定义皮肤,Android Studio 自定义皮肤主题和背景
新的一年,新的开始,在这里先祝福大家在新的一年收获多多,多升职,多加薪,代码没BUG. 第一 Android Studio自定义皮肤主题-ColorThemes 寒假期间有人问我, "你代码 ...
- android自带中文字体,Android更换系统默认显示的字体使用自定义字体
序言 上一篇Android 自定义字体,更换系统默认显示的字体使用自定义字体有讲到怎样指定控件显示指定字体,怎样整个软件显示指定字体,怎样WebView加载指定字体,但是还留下一个怎样修改整个系统的默 ...
- flex4自定义皮肤
(注:现在flex4方面的讲解比较少,在网上发现了这么一篇样式的文章还不错,所以贴过来查时方便,也为大家提供一下浏览,呵呵.) 在Flex4新增加了一个包:spark.skins,这个包里面只有一个类 ...
- android studio 皮肤,Android Studio 自定义皮肤主题和背景
Android Studio自定义皮肤主题-ColorThemes 最近有人问我, "你代码这是用的什么字体? 看着好舒服", 其实这是用了自定义皮肤主题包,主题包下载网站 htt ...
最新文章
- Blender制作3D模型导出到UE5完整学习教程
- lodash源码分析之获取数据类型
- 树莓派应用实例6:测量土壤湿度(改进WEB发布)
- 实现Nginx https
- IO流,字节流文件拷贝示例 [FileInputStream FileOutputStream]
- JavaScript中对象的属性:如何遍历属性
- Scala简介、安装、函数、面向对象
- opencv 4.5.2 使用比色卡进行颜色校正
- excel练习1——数据透视表基础介绍
- 期货发展的几个重要时间点和事件
- java添加java_home环境变量_如何正确设置jdk环境变量JAVA_HOME?
- python最好视频教程_国外最顶级的Python视频教程,赶紧收藏!(带中文字幕)
- win32gui恢复小化窗口,前置窗口
- 特征工程(Feature Engineering)
- 树存储结构的几种表示方法
- Ant是什么 使用 介绍
- 做网赚如何引流,这些方法你都试了么
- HCIE考试考哪些?
- VR全景展示汉服文化,3D环物立体式欣赏做工
- SqlServer各版本下载(2016-2019)