zoukankan      html  css  js  c++  java
  • PerformEraseBackground 擦除背景(ThemeServices)

    PerformEraseBackground 擦除背景的简单方法(外带ThemeServices例子)
     
    在查这个函数的时候,顺便看到了有趣的代码。
    怎么使用 Themes 。
    
    unit Unit2;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ImgList, ExtCtrls;
    type
      TForm2 = class(TForm)
        ImageList1: TImageList;
        Panel1: TPanel;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
      TVSPanel = class(TCustomPanel)
      private
      protected
        procedure Paint; override;
      public
    end;
    var
      Form2: TForm2;
    implementation
    uses Themes,UxTheme;
    {$R *.dfm}
    { TVSPanel }
    procedure TVSPanel.Paint;
    var
      Details: TThemedElementDetails;
    begin
      inherited;
      if ThemeServices.ThemesEnabled then
      begin
        Details := ThemeServices.GetElementDetails(tbPushButtonHot);   {这里画个按钮处于 Hot 状态下的样子}
        PerformEraseBackground(Self, Canvas.Handle);      {擦除画按钮时的背景}
        ThemeServices.DrawElement(Canvas.Handle, Details, ClientRect);
        ThemeServices.DrawText(Canvas.Handle, Details, Caption, ClientRect,
          DT_EXPANDTABS or DT_VCENTER or DT_CENTER or DT_SINGLELINE, 0);
      end;
    end;
    procedure TForm2.FormCreate(Sender: TObject);
    var
      APanel: TVSPanel;
    begin
      APanel := TVSPanel.Create(Application);
      APanel.Left := 100;
      APanel.Top := 100;
      APanel.Width := 200;
      APanel.Height := 30;
      APanel.Caption := '具有 Button 风格的 Panel';
      APanel.Parent := Self;
    end;
    View Code

  • 相关阅读:
    __all__ = ["a"]被调用时只会调用list里面的
    if __name__ == "__main__"
    异常处理
    python
    python传智播客笔记--第十天:隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写
    python获取引用对象的个数
    对象属性会保留
    python中的不定长参数
    python的全局变量
    python实现文件命名
  • 原文地址:https://www.cnblogs.com/key-ok/p/3380483.html
Copyright © 2011-2022 走看看