65.9K
CodeProject 正在变化。 阅读更多。
Home

高级渲染类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.65/5 (20投票s)

2008年7月15日

CPOL

3分钟阅读

viewsIcon

80971

downloadIcon

3307

一个功能齐全、可供新手或高级用户自定义的渲染类。

EasyRender

引言

许多 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 的值,否则会变形。

您可能想改变渐变显示的方式。几乎每个类都有两个关键属性,名为 BackgroundBlendBackgroundAngle

  • 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(您必须将其应用于 StatusBarContentPanel 控件)的控件上的所有文本应用平滑效果。AlterColor 简单地表示受渲染器影响的所有文本应使用设定的颜色,该颜色可以通过 OverrideColor 属性定义。

关注点

您可能需要记住的一点是,我大约在两个月前对这个项目失去了兴趣,所以从那时起我就没有再碰过它。当我再次检查代码时,我发现几乎所有东西都还完好无损。但是,某些功能可能尚未完全实现,或者可能存在转换或类型转换错误。如果您发现任何问题,请告诉我,我会立即修复。

所以,如果您愿意,可以尝试一下。等我有时间的时候,我会添加一个导出功能,并且还会添加一个“保存为主题文件”功能,这样您就可以将它们导出到文件并共享。

© . All rights reserved.