文档章节

GDI+ 学习记录(11): 路径渐变画刷 - PathGradientBrush

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 776
阅读 5
收藏 0
//路径渐变画刷
var
  g: TGPGraphics;
  path: TGPGraphicsPath;
  pb: TGPPathGradientBrush; {声明渐变画刷}
  num: Integer;
const
  colors: array[0..0] of TGPColor = (aclAqua);
begin
  g := TGPGraphics.Create(Canvas.Handle);
  path := TGPGraphicsPath.Create;
  path.AddEllipse(0,0,166,88);

  pb := TGPPathGradientBrush.Create(path);   {建立渐变画刷}
  pb.SetCenterColor(MakeColor(255,0,0,255)); {中心颜色}

  num := 1;
  pb.SetSurroundColors(@colors, num); {周围的颜色}
  {第二个参数, 不能用常数代替; 它好像是第一个数组参数的索引+1}

  g.FillEllipse(pb, 0, 0, 166, 88); {需要和定义的渐变效果的大小一样}
  //g.FillPath(pb,path); {直接画路径效果也一样}

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

 
 
 
 
 

 

 

  
//可以通过点数组的指针创建路径画刷 var g : TGPGraphics; pts: array[0..2] of TGPPoint; pb: TGPPathGradientBrush; begin g := TGPGraphics.Create(Canvas.Handle); pts[0] := MakePoint(100, 0); pts[1] := MakePoint(200, 200); pts[2] := MakePoint(0, 200); pb:= TGPPathGradientBrush.Create(PGPPoint(@pts), 3); g.FillRectangle(pb, 0, 0, 200, 200); {没有指定中心颜色和周边颜色, 将分别默认黑色和白色} pb.Free; g.Free; end;
//设置路径画刷的中心点 var g: TGPGraphics; path: TGPGraphicsPath; pb: TGPPathGradientBrush; num: Integer; const colors : array[0..0] of TGPColor = (aclAqua); begin g := TGPGraphics.Create(Canvas.Handle); path:= TGPGraphicsPath.Create; path.AddEllipse(0, 0, 140, 70); pb:= TGPPathGradientBrush.Create(path); pb.SetCenterPoint(MakePoint(120, 40)); {设置中心点} pb.SetCenterColor(MakeColor(255, 0, 0, 255)); num := 1; pb.SetSurroundColors(@colors, num); g.FillEllipse(pb, 0, 0, 140, 70); path.Free; pb.Free; g.Free; end;
//使用灰度校正 var g: TGPGraphics; path: TGPGraphicsPath; pb: TGPPathGradientBrush; num: Integer; const colors: array[0..0] of TGPColor = (aclAqua); begin g := TGPGraphics.Create(Canvas.Handle); path := TGPGraphicsPath.Create; path.AddEllipse(0,0,166,88); pb := TGPPathGradientBrush.Create(path); pb.SetGammaCorrection(True); {使用灰度校正} num := 1; pb.SetSurroundColors(@colors, num); g.FillEllipse(pb, 0, 0, 166, 88); path.Free; pb.Free; g.Free; end;
//多种颜色及位置 var g : TGPGraphics; pts: array[0..2] of TGPPoint; pb: TGPPathGradientBrush; const 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); pts[0] := MakePoint(100, 0); pts[1] := MakePoint(200, 200); pts[2] := MakePoint(0, 200); pb:= TGPPathGradientBrush.Create(PGPPoint(@pts), 3); {根据点数组指针建立路径画刷} pb.SetInterpolationColors(@colors, @pos, 3); {设置颜色位置} g.FillRectangle(pb, 0, 0, 200, 200); pb.Free; g.Free; end;
//设置多种周边颜色 var g: TGPGraphics; path: TGPGraphicsPath; pb: TGPPathGradientBrush; colors: array[0..9] of TGPColor; num: Integer; const pts : array[0..9] of TGPPoint = ((x:75 ; y:0 ), (x:100; y:50 ), (x:150; y:50 ), (x:112; y:75 ), (x:150; y:150), (x:75 ; y:100), (x:0 ; y:150), (x:37 ; y:75 ), (x:0 ; y:50 ), (x:50 ; y:50 )); begin g := TGPGraphics.Create(Canvas.Handle); path:= TGPGraphicsPath.Create; path.AddLines(PGPPoint(@pts), 10); pb:= TGPPathGradientBrush.Create(path); pb.SetCenterColor(MakeColor(255, 255, 0, 0)); colors[0] := MakeColor(255, 0, 0, 0); colors[1] := MakeColor(255, 0, 255, 0); colors[2] := MakeColor(255, 0, 0, 255); colors[3] := MakeColor(255, 255, 255, 255); colors[4] := MakeColor(255, 0, 0, 0); colors[5] := MakeColor(255, 0, 255, 0); colors[6] := MakeColor(255, 0, 0, 255); colors[7] := MakeColor(255, 255, 255, 255); colors[8] := MakeColor(255, 0, 0, 0); colors[9] := MakeColor(255, 0, 255, 0); num := 10; pb.SetSurroundColors(@colors, num); {设置多种周边颜色} g.FillPath(pb, path); pb.SetGammaCorrection(True); {使用灰度校正} g.TranslateTransform(200.0, 0.0); g.FillPath(pb, path); path.Free; pb.Free; g.Free; end;
//描绘在不同的区域 var g : TGPGraphics; pb: TGPPathGradientBrush; p: TGPPen; colors: array[0..4] of TGPColor; num: Integer; const pts: array[0..4] of TGPPointF = ((x: 0.0 ; y: 0.0), (x: 160.0; y: 0.0), (x: 160.0; y: 200.0), (x: 80.0 ; y: 150.0), (x: 0.0 ; y: 200.0)); begin g := TGPGraphics.Create(Canvas.Handle); pb:= TGPPathGradientBrush.Create(PGPPointF(@pts), 5); colors[0] := MakeColor(255, 255, 0, 0); colors[1] := MakeColor(255, 0, 255, 0); colors[2] := MakeColor(255, 0, 255, 0); colors[3] := MakeColor(255, 0, 0, 255); colors[4] := MakeColor(255, 255, 0, 0); num := 5; pb.SetSurroundColors(@colors, num); pb.SetCenterColor(MakeColor(255, 255, 255, 255)); g.FillRectangle(pb, MakeRect(0, 0, 180, 220)); p := TGPPen.Create(aclBlack); g.DrawRectangle(p, MakeRect(0, 0, 180, 220)); p.Free; pb.Free; g.Free; end;

本文转载自:http://www.cnblogs.com/del/archive/2007/12/27/1017210.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
简述WPF中的画刷(Brush)

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

Andrewniu
09/30
0
0
Windows Phone开发(31):画刷

画刷是啥玩意儿?哈,其实画刷是用来涂鸦,真的,没骗你,至于你信不信,反正我信了。 本文通过价绍几个典型的画刷,使你明白画刷就是用来涂鸦的。 一、纯色画刷SolidColorBrush。 这个家伙比...

junwong
2012/04/18
250
0
常用的GDI+ 函数使用例子

一、通过Gdi+加载和显示PNG,JPG等格式的图片 //直接加载外部的图像 Image* image = new Image(L"test.png");//如果需要通过ID 来加载的话 BOOL CSmalltmpdemoDlg::ImageFromIDResource(UIN...

junwong
2012/03/23
239
0
Direct2D教程(八)梯度色画刷

概述 单色画刷产生的颜色是单一的,比如一个红色画刷只能输出红色,而渐变画刷则不同,它可以输出多种颜色,这些颜色通常是连续的,从一个颜色平滑过渡到另一个颜色,看起来有渐变的效果。渐...

吞吞吐吐的
2017/08/08
0
0
【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制

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

长平狐
2012/11/12
115
0

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
10
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
20
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部