Direct2D 学习笔记(2)画刷 Brush
typedef struct _D3DCOLORVALUE {
float r; //红色分量值,范围0-1
float g; //绿色分量值,范围0-1
float b; //蓝色分量值,范围0-1
float a; //alpha分量值(透明度),范围0-1
} D3DCOLORVALUE;
其中,四个属性的取值范围是0-1。
可以通过D2D1::ColorF方法获取颜色
D2D1::ColorF(0.0f, 0.0f, 0.0f, 1.0f); //rgba形式
D2D1::ColorF(0x000000, 1.0f); //UINT32形式
D2D1::ColorF(D2D1::ColorF::Pink, 1.0f); //Enum形式特定值
从文件中加载位图:
//1初始化IWICImagingFactory
IWICImagingFactory *pIWICFactory;
CoInitialize(NULL);
CoCreateIstance(
CLSID_WICImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pIWICFactory)
); ID2D1Bitmap *pBitmap;
IWICBitmapDecoder *pDecoder;
IWICBitmapFrameDecode *pSource;
IWICStream *pStream;
IWICFormatConverter *pConverter;
IWICBitmapScaler *pScaler; //2初始化IWICBitmapDecoder
pIWICFactory->CreateDecoderFromFilename(
"filename", //修改为图片的路径名
NULL,
GENERIC_READ,
WICDecodeMetadataCacheOnload,
&pDecoder
); //3初始化IWICBitmapFrameDecode
pDecoder->GetFrame(, &pSource);
//4初始化IWICBitmapScaler
pIWICFactory->CreateBitmapScaler(&pScaler);
pScaler->Initialize(
pSource,
width, //缩放至width宽度
height, //缩放至height高度
WICBitmapInterpolationModeCubic
); //4初始化IWICFormatConverter
pIWICFactory->CreateFormatConverter(&pConverter);
pConverter->Initialize(
pScaler,
GUID_WICPixelFormat32bppPBGRA,
WICBitmapDitherTypeNone,
NULL,
0.0f,
WICBitmapPaletteTypeMedianCut
); //5从WIC中加载位图
pRenderTarget->CreateBitmapFromWicBitmap(
pConvert,
NULL,
&pBitmap
); //6释放临时对象
XXXXX->Release();
单色刷——ID2D1SolidColorBrush
ID2D1SolidColorBrush *pscBrush;
//创建单色画刷
RenderTarget->CreateSolidColorBrush(
D2D1::ColorF(, 1.0f),
&pscBrush
);
ID2D1LinearGradientBrush *plgBrush;
ID2D1GradientStopCollection *pgsCollection; //创建渐变节点数组
D2D1_FRADIENT_STOP gradientStops[];
gradientStops[] = {0.0f, D2D1::ColorF(, 1.0f)};
gradientStops[] = {1.0f, D2D1::ColorF(0xffffff, 1.0f)}; //创建渐变条(这一部分可以想象成ps中的那个渐变)
RenderTarget->CreateGradientStopCollection(
gradientStops, //渐变颜色点信息
, //渐变颜色点数量
D2D1_GAMMA_2_2,
D2D1_EXTEND_MODE_CLAMP,
&pGsCollection
); //创建渐变刷
RenderTarget->CreateLinearGradientBrush(
LinearGradientBrushProperties(
D2D1::Point2F(, ), //渐变线起始点(窗口坐标)
D2D1::Point2F(, ) //渐变线终点(窗口坐标)
),
pgsCollection,
&plgBrush
);
g_pTarget->CreateRadialGradientBrush(
RadialGradientBrushProperties(
Point2F(,), //颜色中心
Point2F(, ), //颜色偏离中心
, //颜色x轴半径
//颜色y轴半径
),
g_pGsCollection,
&g_pRgBrush
);
//使用WIC从文件中加载资源后
pRenderTarget->CreateBitmapBrush(pBitmap, &BitmapBrush);
pRenderTarget->BeginDraw();
pRenderTarget->FillRectangle(&rect, pxxxBrush);
pRenderTarget->DrawRectangle(&rect, pxxxBrush);
pRenderTarget->EndDraw();
下一期将学习位图刷和位图的更多用法。
Direct2D 学习笔记(2)画刷 Brush的更多相关文章
- 简述WPF中的画刷(Brush)
原文:简述WPF中的画刷(Brush) -------------------------------------------------------------------------------- ...
- Direct2D 学习笔记(1)概述
Direct2D 应用程序接口概述 资源网站 https://docs.microsoft.com/en-us/windows/win32/Direct2D/the-direct2d-api 主要用到 ...
- Direct2D 学习笔记 前言
Direct2D模板程序网址:https://docs.microsoft.com/zh-cn/windows/win32/direct2d/direct2d-quickstart DirectX S ...
- OpenGL学习笔记(2) 画一个正方形
画一个正方形 其实,画正方形就是画两个三角形,用四个顶点以及使用索引来实现 完整代码在Square项目的Application.cpp里 先贴上窗口初始化代码 void BaseInit() { gl ...
- OpenGL学习笔记(1) 画一个三角形
最近找实习有一丢丢蛋疼,沉迷鬼泣5,四周目通关,又不想写代码,写篇笔记复习一下,要好好学图形学啊 用OpenGL画一个三角形 项目的简介 记录一下跟着learnOpenGL学习的过程 笔记里的代码放在 ...
- Direct2D 学习笔记(3)图层 Layer
利用图层Layer绘制资源网址:https://docs.microsoft.com/zh-cn/windows/win32/direct2d/direct2d-layers-overview 1 ...
- 五毛的cocos2d-x学习笔记08-动画
一个例子就够了,单击文本标签,执行动画.我也是小白,写这个demo的时候遇到了问题,单击文本标签游戏就死掉了.今天为了解决这个问题也是一晚没睡,到学习群里问大神,经过大神的指点解决了问题.原来是Ani ...
- AngularJS1.X学习笔记13-动画和触摸
本文主要涉及了ngAnimation和ngTouch模块,自由男人讲的比较少,估计要用的时候还要更加系统的学习一下. 一.安装 没错,就是酱紫. 二.玩玩动画 <!DOCTYPE html> ...
- Python入门学习笔记2:刷题
1) LeetCode 强的面试题和算法题,要求也比较高,很多国内外的码农在上面刷题.难度从easy到hard都有,而且覆盖面极广,需要你的综合实力去答题. 最简单的题比如字符串的处理有的时候也要用到 ...
随机推荐
- CSP模拟赛 Matrix(DP)
题面 求出满足以下条件的 n*m 的 01 矩阵个数: (1)第 i 行第 1~li 列恰好有 1 个 1. (2)第 i 行第 ri~m 列恰好有 1 个 1. (3)每列至多有 1 个 1. n, ...
- 22 | MySQL有哪些“饮鸩止渴”提高性能的方法?
不知道你在实际运维过程中有没有碰到这样的情景:业务高峰期,生产环境的MySQL压力太大,没法正常响应,需要短期内.临时性地提升一些性能. 我以前做业务护航的时候,就偶尔会碰上这种场景.用户的开发负责人 ...
- Convert AS400 Spool to PFD Tools – PDFing
1. Steps There’s a tool PDFing convert spool file to PDF with simple way. No need install AS400 obje ...
- bzoj 3629
给出数 $n$记 $f(x)$ 表示 $x$ 的因子和求出所有 $x$ 使得 $f(x) = n$考虑 $x = p_1 ^{a_1} * p_2 ^ {a_2} * \cdots * p_k ^ { ...
- TCP数据报结构以及三次握手
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的.可靠的.基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接. 客户端在收发数据前要 ...
- Mac 10.14.5系统偏好设置安全性与隐私不展示任何来源解决办法
Mac新系统升级(10.14.5)后未从appstore下载的软件在安装时会提示安装包已损坏之类的东东,这是因为没有打开“设置”—“安全与隐私”中的“任何来源”造成的,可是升级后的10.14.5却没有 ...
- c++ 珊格画椭圆
#ifndef _TEST_H #define _TEST_H #include <iostream> #include <math.h> using namespace st ...
- webpack-merge
配置分离 随着我们业务逻辑的增多,图片.字体.css.ES6以及CSS预处理器和后处理器逐渐的加入到我们的项目中来,进而导致配置文件的增多,使得配置文件书写起来比较繁琐,更严重者(书写特定文件的位置会 ...
- 2018-2019-2 《网络对抗技术》Exp8 Web基础 Week11-12 20165233
Exp8 Web基础 目录 一.基础问题 二.实验步骤 实验点一:Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. 实验 ...
- firewall-cmd命令详解
https://blog.csdn.net/GMingZhou/article/details/78090963 实例 # 安装firewalld yum install firewalld fire ...