文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 776
阅读 372
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

//路径渐变画刷
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

涂孟超
粉丝 13
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
加载中
请先登录后再评论。
简述WPF中的画刷(Brush)

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

Andrewniu
2018/09/30
0
0
GDI+学习---2.GDI+编程模式及组成类

  在使用GDI+的时候,您不必像在GDI中那样关心设备场景句柄,只需简单地创建一个Graphics对象,然后以您熟悉的面向对象的方式(如myGraphicsObject.DrawLine(parameters))调用它的方法即可...

osc_wa6fkyf0
2018/08/11
1
0
画笔与画刷(pen and brush)

Pen 画笔 在System.Drawing名称空间中 用来指定图形的轮廓,如颜色宽度等 画笔创建 Pen pen = new Pen(Color.Blue,5); 使用Pens类,直接用系统定义好的Pen 如:Pens.Red Pens.Blue 画笔属性 ...

osc_rlhs4hdf
2018/01/22
4
0
从零开始学习GDI+ (二) 基本概念与基本操作

从零开始学习GDI+ (一)我的第一个GDI+程序 上文给新手学习GDI+讲述了vs环境等的准备工作,并且可以直接用GDI+绘图了。本文开始,讲述的可能偏理论,建议学习的过程中大胆尝试,多使用API。...

osc_bkdv2it5
2019/08/20
1
0
《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第二节:画矩形

有了上一节画线的基础,画矩形的各种边线就特别好理解了,所以,本节在矩形边线上,就不做过多的讲解了,关注一下画“随机矩形”的具体实现就好。与画线相比较,画矩形稍微复杂的一点就是在于...

osc_5n29qf0u
04/16
7
0

没有更多内容

加载失败,请刷新页面

加载更多

如何离线安装所有依赖包

当我们在一个没有公网的环境下去部署一些东西的时候往往是让人很头疼的一件事,因为可能会需要各种依赖包,依赖包本身也还有很多依赖关系。如果没有一次性把全部的依赖包打包下载好,我们下载...

osc_exgfhxar
20分钟前
8
0
7款优秀Vim插件帮你打造完美IDE - 知乎

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,不管是Java、C还是Python,使用IDE编程可以帮你检查语法、自动补全、后台编译等,写代码就变得...

osc_56801rv0
21分钟前
17
0
算法工程师的数学基础|线性代数中的向量内积和外积概念及几何意义

线性代数主要包含向量、向量空间(或称线性空间)以及向量的线性变换和有限维的线性方程组。本篇文章主要介绍线性代数部分中的向量和向量空间。 本篇内容主要是对线性代数中向量点积和外积补...

osc_sw1y4qdg
23分钟前
12
0
Python json.dumps 中文问题

今天用json.dump()函数,遇到了中文自动转Unicode编码的问题 def dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None,......

osc_dbf92nqg
24分钟前
9
0
菜鸟如何在阿里云快速建站(pc站+手机站+公众号+小程序)

在当今互联网大发展的时代,互联网已经成为和吃饭睡觉一样平常的事物。不论个人还是公司、不论是打工的还是老板、不论是农村的还是城市的,不知道互联网的人大概只剩下那些年龄过高的部分老年...

osc_hinb5m98
26分钟前
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部