当前位置:网站首页>GDI+ 中路径渐变画刷的使用
GDI+ 中路径渐变画刷的使用
2022-06-09 12:00:00 【litanyuan】
背景
路径是一系列相互连接的直线和曲线,由许多不同类型的点所构成,用于表示复杂的不规则图形, GraphicsPath 类表示。
路径渐变画刷允许设置颜色从中心向边界渐变的画刷,可以设置中心点颜色和边界点的颜色。
构建路径渐变画刷
①.使用路径构建
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue,2);
SolidBrush m_Brush(Color::Green);
GraphicsPath m_Path;//构造空路径
m_Path.AddEllipse(30, 30, 180, 120);//添加椭圆
PathGradientBrush pathBrush(&m_Path);//使用路径创建画刷
pathBrush.SetCenterColor(Color::Red);//设置中心颜色
Color colors[] = {
Color::Green ,Color::Green};
int count = 1;
pathBrush.SetSurroundColors(colors, &count);//设置边界颜色
graphics.FillEllipse(&pathBrush, 30, 30, 180, 120);
}

②.使用点构建
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue,2);
SolidBrush m_Brush(Color::Green);
Point points[] = {
Point(30, 30), Point(180, 30), Point(180, 150), Point(30, 150) };
PathGradientBrush pathBrush(points,4);//使用点创建画刷
pathBrush.SetCenterColor(Color::Red);//设置中心颜色
Color colors[] = {
Color::Green ,Color::Black,Color::Yellow,Color::Blue};
int count = 4;
pathBrush.SetSurroundColors(colors, &count);//设置边界颜色
graphics.FillRectangle(&pathBrush, 30, 30, 150, 120);
}

聚焦和缩放
①.概述
聚焦缩放用于指定位于主轨迹内部的内部轨迹,中心颜色填充整个内部轨迹范围,而不是只显示在中心点。可以调用 SetFocusScales 方法来设置 一个路径渐变画刷的聚焦缩放。
②.设置聚焦缩放
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2);
SolidBrush m_Brush(Color::Green);
GraphicsPath m_Path;//构造空路径
m_Path.AddEllipse(30, 30, 180, 120);//添加椭圆
PathGradientBrush pathBrush(&m_Path);//使用路径创建画刷
pathBrush.SetCenterColor(Color::Red);//设置中心颜色
Color colors[] = {
Color::Green ,Color::Green };
int count = 1;
pathBrush.SetSurroundColors(colors, &count);//设置边界颜色
pathBrush.SetFocusScales(0.3f, 0.3f);//设置聚焦缩放
graphics.FillEllipse(&pathBrush, 30, 30, 180, 120);
}

插值颜色
①.概述
使用插值颜色数组可以实现从路径边界到中心点进行多种颜色进行渐变。
②.使用插值颜色渐变
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2);
SolidBrush m_Brush(Color::Green);
GraphicsPath m_Path;//构造空路径
m_Path.AddRectangle(Rect(30,30,180,120));//添加矩形
PathGradientBrush pathBrush(&m_Path);//使用路径创建画刷
Color colors[] = {
Color(255, 0, 128, 0),Color(255, 0, 255, 255),Color(255, 0, 0, 255) };
REAL positions[] = {
0.0f, 0.5f, 1.0f };
pathBrush.SetInterpolationColors(colors, positions, 3);
graphics.FillRectangle(&pathBrush, 30, 30, 180, 120);
}

其他参数设置
①.中心点设置
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2);
SolidBrush m_Brush(Color::Green);
GraphicsPath m_Path;//构造空路径
m_Path.AddEllipse(30, 30, 180, 120);//添加椭圆
PathGradientBrush pathBrush(&m_Path);//使用路径创建画刷
pathBrush.SetCenterColor(Color::Red);//设置中心颜色
Color colors[] = {
Color::Green ,Color::Green };
int count = 1;
pathBrush.SetSurroundColors(colors, &count);//设置边界颜色
pathBrush.SetCenterPoint(Point(150, 75));
graphics.FillEllipse(&pathBrush, 30, 30, 180, 120);
}

②.使用灰度矫正
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2);
SolidBrush m_Brush(Color::Green);
GraphicsPath m_Path;//构造空路径
m_Path.AddEllipse(30, 30, 180, 120);//添加椭圆
PathGradientBrush pathBrush(&m_Path);//使用路径创建画刷
pathBrush.SetCenterColor(Color::Red);//设置中心颜色
Color colors[] = {
Color::Green ,Color::Green };
int count = 1;
pathBrush.SetSurroundColors(colors, &count);//设置边界颜色
pathBrush.SetGammaCorrection(true);//使用灰度矫正
graphics.FillEllipse(&pathBrush, 30, 30, 180, 120);
}

边栏推荐
- Redisssion use
- ORM框架简介和常用ORM框架
- curator - 节点类型
- lombok -异常 non-static variable org cannot be referenced from a static context
- 3. < tag backtracking, combination and pruning > lt.17 Letter combination of telephone number
- Fairness through awareness
- 中國科學院院刊 | 包雲崗:加速發展關鍵核心技術,必須把握技術發展的自身規律
- MySQL SQL语句优化
- 【代码学习】批量提取论文(pdf)的第一页
- 10.<tag-二叉树和BST基础>lt.700. 二叉搜索树中的搜索 + lt.98. 验证二叉搜索树 + lt.530. 二叉搜索树的最小绝对差(同lt.783)
猜你喜欢

10.<tag-二叉树和BST基础>lt.700. 二叉搜索树中的搜索 + lt.98. 验证二叉搜索树 + lt.530. 二叉搜索树的最小绝对差(同lt.783)
![[转载] 分布式系统的“脑裂”到底是个什么玩意?](/img/7a/de7df9830f589be0b2214f875eb95e.png)
[转载] 分布式系统的“脑裂”到底是个什么玩意?

LR11安装报错:此计算机上缺少vc2005_sp1_with_atl_fix_redist,请安装所有缺少的必要组件,然后重新运行此安装。

Relay alphafold! Star pharmaceutical science and technology released a new era of tbind opening molecular protein complex structure prediction

PMP项目管理知识体系

谁说Redis不能存大key

.NET基础知识快速通关11

GameFi新的启程,AQUANEE将于6.9日登陆Gate以及BitMart

flutter Dio示例

中国科学院院刊 | 包云岗:加速发展关键核心技术,必须把握技术发展的自身规律
随机推荐
LP流动性挖矿系统开发生态系统详解
ep240--leding
leetcode 1332. Remove Palindromic Subsequences(删掉回文子串)
ORM框架简介和常用ORM框架
请你说说乐观锁和悲观锁,以及适用场景
柴云鹏:创新能力的培养至关重要|OceanBase 数据库大赛访谈
给 Web3 项目的智能合约安全指南
Tag greedy - brush questions to prepare knowledge - greedy problem solving methods + lt.455 Distribute cookies + lt.376 Wobble sequence
玩转Web3:创建属于自己的ERC-721(NFT)
UDP可靠性实践
go语言time.Format的坑
LR11安装报错:此计算机上缺少vc2005_sp1_with_atl_fix_redist,请安装所有缺少的必要组件,然后重新运行此安装。
谁说Redis不能存大key
.NET基础知识快速通关11
Common laboratory tools | preparation of experimental solution | molarity calculator
2022年理财产品还有保本保息的吗?我想投资理财但怕赔钱
Tag backtracking - brush questions to prepare knowledge -1 Backtracking template, + lt.46 Full Permutation
最佳实践 | 零基础实现小程序语音输入法
聊聊技术和任务的重要性
Origin 2022b | update and installation | switch between Chinese and English