如何将我自己的主题应用到我的Windows窗体应用程序中?在C#中执行Windows窗体应用程序时,窗体的视图看起来与Windows的主题相同。如何为不依赖于Windows主题的应用程序提供我自己的主题?覆盖OnPaint方法并绘制任何你想要的东西。?protectedoverridevoidOnPaint(PaintEventArgse){Graphicsg=e.Graphics;SolidBrush画笔=newSolidBrush(Color.Black);浮动百分比=(float)(val-min)/(float)(max-min);矩形rect=this.ClientRectangle;rect.Width=(int)((float)rect.Width*percent);g.FillRectangle(画笔,矩形);刷.处置();g.处置();你不能轻易做到这一点。您可以使用各种替代方案。最简单的方法是创建您自己的SkinXML文件,您可以在其中为应用程序指定您自己的颜色,通过您创建的类读取它并应用新颜色。这将使事情分离并为将来的变化做好准备。但是请注意,您仍然无法更改标题栏的呈现方式和其他系统特定的内容,例如X和最大化按钮的外观。扩展第1点,您可以将窗体创建为无边框并使用自定义绘画(覆盖OnPaint)和图像创建窗口。这很难实现。您可能希望从Form类继承并创建您自己的CustomDrawnForm,您将在整个应用程序中使用它。使用众多控件库之一,例如DevExpress。有些是免费的,有些是昂贵的。您尝试做的事情在Windows.Forms中并不是微不足道的,也许您应该看看WPF和其他替代方案。这取决于您对主题的意图;正如汉斯在评论中所说,通常使用系统的“主题”进行控制和窗口外观被认为是一种资产。然而,对于应用程序中的主题元素——比如标题面板的背景或标题字体颜色等,然后??我会在应用程序中构建一个包含颜色/图像定义的界面(例如ITheme),然后只使用常规数据绑定在设置ITheme时在运行时适当配置。公共接口ITheme{字符串名称{get;}图片标志{get;}StringBrandText1{得到;}StringBrandText2{得到;}图片BrandBannerLogo{get;}颜色BrandPanelText_Left{得到;}颜色BrandPanelText_Centre{得到;}}实际上,你可以走得更远……比如,在我们的应用中,我们还定义了一个IThemeManager:publicinterfaceIThemeManager:INotifyPropertyChanged{eventEventHandlerCurrentThemeChanged;IThemeCurrentTheme{get;放;}DictionaryAvailableThemes{get;我们让ThemeManager被依赖注入,然后我们在控件中绑定它的Current属性:[Dependency]publicIThemeManagerThemeManager{get{return_themeManager;}set{if(_themeManager!=value){_themeManager=value;如果(_themeManager!=null&&!DesignMode){_headerPanelBackgroundImageBinding=themePanel.DataBindings.Add("BackgroundImage",ThemeManager,"CuurentTheme.Logo",false,DataSourceUpdateMode.Never);}else{//重置为默认值this.DataBindings.Remove(_headerPanelBackgroundImageBinding);无效();我知道这个问题已经很老了,但是对于那些仍然对创建真正的“主题化”Windows窗体感兴趣的人(像我一样),如上所述,WPF也非常适合创建主题相当多的预创建主题(Google和stackoverflow永远是你的朋友)可供下载。在Windows窗体项目世界中可能有一点学习曲线,但恕我直言,这是值得的。但是,如果您希望使用普通的Windows窗体应用程序(就像我一样),最简单的建议是创建无边框窗体(将FormBorderStyle设置为None)。这将保留大部分标准Windows容器属性。当然,您需要创建自己的“主题”TitleBar和边框,但这主要是Windows窗体“主题”的用途。您还需要创建自己的调整大小和移动方法,但Google和stackoverflow还是您的好朋友。这个对某些人来说显而易见的简单建议对我来说意义重大。以上是C#学习教程:HowtoapplymyownthemetomyWindowsFormsapplication?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
