移除 DevExpress 的 XtraForm 标题文字阴影
问题
在使用 DevExpress 开发 WinForm 程序时,我是使用的默认皮肤进行开发。但客户要求标题栏背景色改为蓝色,标题文字颜色改为白色。
改颜色比较简单,参考了 DevExpress Support 的说明,通过获取皮肤更改 BackColor 和 ForeColor 就可以实现。不过更改之后,发现在低分屏下面,标题文字出现模糊的情况。


原因
初步猜想应该是文字阴影的问题,但搜索了大部分资料没有找到解决方案,最后在 DevExpress Support 的这篇文章看到了自定义 FormPainter 。起初我认为是重载 DrawText() 解决,不过没有找到相关的参数,之后发现它有一个 DrawTextShadow() 方法,应该就是它了。
解决
解决方法很简单,就是重写 DrawTextShadow() 方法,将其作为一个空方法就行了,不做任何阴影处理。
public class ReplaceFontFormPainter : FormPainter
{
	public ReplaceFontFormPainter(Control owner, ISkinProvider provider) : base(owner, provider)
	{
	}
	// 不再绘制标题文字阴影。
	protected override void DrawTextShadow(GraphicsCache cache, AppearanceObject appearance, Rectangle bounds)
	{
	}
}
来到你需要更改的窗体,重载窗体的 CreateFormBorderPainter() 方法,使用你自己创建的 FormPainter 。
public partial class MainForm : XtraForm
{
	protected override FormPainter CreateFormBorderPainter() => new ReplaceFontFormPainter(this, LookAndFeel);
}
最后的效果:

移除 DevExpress 的 XtraForm 标题文字阴影的更多相关文章
- CSS3+HTML5实现块阴影与文字阴影
		
CSS 3 + HTML 5 是未来的 Web,它们都还没有正式到来,虽然不少浏览器已经开始对它们提供部分支持.本教程分5节介绍了 5 个 CSS3 技巧,可以帮你实现未来的 Web,不过,这些技术不 ...
 - IE下实现类似CSS3 text-shadow文字阴影的几种方法
		
IE下实现类似CSS3 text-shadow文字阴影的几种方法 一.开始的擦边话 为了测试IE9浏览器,下午晃晃荡荡把系统换成window7的了.果然,正如网上所传言的一样,IE9浏览器确实不支持C ...
 - 设置XtraForm标题居中
		
public class CustomFormPainter : FormPainter { public CustomFormPainter(Control owner, DevExpress.Sk ...
 - jQuery hover事件鼠标滑过图片半透明标题文字滑动显示隐藏
		
1.效果及功能说明 hover事件制作产品图片鼠标滑过图片半透明,标题文字从左到右滑动动画移动显示隐藏 2.实现原理 首先把效果都隐藏,然后定义一个伪类来触发所有的效果,接下来当触发伪类后会有一个遍历 ...
 - 酷炫,用Html5/CSS实现文字阴影
		
前两天有一个学html5前端小美女问我一个有关文字阴影的效果怎么去实现.她和我说文字阴影嘛,她也知道text-shadow,.但是却做不出想要的样子,其实css3的新功能是很强大的,不要把你的思想太过 ...
 - word标题文字居中浅谈
		
在Word排版时,要将标题在文档居中,是有区别的,如下图 在回车键后,在选择标题居中,我们常认为标题就是在整个文档居中了,但是实际上只是在回车键到右边区域居中而已,如上图红色方块居中. 只有在标题文字 ...
 - css学习_css文字阴影、盒子阴影
		
文字阴影和盒子阴影的用法: 多阴影
 - 从零开始学 Web 之 CSS3(二)颜色模式,文字阴影,盒模型,边框圆角,边框阴影
		
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
 - Button 在布局文件中定义监听器,文字阴影,自定义图片,代码绘制样式,添加音效的方法
		
1.Button自己在xml文件中绑定监听器 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro ...
 
随机推荐
- 深度理解return具体用法
			
''' 下面我们来更加深度的理解return具体用法!!! return 默认返回None return 可以返回任意数据类型的数据 return 返回多个值的时候,会以元祖的形式把多个值包在一起 ' ...
 - 类型,值,变量知识总结(js)
			
文章目录: 一. 全局变量和局部变量分析 二. 从两个角度去理解变量作用域 三. 关于浮点数值计算产生舍入误差的问题分析 四. 理解js预解析 一. 全局变量和局部变量分析 在函数外部由var定义的变 ...
 - Java使用iBatis批量插入数据到Oracle数据库
			
Java使用iBatis批量插入数据到Oracle数据库 因为我们的数据跨库(mysql,oracle),单独取数据的话需要遍历好多遍,所以就想着先从mysql数据库中取出来的数据然后在oracle数 ...
 - c++-多态和vptr指针
			
多态的原理 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Parent { ...
 - MongoDB(五):更新文档、删除文档
			
1. 更新文档 MongoDB的uptade()和save()方法用于将集合中的文档更新.update()方法更新现有文档中的值,而save()方法是传递文档数据替换现有文档.从3.2版本开始,Mon ...
 - skyline加载arcgis发布的wms服务
			
function AddWMSLayer(LayerName) {var _WMSUrl =“http://10.0.4.141:6080/arcgis/services/poss1/MapServe ...
 - Java工作流引擎表单引擎之JS表单字段输入脚本验证
			
关键字: 表单设计器, 字段验证. workflow,ccform, ccBPM. 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流bpm工作流系统 java工作流 ...
 - Visual Studio中相对路径中的宏定义
			
$(RemoteMachine) 设置为“调试”属性页上“远程计算机”属性的值.有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置. $(References) 以分号分隔的引用列表被添加到 ...
 - 腾讯云推出一站式 DevOps 解决方案 —— CODING DevOps
			
在产业互联网的大背景下,如何将人工智能.大数据等前沿技术与实体产业相结合,推动传统企业转型升级,已经成为每一个企业不得不思考的问题.落后的软件研发能力已经拖慢了中国大量企业的数字化转型进程. 为了满足 ...
 - PKUWC 2020 游记
			
由于 CSP 的暴力分太高,我来了这里. 我将告诉大家,我在暴力分不高时是个怎样的 sb 选手. Day -17 又停课啦. 旁边坐着 pb,每天刷题特别猛,然后就凸显了我有多颓. 怎么想打开个猫国都 ...