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都有,而且覆盖面极广,需要你的综合实力去答题. 最简单的题比如字符串的处理有的时候也要用到 ...
随机推荐
- POJ-2065-SETI(高斯消元)
链接: https://vjudge.net/problem/POJ-2065 题意: For some years, quite a lot of work has been put into li ...
- php MySQL 删除数据表
MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...
- 把hdfs数据写入到hbase表
功能:把hdfs上的数据写入到hbase表. hadoop的mapreduce输出要导入到hbase表,最好先输出HFile格式,再导入hbase,因为HFile是hbase的内部存储格式,所以导入效 ...
- PostgreSQL 配置参数
一.配置参数所在文件.类型与查看方式 1.配置参数所在文件 postgresql.conf 2.配置参数类型 1)internal只读参数 这些参数不配置在postgresql.conf中,他们由po ...
- CF358D Dima and Hares dp
状态的定义挺奇特的~ 发现最终每一个物品一定都会被选走. 令 $f[i][0/1]$ 表示 $a[i]$ 在 $a[i-1]$ 前/后选时 $1$~$(i-1)$ 的最优解. 因为一个数字的价值只由其 ...
- splay树 1285 宠物收养所
#include<cstdio> #include<iostream> using namespace std; int shu[80004][2],n,size,root,k ...
- Bzoj 2588 Spoj 10628. Count on a tree(树链剖分LCA+主席树)
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MB Description 给定一棵N个节点的树,每个点 ...
- Hadoop mapreduce过程分析
原理图: 中间结果的排序与溢出(spill)流程图 map分析: (1).输入分片(input split):在进行mapreduce之前,mapreduce首先会对输入文件进行输入分片(input ...
- 深入理解JVM——关于垃圾回收
关于垃圾回收 仿佛来自上海居委会大妈的灵魂拷问:“你是什么垃圾?” 不 今天我们要说的是JVM的垃圾回收 假如我是一个“人”类的“对象”,也和人的生命一样必有一死,可是“我真的还想再活500年~~”, ...
- python3 与linux间的小知识
1 1秒启动一个下载器 python -m http.server laso@laso-beta03 ms_product]$ python3 -m http.server Serving HTTP ...