## 再学 GDI+[66]: 路径画刷(6) - SetInterpolationColors、GetRectangle 转

涂孟超

``````unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{\$R *.dfm}

uses GDIPOBJ, GDIPAPI;

procedure TForm1.FormPaint(Sender: TObject);
var
g : TGPGraphics;
path: TGPGraphicsPath;
pb: TGPPathGradientBrush;
rt: TGPRect;
const
pts: array[0..2] of TGPPoint = ((X:90; Y:10), (X:10; Y:160), (X:160; Y:160));
colors: array[0..2] of TGPColor = (aclGreen, aclAqua, aclBlue);
pos: array[0..2] of Single = (0.0, 0.25, 1.0); {颜色位置需要 >=0、<=1, 是百分比}
begin
{三角}
g := TGPGraphics.Create(Canvas.Handle);
path := TGPGraphicsPath.Create;
path.AddPolygon(PGPPoint(@pts), Length(pts));
pb:= TGPPathGradientBrush.Create(path);
pb.SetInterpolationColors(@colors, @pos, Length(colors)); {SetInterpolationColors}
g.FillPath(pb, path);

{矩形}
pb.GetRectangle(rt); {GetRectangle}
path.Reset;
path.AddRectangle(rt);
pb.Free;
pb:= TGPPathGradientBrush.Create(path);
pb.SetInterpolationColors(@colors, @pos, Length(colors));
g.TranslateTransform(160, 0);
g.FillPath(pb, path);

{椭圆}
path.Reset;
path.AddEllipse(rt);
pb.Free;
pb:= TGPPathGradientBrush.Create(path);
pb.SetInterpolationColors(@colors, @pos, Length(colors));
g.TranslateTransform(160, 0);
g.FillPath(pb, path);

pb.Free;
path.Free;
g.Free;
end;

end.

``````

``````object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 164
ClientWidth = 491
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnPaint = FormPaint
PixelsPerInch = 96
TextHeight = 13
end

``````

### 涂孟超

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

Andrewniu
2018/09/30
0
0
【Visual C++】游戏开发笔记之四——游戏画面绘图（一）基本图形绘制

2012/11/12
135
0
CDC绘图总结

GDI总结：http://dingchaoqun12.blog.163.com/blog/static/11606250420112213396361/ 对话框 控件 视图类 应用程序框架都会调用该CWnd的消息响应成员函数（的覆盖）来绘制窗口客户区。 在Win...

2012/10/08
2.4K
0

2017/11/08
0
0

junwong
2012/03/23
251
0

https://github.com/nothings/stb 目前一般主流的图像格式也就是bmp，jpg，png，tga，dds，除了DDS一般是给DX用的，虽然一堆OpenGL程序也有用的，但是我一般只用png和tga， png不用说了，带a...

robslove
3分钟前
0
0
Spring 事务提交回滚源码解析

TSMYK
22分钟前
0
0

48分钟前
2
0

wget -c -r -p -np -k http://xxx.com/xxx 其中： -c, --continue （断点续传） 接着下载没下载完的文件 -r, --recursive（递归） specify recursive download.（指定递归下载） -p, --page...

51分钟前
2
0
Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR（server side render——服务端渲染）框架，只需要几个步骤就可以搭建一个支持SSR的工程（_Nextjs_的快速搭建见Next.js入门）...

3
0