文档章节

GdiPlus[14]: IGPLinearGradientBrush 之 Blend

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 367
阅读 4
收藏 0
点赞 0
评论 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;

 
 
 
 
 

 

 

  

© 著作权归作者所有

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

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

长平狐 ⋅ 2012/10/08 ⋅ 0

GDI+里面的问题。。。。。。。。。。

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

xxdd ⋅ 2013/10/24 ⋅ 0

vs 2005 添加GDI配置

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

种地瓜 ⋅ 2015/12/08 ⋅ 0

VS2008中使用GDI+

include <objbase.h> #include <gdiplus.h> #pragma comment(lib, "gdiplus.lib") using namespace Gdiplus; 定义全局 无符号长整形指针 ULONGPTR 如 ULONGPTR gdiplusupToken; 在构造函数里......

ryany ⋅ 2011/03/20 ⋅ 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 ⋅ 0

在DLL中调用createwindows,报错1407

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

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

求助:fedora 14 用wine安装rtx 失败

公司用RTX交流,现在因为学习安装了fedora 14系统,想用RTX,于是装上了WINE1.3,再安装winetricks, 安装库文件winetricks msxml3 gdiplus riched20 riched30 ie6 vcrun6 vcrun2005sp1, 再安...

我勒个去也 ⋅ 2011/11/04 ⋅ 9

模仿酷狗7(Kugou7)音乐魔方界面源码

源码名称:模仿酷狗7(Kugou7)界面源码 源码作者:邓学彬(泪闯天涯) 源码说明:内含VC++源码、易语言源码各一份.包含所有图片源码(使用Fireworks编辑) 开发环境:VC版--VS2005、Gdiplus;易语...

邓学彬 ⋅ 2012/12/09 ⋅ 0

VC 6.0 配置和使用gdi+

GDI+ GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,W...

junwong ⋅ 2012/03/23 ⋅ 0

Wine 1.3.16 发布

下载地址: http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.16.tar.bz2 更新内容: New version of the Gecko engine, based on Firefox 4. Better support for Dwarf debuggi......

红薯 ⋅ 2011/03/19 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 15分钟前 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

楠木楠 ⋅ 26分钟前 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 56分钟前 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 56分钟前 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

Guacamole 远程桌面

本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看。 一、简介 Apache Guacamole 是无客...

千里明月 ⋅ 今天 ⋅ 0

nagios 安装

Nagios简介:监控网络并排除网络故障的工具:nagios,Ntop,OpenVAS,OCS,OSSIM等开源监控工具。 可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和h...

寰宇01 ⋅ 今天 ⋅ 0

AngularDart注意事项

默认情况下创建Dart项目应出现以下列表: 有时会因为不知明的原因导致列表项缺失: 此时可以通过以下步骤解决: 1.创建项目涉及到的包:stagehand 2.执行pub global activate stagehand或pub...

scooplol ⋅ 今天 ⋅ 0

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部