头文件 #include <D2D1.h>

lib文件 #pragma comment(lib,"D2D1.lib")

首先 新建一个 win32 程序 加入头文件和lib文件  步骤1.申明全局变量 步骤2.创建工厂 步骤3.画矩形 步骤4.清除资源

/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
//声明全局变量
#include <D2D1.h>
#include <D2D1.h>
#pragma comment(lib,"D2D1.lib")
ID2D1Factory* pD2DFactory = NULL; // Direct2D factory 对象
ID2D1HwndRenderTarget* pRenderTarget = NULL;   // Render target渲染的场所
ID2D1SolidColorBrush* pBlackBrush = NULL; // 固定颜色的画刷

/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

//创建D2D工厂
void CreatD2DIni()
{HRESULT hr;//1.创建工厂hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pD2DFactory);//参数1.单线程 、第二个参数用来接收创建的工厂if (FAILED(hr)) {MessageBox(hWnd, L"Create D2D factory failed!", L"Error", 0);return;}RECT rc;GetClientRect(hWnd, &rc);// 2.创建Render targethr = pD2DFactory->CreateHwndRenderTarget(D2D1::RenderTargetProperties(),//参数一是Render target属性,包括渲染模式,象素格式,DPI等,D2D提供了一个函数D2D1::RenderTargetProperties(),可以用来生成默认的属性D2D1::HwndRenderTargetProperties(hWnd,D2D1::SizeU(rc.right - rc.left, rc.bottom - rc.top)),//第二个参数是Hwnd类型的Render target属性&pRenderTarget                  //最后一个参数用来接收创建的Render target);if (FAILED(hr)) {MessageBox(hWnd, L"Create render target failed!", L"Error", 0);  return;}//3.创建一个画刷hr = pRenderTarget->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Red),//颜色&pBlackBrush//接收画刷);if (FAILED(hr))   {MessageBox(hWnd, L"Create brush failed!", L"Error", 0);return;}
}VOID DrawRectangle()
{CreatD2DIni();//创建初始化一下pRenderTarget->BeginDraw();//开始绘画  绘画一定要在 BeginDraw 和 EndDraw 之间/*************************************************///画一个红色背景pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::YellowGreen));//画一个矩形pRenderTarget->DrawRectangle(D2D1::RectF(50.f, 50.f, 100.f, 100.f),//区域pBlackBrush,5.0f   );//画刷//画一个直线pRenderTarget->DrawLine(D2D1::Point2F(10.f, 200.f),//开始坐标D2D1::Point2F(150.f, 200.f),//结束目标pBlackBrush,5.0f);//画刷D2D1_ROUNDED_RECT roundedRect = D2D1::RoundedRect(D2D1::RectF(200.f, 50.f, 300.f, 200.f),10.0f,   //圆角矩形x轴半径10.0f //圆角矩形y轴半径);//画圆角矩形半径pRenderTarget->DrawRoundedRectangle(roundedRect, pBlackBrush, 5.0f);//画圆角D2D1_ELLIPSE ellipse = D2D1::Ellipse(D2D1::Point2F(300.0f, 300.0f), 50.0f, 50.0f);//椭圆圆心坐标 长轴半径 短轴半径pRenderTarget->DrawEllipse(ellipse, pBlackBrush,5.0f);//参数一 椭圆结构体 参数二 画刷 参数3 画笔 默认是1/*************************************************/HRESULT hr = pRenderTarget->EndDraw();//结束绘画if (FAILED(hr)) {MessageBox(NULL, L"Draw failed!", L"Error", 0);return;}
}VOID Cleanup()//删除资源
{//#define SAFE_RELEASE(P) if(P){P->Release() ; P = NULL ;}SAFE_RELEASE(pRenderTarget);SAFE_RELEASE(pBlackBrush);SAFE_RELEASE(pD2DFactory);
}

D2D 学习笔记第一课 初始化D2D 画一个矩形相关推荐

  1. 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

    2011年冬季斯坦福大学公开课 iOS应用开发教程是个很经典的教程,这个老头讲的很给力.做笔记总结. 第一课名称: MVC and Introduction to Objective-C 这课的主要内 ...

  2. 日语课程0基础学习笔记——第一课

    学习目标: 编程0基础学习笔记--前言 这是一个个人使用的日语学习记录博客!根据B站的up日语教程一直跟下来,从第一天开始记录.后续会把我学习的内容和知识点尽量多的记录在这个博客中,不仅是方便自己复习 ...

  3. 1、Python学习笔记第一课:python介绍

    python学习第一课 python介绍: 1.python是一种解释性,面向对象语言. 2.特点: (1):可读性强: (2):简洁,生产效率高: (3):面向对象: (4):免费和开源: (5): ...

  4. 吴恩达深度学习笔记——第一课第四周

    深层神经网络 内容概述 深层神经网络概述 前向传播和反向传播(Forward and backward propagation) 前向传播 反向传播 搭建神经网络块 超参数 代码作业--helper ...

  5. linux学习笔记-第一课-linux的历史,安装linux,远程连接

    一.Linux 的历史 ①创始人:Linus Torvalds(林纳斯·托瓦兹) ②发布时间:1991年10月5日 ③核心:kernel ④衍生版本:常见的Ubuntu.RedHat.CentOS.D ...

  6. Django 学习笔记第一课

    Django web 框架介绍: MVC框架的核心思想 核心思想:解耦: 好处:可扩展性,向后兼容,低耦合,高内聚: 普通web结构框架MVC框架 M:model 主要用于数据库层次的封装: V:vi ...

  7. Unity3D学习笔记—第一课

    Unity3D 2017.4.38下载与其他安装 一.下载 1.官网 :unity3D 2017下载 (1)建议2017.4版按键比较方便 最好先下这个,后面就可以找版本下载. (2)开发环境--安卓 ...

  8. 计算机课进制笔记,初学Python课程笔记-第一课(计算机基本概念+进制+环境变量)...

    这是我第一次写博客,简单地聊聊当下的感受.其实,早在大学期间就有过把自己所学的一些知识点记录在某个平台,可供日后自己复习.只是本人并非计算机专业出身,平时写代码写得不是不多.直到毕业参与工作,从事软件 ...

  9. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

最新文章

  1. 《OpenCV3编程入门》学习笔记10 角点检测(三)亚像素级角点检测
  2. python学习日记day2
  3. javascript原型_JavaScript的原型:古怪,但这是它的工作原理
  4. 结束 txt进程_Python多进程抓取拉钩网十万数据
  5. opencv roberts算子_图像之HOG特征描述算子-行人检测
  6. Windows Phone XNAでアニメーション - ぐるぐる
  7. 网络子系统在链路层的收发过程剖析(一)【转】
  8. JXSE 2.5 : What's Cool #6 -- PeerGroup Executor and ScheduledExcutor
  9. SpringBoot与JdbcTemplate的完美结合
  10. 关于用C#编写ActiveX控件1
  11. 【通信原理 入坑之路】 —— 详细理解傅里叶变换以及它在通信里面的应用
  12. Quartus II 安装
  13. ubuntu实现屏幕的旋转和开启自动旋转屏幕
  14. excel公式编辑器_让同事看傻,用Excel制作 “抽奖”小软件
  15. ①、iOS-RxSwift基础控件的使用、RxSwift-Tableview的使用、RxSwift-SectionTableview结合RxDataSources使用、RxSwift 网络请求封装使用
  16. 用“心”迎接情人节,用另一种形式表达爱意
  17. 小红书负面笔记下沉怎么办
  18. java毕设项目燕理快递中转站系统设计与实现(附源码)
  19. 初识ecshop小京东(1)——认识路由
  20. swagger2搭配knife4j 隐藏实体类的属性/字段

热门文章

  1. 【前端】PS图层切图
  2. go语言判断文件是否为UTF8编码
  3. Work with Hans
  4. 微信小程序云开发 操作数据库-新增一条数据
  5. 如何让jar包显示Java图标
  6. form-create-desniger 自定义拖拽表单
  7. el-input输入11位手机号,边输入边验证手机号码格式
  8. 淘宝官方商品详情接口
  9. 如何打造3D立体世界?跟随图片一同探寻
  10. 彻底卸载Tomcat