贝博恩创新科技网

flatstylebar教程pro

FlatStyleBar Pro 教程:从入门到精通,打造专业级扁平化界面

FlatStyleBar(通常指代的是在 Delphi/C++ Builder 中使用的 TFlatStyle 系列控件,如 TFlatToolBar, TFlatStatusBar 等)是一个经典且功能强大的界面美化库,它通过一套统一的样式引擎,让开发者能够轻松创建出符合现代设计趋势的扁平化界面。

flatstylebar教程pro-图1
(图片来源网络,侵删)

本教程将分为四个部分:

  1. 入门篇:核心概念与环境搭建
  2. 进阶篇:核心控件深度剖析
  3. 精通篇:高级技巧与主题定制
  4. 实战篇:一个完整界面的构建流程

第一部分:入门篇 - 核心概念与环境搭建

1 什么是扁平化设计?

扁平化设计是一种去除多余装饰(如渐变、阴影、纹理)的设计风格,它强调简洁、清晰和直接的沟通,核心元素包括:

  • 二维平面感:界面元素看起来是平的,没有立体感。
  • 大胆的色彩:使用鲜明、高饱和度的色彩来区分功能区域。
  • 清晰的排版:注重字体、字号和间距,保证信息层级分明。
  • 简洁的图标:使用线条简洁、意义明确的图标。

FlatStyleBar 就是实现这种设计风格的有力工具。

2 环境准备

  1. 安装库:你需要获取 FlatStyleBar 的库文件,通常它是一个 .pas.dcr 文件的集合,将它们复制到你的 Delphi/C++ Builder 的 SourceLib 目录下。
  2. 安装控件面板:在 Delphi 的 Component -> Install Packages... 中,添加 FlatStyleBar 的 .dpk 文件(如果提供)或手动编译安装。
  3. 放置控件:安装成功后,在 Standard 或新增的 FlatStyle 面板中,你就能看到 TFlatToolBar, TFlatStatusBar, TFlatGauge 等控件了。

3 核心属性:FlatStyle

这是整个库的灵魂,几乎所有 TFlat* 控件都有一个关键的 FlatStyle 属性,它决定了控件的外观和行为。

flatstylebar教程pro-图2
(图片来源网络,侵删)
  • fsStandard:经典风格,有轻微的边框和凹凸感,点击时有动态效果,这是最常用的风格。
  • fsBump:凸起风格,控件看起来像是从背景中“凸”出来的。
  • fsFlat:完全扁平,无边框,无凹凸感,完全融入背景,适合需要极简设计的场景。
  • fsExplorer:类似 Windows 资源管理器工具栏的风格。
  • fsOffice2003:模仿 Office 2003 的风格。

Pro Tip:在一个应用程序中,尽量为所有相关控件设置统一的 FlatStyle,以保持视觉一致性。


第二部分:进阶篇 - 核心控件深度剖析

我们将逐一解析最常用的几个控件,并揭示其 Pro 级用法。

1 TFlatToolBar - 工具栏之王

TFlatToolBar 是替代标准 TToolBar 的首选。

基础设置:

flatstylebar教程pro-图3
(图片来源网络,侵删)
  1. FlatStyle:统一设置为 fsStandardfsBump
  2. EdgeBorders:决定工具栏的哪些边显示边框,通常设置为 [ebTop, ebBottom][ebLeft, ebRight],让它看起来像一个独立的区域。
  3. Glyph:为工具栏按钮设置图标,这是最重要的部分。

Pro 级技巧:

  • 自定义按钮绘制TFlatToolBar 的按钮 (TFlatToolButton) 默认支持 CaptionGlyph,但如果你想实现更复杂的效果(如文字在图标下方、组合图标等),可以重写 OnDrawButton 事件。

    procedure TMyForm.FlatToolBar1DrawButton(Sender: TObject;
      AButton: TFlatToolButton; const ARect: TRect; State: TButtonState;
      var DefaultDraw: Boolean);
    begin
      DefaultDraw := False; // 告诉控件不要自己绘制
      // 绘制背景(根据状态高亮)
      if State = bsHot then
        Canvas.Brush.Color := $F0F0F0
      else
        Canvas.Brush.Color := FlatToolBar1.Color;
      Canvas.FillRect(ARect);
      // 绘制图标
      if AButton.Glyph <> nil then
        Canvas.Draw(ARect.Left + 5, ARect.Top + 5, AButton.Glyph);
      // 绘制文字
      Canvas.Font.Color := clGray30;
      Canvas.TextOut(ARect.Left + 5, ARect.Top + AButton.Glyph.Height + 10, AButton.Caption);
    end;
  • 分隔符的美化:默认的分隔符是一条简单的竖线,你可以通过设置 TFlatToolButtonStyletbsSeparator,然后调整其宽度来创建更优雅的间距,或者用自定义的图片作为分隔符。

2 TFlatStatusBar - 状态栏专家

TFlatStatusBar 用于显示程序状态信息。

基础设置:

  1. FlatStyle:与工具栏保持一致。
  2. Panels:通过 Panels 编辑器添加多个状态面板。
  3. AutoHint:设置为 True,当鼠标悬停在面板上时,可以显示 Hint 信息。

Pro 级技巧:

  • 动态信息显示:在代码中动态更新面板内容。
    // 在操作完成后更新状态
    FlatStatusBar1.Panels[0].Text := '操作完成';
    FlatStatusBar1.Panels[1].Text = Format('共处理 %d 条记录', [RecordCount]);
  • 进度条集成TFlatStatusBar 可以直接嵌入 TFlatGauge 进度条,只需在 Panels 中添加一个面板,并将其 Style 设置为 psOwnerDraw,然后在 OnDrawPanel 事件中手动绘制进度条。

3 TFlatGauge - 进度条美化

TFlatGauge 是一个外观现代的进度条。

Pro 级技巧:

  • 颜色自定义:通过 BarColor 属性可以改变进度条的颜色,使其与应用主题更搭。
  • 文本显示ShowText 属性控制是否显示百分比文本。
  • 平滑度Position 属性可以设置为小数,实现平滑的动画效果。

4 TFlatComboBoxTFlatEdit - 输入控件

这些控件替代了标准的 TComboBoxTEdit,提供了统一的扁平化外观。

Pro 级技巧:

  • 边框颜色TFlatEdit 有一个 BorderColor 属性,你可以在它获得或失去焦点时动态改变颜色,提供即时的视觉反馈。

    procedure TMyForm.FlatEdit1Enter(Sender: TObject);
    begin
      (Sender as TFlatEdit).BorderColor := clBlue;
    end;
    procedure TMyForm.FlatEdit1Exit(Sender: TObject);
    begin
      (Sender as TFlatEdit).BorderColor := clGray;
    end;

第三部分:精通篇 - 高级技巧与主题定制

1 统一的颜色管理

专业应用的界面颜色是协调统一的,不要在每个控件上硬编码颜色。

方案:使用常量或 TColor 变量

unit uColors;
interface
// 主色调
const
  cMainColor = $0078D7; // 微软蓝
  cMainLightColor = $106EBE; // 主色调的深色版本
  cMainLighterColor = $E1F5FE; // 主色调的浅色版本
  cBackgroundColor = $F5F5F5; // 背景色
  cTextColor = $212121; // 主要文字颜色
  cTextColorHint = $757575; // 次要文字颜色
implementation
end.

在你的窗体中引用这些常量:

FlatToolBar1.Color := cMainColor;
FlatStatusBar1.Color := cMainColor;
FlatEdit1.Color := cBackgroundColor;
FlatEdit1.Font.Color := cTextColor;

2 主题切换(高级)

如果需要实现深色模式或多主题切换,可以这样做:

  1. 定义主题记录

    TTheme = record
      MainColor, BGColor, TextColor: TColor;
    end;
    var
      LightTheme, DarkTheme: TTheme;
  2. 初始化主题

    LightTheme.MainColor := $0078D7;
    LightTheme.BGColor := $F5F5F5;
    LightTheme.TextColor := $212121;
    DarkTheme.MainColor := $004C7C;
    DarkTheme.BGColor := $121212;
    DarkTheme.TextColor := $E0E0E0;
  3. 创建应用主题的函数

    procedure ApplyTheme(const ATheme: TTheme);
    begin
      FlatToolBar1.Color := ATheme.MainColor;
      FlatStatusBar1.Color := ATheme.MainColor;
      Self.Color := ATheme.BGColor;
      // ... 应用到所有控件
    end;
  4. 在需要时调用

    // 在菜单点击事件中
    procedure TMyForm.miDarkModeClick(Sender: TObject);
    begin
      ApplyTheme(DarkTheme);
    end;

3 图标的选择

扁平化界面的成功与否,一半取决于图标。

  • 风格统一:选择同一套图标库(如 Material Icons, FontAwesome, Fluent UI Icons)。
  • 线条简洁:选择线性图标,避免使用填充过度的复杂图标。
  • 尺寸一致:确保所有图标的视觉大小和线条粗细基本一致。

第四部分:实战篇 - 一个完整界面的构建流程

假设我们要构建一个简单的文本编辑器界面。

  1. 规划布局

    • 顶部:TFlatToolBar (新建、打开、保存、分隔符、剪切、复制、粘贴)
    • 中间:TMemo
    • 底部:TFlatStatusBar (显示行号、列号和当前状态)
  2. 设置窗体

    • Form1.BorderStyle := bsSizeable;
    • Form1.Position := poScreenCenter;
  3. 放置和配置 TFlatToolBar

    • FlatToolBar1.FlatStyle := fsBump;
    • FlatToolBar1.EdgeBorders := [ebTop, ebBottom];
    • FlatToolBar1.Images := ImageList1; (确保 ImageList1 中有对应的图标)
    • FlatToolBar1 中添加 TFlatToolButton,设置 StylettsButtonImageIndex 为对应的图标索引,Caption 为功能名称。
  4. 放置和配置 TMemo

    • Memo1.Align := alClient; // 让 Memo 填充剩余空间
    • Memo1.ScrollBars := ssBoth;
    • 为了美观,可以给 Memo 加一个 TBevelTShape 作为边框,或者使用一个 TPanel 作为容器,设置其 BevelOuter := bvNoneColor,然后将 Memo1 放在里面并设置 BevelWidth := 1
  5. 放置和配置 TFlatStatusBar

    • FlatStatusBar1.Align := alBottom;
    • FlatStatusBar1.FlatStyle := fsBump; // 与工具栏一致
    • 打开 Panels 编辑器,添加三个面板。
      • Panels[0].Text := '就绪';
      • Panels[1].Width := 150; // 用于显示行号和列号
      • Panels[2].Width := 100; // 用于显示其他状态
  6. 编写事件处理代码

    • 工具栏按钮

      procedure TMyForm.FlatToolBar1Click(Sender: TObject; Button: TFlatToolButton);
      begin
        case Button.Tag of
          0: NewFile; // Tag=0 对应新建
          1: OpenFile; // Tag=1 对应打开
          2: SaveFile; // Tag=2 对应保存
          // ... 其他按钮
        end;
      end;
    • Memo 事件:实时更新状态栏。

      procedure TMyForm.Memo1Change(Sender: TObject);
      begin
        FlatStatusBar1.Panels[0].Text := '已修改';
      end;
      procedure TMyForm.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
      var
        Line, Col: Integer;
      begin
        Line := Memo1.CaretPos.Y + 1;
        Col := Memo1.CaretPos.X + 1;
        FlatStatusBar1.Panels[1].Text := Format('行: %d, 列: %d', [Line, Col]);
      end;
  7. 最终调整

    • 运行程序,检查整体效果。
    • 微调 FlatToolBar1ButtonWidthButtonHeight,使其与图标完美匹配。
    • 检查所有控件的 FontColor 是否与你的颜色方案一致。

Pro 级设计心法

  1. 一致性是王道:颜色、字体、圆角、间距、风格,必须在整个应用中保持一致。
  2. 少即是多:扁平化设计的核心是去除冗余,只保留对用户完成任务所必需的元素。
  3. 视觉反馈:无论是按钮点击、输入框聚焦还是操作进行中,都要给予用户清晰的视觉反馈。
  4. 拥抱留白:合理的留白能让界面呼吸,提升内容的可读性和高级感。
  5. 从模仿到创造:多观察优秀的设计作品(如微软 Fluent Design、Google Material Design),理解其背后的设计原则,然后应用到自己的项目中。

通过掌握以上技巧和心法,你将不再仅仅是一个“会用” FlatStyleBar 的开发者,而是一个能够“驾驭”它,创造出专业、美观、现代化界面的“Pro”级设计师。

分享:
扫描分享到社交APP
上一篇
下一篇