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都有,而且覆盖面极广,需要你的综合实力去答题. 最简单的题比如字符串的处理有的时候也要用到 ...
随机推荐
- jquery关于多个显示隐藏
今天做了一个关于多个栏目的隐藏与显示,内容为初始化显示6个栏目,点击按钮显示所有的栏目,在次点击隐藏出现的栏目 <div class="ftlt_z_navigation acer&q ...
- Nginx 负载均衡条件下 Redis 共享Session (Java)(二)
关于Session的问题 网上有各个方面的针对,有在nginx 上处理: ip_hash的session,有在 tomcat 做处理:修改Context文件,有针对项目做处理.本篇就是对项目处理 1. ...
- LOJ P10116 清点人数 题解
每日一题 day13 打卡 Analysis 用简单的树状数组维护单点修改和查询就行了 #include<iostream> #include<cstdio> #include ...
- Jquery使用心得
1.<form>提交时,会提交里面有name属性的元素,而不是id属性 $("#form").serialize(); 得到里面每个元素的拼接值 id=1& ...
- learning scala How To Create Implicit Function
println("Step 1: How to create a wrapper String class which will extend the String type") ...
- luogu 1593
$Answer = A ^ B $ 的因子之和 将 $A$ 进行质因数分解$A = p_1 ^ {a_1} P_2 ^ {a_2} p_3 ^ {a_3} \cdots p_k ^ {a_k}$ $A ...
- 【テンプレート】字符串hash
不懂hash是什么的盆友给出直通车:滴滴滴,开车啦~ 如果你看懂了的话: hash模板来也~ #include <cstdio> #include <string> #incl ...
- 使用Keras训练神经网络备忘录
小书匠深度学习 文章太长,放个目录: 1.优化函数的选择 2.损失函数的选择 2.2常用的损失函数 2.2自定义函数 2.1实践 2.2将损失函数自定义为网络层 3.模型的保存 3.1同时保持结构和权 ...
- eclipse 点击 new window 后,关闭新增的窗口
点击右上角的 X 关闭,不要点击 exit 退出
- codeforces#1257 F. Make Them Similar ( 经典中间相遇问题 )
题目链接: http://codeforces.com/contest/1257/problem/F 题意: 给出$n$个30位整数 找到一个数,让它与这$n$个数分别异或,得到的$n$个数二进制1的 ...