文档章节

再学 GDI+[18]: FillEllipse、TGPHatchBrush(阴影画刷)

涂孟超
 涂孟超
发布于 2014/09/26 15:32
字数 1546
阅读 43
收藏 0
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字形构成的水平线。


本文转载自:http://www.cnblogs.com/del/archive/2008/06/10/1217052.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制

本系列文章由zhmxy555编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7333886 作者:毛星云 邮箱: happylifemxy@qq.com 欢迎邮件交流编程心得 从本篇文章开始笔锋一...

长平狐
2012/11/12
145
0
窗体操作:CBrush类

CBrush画刷定义了一种位图形式的像素,利用它可对区域内部填充颜色。 该类封装了Windows的图形设备接口(GDI)刷子。通过该类构造的CBrush对象可以传递给任何一个需要画刷的CDC成员函数。该画刷...

野渡书生
2016/03/11
30
0
第二章 2绘制线条简单图形

线条和形状 同Windows其它版本相比,Windows CE提供相当少的功能的领域之一就是基本线条绘制和形状绘制功能。用来创建复杂环形的Chord, Arc, 和Pie函数被去掉了。大部分使用"当前点[current ...

技术小胖子
2017/11/08
0
0
简述WPF中的画刷(Brush)

-------------------------------------------------------------------------------- 引用或转载时请保留以下信息: 大可山 [MSN:a3news(AT)hotmail.com] http://www.zpxp.com http://www.b......

Andrewniu
2018/09/30
0
0
常用的GDI+ 函数使用例子

一、通过Gdi+加载和显示PNG,JPG等格式的图片 二、实现一个渐变的画刷 原文链接:http://blog.csdn.net/toss156/article/details/7272423...

junwong
2012/03/23
289
0

没有更多内容

加载失败,请刷新页面

加载更多

VMware vSphere ESXi主机的访问控制

在vShpere中,访问ESXi主机的途径很多,如下: ESXi DCUI ESXi Shell ESXi SSH ESXi Host Client vCenter --> vSphere web client / vSphere Client VMware vSphere ESXi主机的访问控制,除了......

大别阿郎
34分钟前
4
0
大神讲解CGI、FastCGI和PHP-FPM关系图解

参考资料 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319 php中fastcgi和php-fpm是什么东西:https://www.zybuluo.com/phper/note/50231 ......

网络小虾米
43分钟前
4
0
《DNS攻击防范科普系列3》 -如何保障 DNS 操作安全

引言 前两讲我们介绍了 DNS 相关的攻击类型,以及针对 DDoS 攻击的防范措施。这些都是更底层的知识,有同学就来问能否讲讲和我们的日常操作相关的知识点,今天我们就来说说和我们日常 DNS 操...

Mr_zebra
44分钟前
4
0
zk中ServerCnxn

实现接口Stats, Watcher 内部类 DisconnectReason CloseRequestException EndOfStreamException(流关闭) 属性 方法 getSessionTimeout 获取session失效时间 sendResponse 发送回复数据 se......

writeademo
49分钟前
4
0
如何将 Redis 用于微服务通信的事件存储

来源:Redislabs 作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的、松耦合的、可协同工作的独立逻辑业务服务会更易于构建和维护。这些服务(也...

中间件小哥
52分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部