首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

GDI+ 陰影筆刷完整指南:TGPHatchBrush 56 種預設圖案

     編輯:Delphi

TGPHatchBrush 提供 56 種預定義的陰影圖案,涵蓋線條、網格、磚塊、波浪、百分比網點等豐富樣式,適用於工程繪圖、統計圖表、CAD 應用等場景。每種圖案支援獨立設定前景色與背景色。

建構子語法

TGPHatchBrush.Create(
  hatchStyle: THatchStyle;   { 陰影樣式 }
  foreColor: TGPColor;       { 前景色 }
  backColor: TGPColor = aclBlack { 背景色,預設黑色 }
);

程式碼實作

完整互動範例:下拉選單列出所有 56 種 HatchStyle,兩個 ColorBox 分別選取前景/背景色:

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.

表單設計 (DFM)

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

執行效果

陰影筆刷示範

HatchStyle 完整對照表 (56 種)

Delphi 常數Microsoft 對應說明
HatchStyleHorizontalHorizontal水平線
HatchStyleVerticalVertical垂直線
HatchStyleForwardDiagonalForwardDiagonal左上到右下對角線
HatchStyleBackwardDiagonalBackwardDiagonal右上到左下對角線
HatchStyleCrossCross交叉水平垂直線
HatchStyleDiagonalCrossDiagonalCross交叉對角線
HatchStylePercent05 ~ Percent90Percent05 ~ Percent905%~90% 網點 (10 種)
HatchStyleLightHorizontalLightHorizontal淡水平線
HatchStyleLightVerticalLightVertical淡垂直線
HatchStyleLightDownwardDiagonalLightDownwardDiagonal淡向下對角線
HatchStyleLightUpwardDiagonalLightUpwardDiagonal淡向上對角線
HatchStyleDarkHorizontalDarkHorizontal深水平線
HatchStyleDarkVerticalDarkVertical深垂直線
HatchStyleDarkDownwardDiagonalDarkDownwardDiagonal深向下對角線
HatchStyleDarkUpwardDiagonalDarkUpwardDiagonal深向上對角線
HatchStyleDashedHorizontalDashedHorizontal虛水平線
HatchStyleDashedVerticalDashedVertical虛垂直線
HatchStyleDashedDownwardDiagonalDashedDownwardDiagonal虛向下對角線
HatchStyleDashedUpwardDiagonalDashedUpwardDiagonal虛向上對角線
HatchStyleHorizontalBrickHorizontalBrick水平磚塊
HatchStyleDiagonalBrickDiagonalBrick對角磚塊
HatchStyleShingleShingle鵝卵石
HatchStyleTrellisTrellis格架
HatchStyleSphereSphere球體
HatchStyleSmallGridSmallGrid小網格
HatchStyleLargeGridLargeGrid大網格
HatchStyleSmallCheckerBoardSmallCheckerBoard小棋盤
HatchStyleLargeCheckerBoardLargeCheckerBoard大棋盤
HatchStyleOutlinedDiamondOutlinedDiamond輪廓菱形
HatchStyleSolidDiamondSolidDiamond實心菱形
HatchStyleDottedGridDottedGrid點狀網格
HatchStyleDottedDiamondDottedDiamond點狀菱形
HatchStylePlaidPlaid格子呢
HatchStyleWeaveWeave織物
HatchStyleDivotDivot草皮
HatchStyleWaveWave波浪線
HatchStyleZigZagZigZagZ 字形
HatchStyleSmallConfettiSmallConfetti小彩紙
HatchStyleLargeConfettiLargeConfetti大彩紙
HatchStyleNarrowHorizontalNarrowHorizontal窄水平線
HatchStyleNarrowVerticalNarrowVertical窄垂直線
HatchStyleWideDownwardDiagonalWideDownwardDiagonal寬向下對角線
HatchStyleWideUpwardDiagonalWideUpwardDiagonal寬向上對角線
HatchStyleMin/MaxMin/Max最小/最大值別名

善用陰影筆刷可避免大面積純色填充的單調感,並在列印文件中節省墨水。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved