高级渲染类






4.65/5 (20投票s)
一个功能齐全、可供新手或高级用户自定义的渲染类。
引言
许多 C# 或 VB.NET 开发领域的初学者有时希望能够为他们的应用程序应用主题或样式。这个渲染类允许您轻松自定义 C#/VB.NET 应用程序的外观。
背景
此灵感来源于 Office2007Renderer,它使您能够为应用程序应用多种 Office 2007 样式。在开始使用 Office2007Renderer 后,我发现其中一些绘图功能导致我的应用程序严重卡顿。因此,我决定亲自开发一个我自己的新 Office2007Renderer。从那时起,它就演变成了一个完全可编辑的类。
使用代码
EasyRender
类易于使用且易于自定义。与其他渲染类不同,我将渲染器的每个部分都划分到子类中,您可以进一步编辑这些子类。
public Main()
{
InitializeComponent();
EasyRender Render = new EasyRender();
ToolStripManager.Renderer = Render;
}
基本上,这会初始化渲染类并将其应用于 ToolStripManager
,默认情况下,Office2007 是默认的主题样式。但可以通过 Render
变量进行更改。
public Main()
{
InitializeComponent();
EasyRender Render = new EasyRender();
Render.Toolstrip.Curve = 2;
Render.Toolstrip.BackgroundTop = Color.FromArgb(255, 255, 255);
Render.Toolstrip.BackgroundBottom = Color.FromArgb(230, 230, 230);
ToolStripManager.Renderer = Render;
}
此修改将调整 Toolstrip
控件的背景渐变颜色。Curve
属性表示 Toolstrip
边框的曲线。建议 Curve
属性不要输入超过 4 的值,否则会变形。
您可能想改变渐变显示的方式。几乎每个类都有两个关键属性,名为 BackgroundBlend
和 BackgroundAngle
。
BackgroundAngle
允许您更改背景渐变绘制的方向。BackgroundBlend
是一个System.Drawing.Drawing2D.Blend
属性。如果将此值设置为null
,则不会发生任何混合。否则,您可以将其设置为Blend
值,它将使用指定的混合绘制背景。请参阅下面的示例以获得更好的理解。
Blend backBlend = new Blend();
backBlend.Positions = new float[] { 0, 0.1, 0.4, 0.8, 1 };
backBlend.Factors = new float[] { 0, 0.3, 0.6, 0.7, 0.2 };
Render.Toolstrip.BackgroundBlend = backBlend;
对于不熟悉 Blend
类的用户来说,它就像一个高级渐变管理器。Positions
是一个 float
值数组。其中的每个值代表一个位置(0 到 1 表示总长度的 0% 到 100%)。
Factors
属性指定用于绘制背景的渐变画笔的 Color2
颜色的强度。因此,因子“0”表示颜色完全是 Color1
(或 BackgroundTop
),而“1”表示颜色完全是 Color2
(或 BackgroundBottom
)。确实非常方便。
其余部分很容易理解。SmoothText
简单地对任何具有 ManagerRenderMode
(您必须将其应用于 StatusBar
和 ContentPanel
控件)的控件上的所有文本应用平滑效果。AlterColor
简单地表示受渲染器影响的所有文本应使用设定的颜色,该颜色可以通过 OverrideColor
属性定义。
关注点
您可能需要记住的一点是,我大约在两个月前对这个项目失去了兴趣,所以从那时起我就没有再碰过它。当我再次检查代码时,我发现几乎所有东西都还完好无损。但是,某些功能可能尚未完全实现,或者可能存在转换或类型转换错误。如果您发现任何问题,请告诉我,我会立即修复。
所以,如果您愿意,可以尝试一下。等我有时间的时候,我会添加一个导出功能,并且还会添加一个“保存为主题文件”功能,这样您就可以将它们导出到文件并共享。