文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 776
阅读 7
收藏 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
常用的GDI+ 函数使用例子

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

junwong
2012/03/23
251
0
Windows Phone开发(31):画刷

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

junwong
2012/04/18
252
0
【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制

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

长平狐
2012/11/12
135
0
CDC绘图总结

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

长平狐
2012/10/08
2.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

zookeeper配置与使用

一.登录官网下载 不要带后缀的,那是公侧版本,下稳定版,比如3.4.9 二.安装与使用 解压后bin里是启动程序 配置文件:在conf下 复制zoo_sample.cfg改名为为zoo.cfg,打开zoo修改文件...

小兵胖胖
19分钟前
0
0
spring源码阅读笔记(一)

ClassPathXmlApplicationContext 与 FileSystemXmlApplicationContext 用了这么久的框架,是时候搞一下源码了,一般最初接触spring 从以下步骤开始 创建一个bean类 并创建 ooxx.xml之类的spr...

NotFound403
43分钟前
2
0
MySQL主从配置

12月14日任务 17.1 MySQL主从介绍 17.2 准备工作 17.3 配置主 17.4 配置从 17.5 测试主从同步 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单将就是A/B两个服务器做主从后,在A上写...

robertt15
45分钟前
6
0
我的Linux系统九阴真经

在今天,互联网的迅猛发展,科技技术也日新月异,各种编程技术也如雨后春笋一样,冒出尖来了。各种创业公司也百花齐放百家争鸣,特别是针对服务行业,新型互联网服务行业,共享经济等概念的公...

问题终结者
58分钟前
21
0
Java 使用 gson 对 json 根据 key 键进行排序

引入Google的gson jar <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version>......

yh32
59分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部