文档章节

GdiPlus[14]: IGPLinearGradientBrush 之 Blend

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 367
阅读 5
收藏 0

IGPLinearGradientBrush.Blend 属性对应一个 IGPBlend 对象;

TGPBlend.Create(Factors, Positions); 中的两个参数都是 Single 类型的数组,
Factors 颜色强度因子, Positions 是位置偏移比例.

对于两种颜色的渐变, 上面两个数组都应是三个元素构成; 默认效果是 [0, 0.5, 1].

测试效果图:



测试代码:

uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
var
  Graphics: IGPGraphics;
  Rect: TGPRectF;
  Brush: IGPLinearGradientBrush;
  StringFormat: IGPStringFormat;
  Font: IGPFont;
  BrushText: IGPSolidBrush;
begin
  Graphics := TGPGraphics.Create(Canvas.Handle);
  Rect.Initialize(20, 10, ClientWidth - 40, 30);
  Brush := TGPLinearGradientBrush.Create(Rect, $FFFF0000, $FF0000FF, 0);

  StringFormat := TGPStringFormat.Create;
  StringFormat.Alignment := StringAlignmentCenter;
  StringFormat.LineAlignment := StringAlignmentFar;

  Font := TGPFont.Create(Canvas.Handle);
  BrushText := TGPSolidBrush.Create($FFCCCCCC);

  Brush.Blend := TGPBlend.Create([0, 0.5, 1], [0, 0.5, 1]);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.5, 1], [0, 0.5, 1]', Font, Rect, StringFormat, BrushText);

  //
  Brush.Blend := TGPBlend.Create([0, 0.5, 1], [0, 0.2, 1]);
  Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.5, 1], [0, 0.2, 1]', Font, Rect, StringFormat, BrushText);

  Brush.Blend := TGPBlend.Create([0, 0.5, 1], [0, 0.8, 1]);
  Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.5, 1], [0, 0.8, 1]', Font, Rect, StringFormat, BrushText);
  
  //
  Brush.Blend := TGPBlend.Create([0, 0.2, 1], [0, 0.5, 1]);
  Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.2, 1], [0, 0.5, 1]', Font, Rect, StringFormat, BrushText);

  Brush.Blend := TGPBlend.Create([0, 0.8, 1], [0, 0.5, 1]);
  Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.8, 1], [0, 0.5, 1]', Font, Rect, StringFormat, BrushText);
  
  //
  Brush.Blend := TGPBlend.Create([0, 0.2, 1], [0, 0.2, 1]);
  Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.2, 1], [0, 0.2, 1]', Font, Rect, StringFormat, BrushText);

  Brush.Blend := TGPBlend.Create([0, 0.8, 1], [0, 0.8, 1]);
  Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.8, 1], [0, 0.8, 1]', Font, Rect, StringFormat, BrushText);

  //
  Brush.Blend := TGPBlend.Create([0, 0.2, 1], [0, 0.8, 1]);
  Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.2, 1], [0, 0.8, 1]', Font, Rect, StringFormat, BrushText);

  Brush.Blend := TGPBlend.Create([0, 0.8, 1], [0, 0.2, 1]);
  Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  Graphics.FillRectangle(Brush, Rect);
  Graphics.DrawString('[0, 0.8, 1], [0, 0.2, 1]', Font, Rect, StringFormat, BrushText);
end;

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/12/14/1624117.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
MFC用GDI+动感歌词的制作

源代码:http://download.csdn.net/detail/nuptboyzhb/4219669 源代码: 1. 插入一个对话框的资源,删除默认控件,并为对话框创建一个类,命名为ClyricDlg; 2. 在对话框的头文件中添加GDI+相...

长平狐
2012/10/08
236
0
vs 2005 添加GDI配置

在VS2005当中由于自带了GDI+的开发包,所以不需要在安装GDI开发包,这些头文件的位置由VS中的$(WindowsSdkDir)/include自动包含进来了 下午自己添加了好几次,总是出现有报错,,在 stdafx.h...

种地瓜
2015/12/08
85
0
GDI+里面的问题。。。。。。。。。。

error C2248: “Gdiplus::Bitmap::Bitmap”: 无法访问 private 成员(在“Gdiplus::Bitmap”类中声明) 1> c:program filesmicrosoft sdkswindowsv7.0aincludegdiplusheaders.h(630) : 参见“G......

xxdd
2013/10/24
60
0
MFC边框重绘

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 pragma once incl......

江河海流
2016/01/30
509
0
在DLL中调用createwindows,报错1407

//初始化 AtlAxWinInit(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); //名字和当......

哈大哈傻瓜
2016/03/27
116
0

没有更多内容

加载失败,请刷新页面

加载更多

用any-loader封装jQuery的XHR —— 随便写着玩系列

哎,都说没人用JQuery啦,叫你别写这个。 其实我也是好高骛远使用过npm上某个和某个很出名的XHR库,嗯,认识我的人都知道我喜欢喷JQ,以前天天喷,见面第一句,你还用JQ,赶紧丢了吧。但我也...

曾建凯
今天
1
0
聊聊storm的AggregateProcessor的execute及finishBatch方法

序 本文主要研究一下storm的AggregateProcessor的execute及finishBatch方法 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout......

go4it
今天
3
0
大数据教程(7.5)hadoop中内置rpc框架的使用教程

博主上一篇博客分享了hadoop客户端java API的使用,本章节带领小伙伴们一起来体验下hadoop的内置rpc框架。首先,由于hadoop的内置rpc框架的设计目的是为了内部的组件提供rpc访问的功能,并不...

em_aaron
今天
5
0
CentOS7+git+github创建Python开发环境

1.准备CentOS7 (1)下载VMware Workstation https://pan.baidu.com/s/1miFU8mk (2)下载CentOS7镜像 https://mirrors.aliyun.com/centos/ (3)安装CentOS7系统 http://blog.51cto.com/fengyuns......

枫叶云
昨天
3
0
利用ibeetl 实现selectpicker 的三级联动

1. js 直接写在html页面上面,ibeetl 就可以动态地利用后台传上来的model List ,不需要每次点击都要ajax请求后台 2. 使用selectpicker 的时候,除了对selecct option的动态处理后,还需要 $("#...

donald121
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部