TGPHatchBrush.Create(
  hatchStyle: THatchStyle;       {阴影样式, 见下表}
  foreColor: TGPColor;           {前景色}
  backColor: TGPColor = aclBlack {背景色, 是可选值, 默认是黑色}
);

本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    ColorBox1: TColorBox;
    ColorBox2: TColorBox;
    ComboBox1: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ColorBox1Change(Sender: TObject);
    procedure ColorBox2Change(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses GDIPOBJ, GDIPAPI, TypInfo;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  {把画刷样式枚举 HatchStyle 中的所有项添加到列表}
  for i := 0 to Integer(HatchStyleTotal) - 1 do
    ComboBox1.Items.Add(GetEnumName(TypeInfo(HatchStyle), i));

  {给三个列表初始值}
  ComboBox1.ItemIndex := 0;
  ColorBox1.ItemIndex := 16;
  ColorBox2.ItemIndex := 3;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  g: TGPGraphics;
  r: TGPRect;
  hb: TGPHatchBrush;
  fColor,bColor: TGPColor;
  hbStyle: HatchStyle;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  g.Clear(MakeColor(255,255,255));
  r := MakeRect(20, 60, ClientWidth - 40, ClientHeight - 70);

  hbStyle := HatchStyle(ComboBox1.ItemIndex);   {列表的序号和对应的枚举值是一样的}
  fColor := ColorRefToARGB(ColorBox1.Selected); {前景色}
  bColor := ColorRefToARGB(ColorBox2.Selected); {背景色}

  {建立样式画刷}
  hb := TGPHatchBrush.Create(hbStyle, fColor, bColor);

  g.FillEllipse(hb, r);

  hb.Free;
  g.Free;
end;

procedure TForm1.ColorBox1Change(Sender: TObject);
begin
  Repaint;
end;

procedure TForm1.ColorBox2Change(Sender: TObject);
begin
  Repaint;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Repaint;
end;

end.

窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 206
  ClientWidth = 268
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  OnCreate = FormCreate
  OnPaint = FormPaint
  PixelsPerInch = 96
  TextHeight = 13
  object ColorBox1: TColorBox
    Left = 48
    Top = 30
    Width = 100
    Height = 22
    ItemHeight = 16
    TabOrder = 0
    OnChange = ColorBox1Change
  end
  object ColorBox2: TColorBox
    Left = 160
    Top = 30
    Width = 100
    Height = 22
    ItemHeight = 16
    TabOrder = 1
    OnChange = ColorBox2Change
  end
  object ComboBox1: TComboBox
    Left = 48
    Top = 3
    Width = 212
    Height = 21
    ItemHeight = 13
    TabOrder = 2
    Text = 'ComboBox1'
    OnChange = ComboBox1Change
  end
end

画刷阴影样式表:

Delphi 微软 说明
HatchStyleBackwardDiagonal BackwardDiagonal 从右上到左下的对角线的线条图案。
HatchStyleCross Cross 指定交叉的水平线和垂直线。
HatchStyleDarkDownwardDiagonal DarkDownwardDiagonal 指定从顶点到底点向右倾斜的对角线,其两边夹角比ForwardDiagonal小50%,宽度是其两倍。此阴影图案不是锯齿消除的。
HatchStyleDarkHorizontal DarkHorizontal 指定水平线的两边夹角比Horizontal小50%并且宽度是Horizontal的两倍。
HatchStyleDarkUpwardDiagonal DarkUpwardDiagonal 指定从顶点到底点向左倾斜的对角线,其两边夹角比BackwardDiagonal小50%,宽度是其两倍,但这些直线不是锯齿消除的。
HatchStyleDarkVertical DarkVertical 指定垂直线的两边夹角比Vertical小50%并且宽度是其两倍。
HatchStyleDashedDownwardDiagonal DashedDownwardDiagonal 指定虚线对角线,这些对角线从顶点到底点向右倾斜。
HatchStyleDashedHorizontal DashedHorizontal 指定虚线水平线。
HatchStyleDashedUpwardDiagonal DashedUpwardDiagonal 指定虚线对角线,这些对角线从顶点到底点向左倾斜。
HatchStyleDashedVertical DashedVertical 指定虚线垂直线。
HatchStyleDiagonalBrick DiagonalBrick 指定具有分层砖块外观的阴影,它从顶点到底点向左倾斜。
HatchStyleDiagonalCross DiagonalCross 交叉对角线的图案。
HatchStyleDivot Divot 指定具有草皮层外观的阴影。
HatchStyleDottedDiamond DottedDiamond 指定互相交叉的正向对角线和反向对角线,每一对角线都是由点构成的。
HatchStyleDottedGrid DottedGrid 指定互相交叉的水平线和垂直线,每一直线都是由点构成的。
HatchStyleForwardDiagonal ForwardDiagonal 从左上到右下的对角线的线条图案。
HatchStyleHorizontal Horizontal 水平线的图案。
HatchStyleHorizontalBrick HorizontalBrick 指定具有水平分层砖块外观的阴影。
HatchStyleLargeCheckerBoard LargeCheckerBoard 指定具有棋盘外观的阴影,棋盘所具有的方格大小是SmallCheckerBoard大小的两倍。
HatchStyleLargeConfetti LargeConfetti 指定具有五彩纸屑外观的阴影,并且它是由比SmallConfetti更大的片构成的。
HatchStyleLargeGrid LargeGrid 指定阴影样式Cross。
HatchStyleLightDownwardDiagonal LightDownwardDiagonal
HatchStyleLightHorizontal LightHorizontal 指定水平线,其两边夹角比Horizontal小50%。
HatchStyleLightUpwardDiagonal LightUpwardDiagonal 指定从顶点到底点向左倾斜的对角线,其两边夹角比BackwardDiagonal小50%,但这些直线不是锯齿消除的。
HatchStyleLightVertical LightVertical 指定垂直线的两边夹角比Vertical小50%。
HatchStyleMax Max 指定阴影样式SolidDiamond。
HatchStyleMin Min 指定阴影样式Horizontal。
HatchStyleNarrowHorizontal NarrowHorizontal 指定水平线的两边夹角比阴影样式Horizontal小75%(或者比LightHorizontal小25%)。
HatchStyleNarrowVertical NarrowVertical 指定垂直线的两边夹角比阴影样式Vertical小75%(或者比LightVertical小25%)。
HatchStyleOutlinedDiamond OutlinedDiamond 指定互相交叉的正向对角线和反向对角线,但这些对角线不是锯齿消除的。
HatchStylePercent05 Percent05 指定5%阴影。前景色与背景色的比例为5:100。
HatchStylePercent10 Percent10 指定10%阴影。前景色与背景色的比例为10:100。
HatchStylePercent20 Percent20 指定20%阴影。前景色与背景色的比例为20:100。
HatchStylePercent25 Percent25 指定25%阴影。前景色与背景色的比例为25:100。
HatchStylePercent30 Percent30 指定30%阴影。前景色与背景色的比例为30:100。
HatchStylePercent40 Percent40 指定40%阴影。前景色与背景色的比例为40:100。
HatchStylePercent50 Percent50 指定50%阴影。前景色与背景色的比例为50:100。
HatchStylePercent60 Percent60 指定60%阴影。前景色与背景色的比例为60:100。
HatchStylePercent70 Percent70 指定70%阴影。前景色与背景色的比例为70:100。
HatchStylePercent75 Percent75 指定75%阴影。前景色与背景色的比例为75:100。
HatchStylePercent80 Percent80 指定80%阴影。前景色与背景色的比例为80:100。
HatchStylePercent90 Percent90 指定90%阴影。前景色与背景色的比例为90:100。
HatchStylePlaid Plaid 指定具有格子花呢材料外观的阴影。
HatchStyleShingle Shingle 指定带有对角分层鹅卵石外观的阴影,它从顶点到底点向右倾斜。
HatchStyleSmallCheckerBoard SmallCheckerBoard 指定带有棋盘外观的阴影。
HatchStyleSmallConfetti SmallConfetti 指定带有五彩纸屑外观的阴影。
HatchStyleSmallGrid SmallGrid 指定互相交叉的水平线和垂直线,其两边夹角比阴影样式Cross小50%。
HatchStyleSolidDiamond SolidDiamond 指定具有对角放置的棋盘外观的阴影。
HatchStyleSphere Sphere 指定具有球体彼此相邻放置的外观的阴影。
HatchStyleTrellis Trellis 指定具有格架外观的阴影。
HatchStyleVertical Vertical 垂直线的图案。
HatchStyleWave Wave 指定由代字号“~”构成的水平线。
HatchStyleWeave Weave 指定具有织物外观的阴影。
HatchStyleWideDownwardDiagonal WideDownwardDiagonal 指定从顶点到底点向右倾斜的对角线,其间距与阴影样式ForwardDiagonal相同,宽度是其三倍,但它们不是锯齿消除的。
HatchStyleWideUpwardDiagonal WideUpwardDiagonal 指定从顶点到底点向左倾斜的对角线,其间距与阴影样式BackwardDiagonal相同,宽度是其三倍,但它们不是锯齿消除的。
HatchStyleZigZag ZigZag 指定由Z字形构成的水平线。


posted on 2008-06-10 23:30  万一  阅读(3578)  评论(4编辑  收藏  举报