D2D 学习笔记第一课 初始化D2D 画一个矩形
头文件 #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 画一个矩形相关推荐
- 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C
2011年冬季斯坦福大学公开课 iOS应用开发教程是个很经典的教程,这个老头讲的很给力.做笔记总结. 第一课名称: MVC and Introduction to Objective-C 这课的主要内 ...
- 日语课程0基础学习笔记——第一课
学习目标: 编程0基础学习笔记--前言 这是一个个人使用的日语学习记录博客!根据B站的up日语教程一直跟下来,从第一天开始记录.后续会把我学习的内容和知识点尽量多的记录在这个博客中,不仅是方便自己复习 ...
- 1、Python学习笔记第一课:python介绍
python学习第一课 python介绍: 1.python是一种解释性,面向对象语言. 2.特点: (1):可读性强: (2):简洁,生产效率高: (3):面向对象: (4):免费和开源: (5): ...
- 吴恩达深度学习笔记——第一课第四周
深层神经网络 内容概述 深层神经网络概述 前向传播和反向传播(Forward and backward propagation) 前向传播 反向传播 搭建神经网络块 超参数 代码作业--helper ...
- linux学习笔记-第一课-linux的历史,安装linux,远程连接
一.Linux 的历史 ①创始人:Linus Torvalds(林纳斯·托瓦兹) ②发布时间:1991年10月5日 ③核心:kernel ④衍生版本:常见的Ubuntu.RedHat.CentOS.D ...
- Django 学习笔记第一课
Django web 框架介绍: MVC框架的核心思想 核心思想:解耦: 好处:可扩展性,向后兼容,低耦合,高内聚: 普通web结构框架MVC框架 M:model 主要用于数据库层次的封装: V:vi ...
- Unity3D学习笔记—第一课
Unity3D 2017.4.38下载与其他安装 一.下载 1.官网 :unity3D 2017下载 (1)建议2017.4版按键比较方便 最好先下这个,后面就可以找版本下载. (2)开发环境--安卓 ...
- 计算机课进制笔记,初学Python课程笔记-第一课(计算机基本概念+进制+环境变量)...
这是我第一次写博客,简单地聊聊当下的感受.其实,早在大学期间就有过把自己所学的一些知识点记录在某个平台,可供日后自己复习.只是本人并非计算机专业出身,平时写代码写得不是不多.直到毕业参与工作,从事软件 ...
- 《Go语言圣经》学习笔记 第一章 Go语言入门
Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...
最新文章
- 《OpenCV3编程入门》学习笔记10 角点检测(三)亚像素级角点检测
- python学习日记day2
- javascript原型_JavaScript的原型:古怪,但这是它的工作原理
- 结束 txt进程_Python多进程抓取拉钩网十万数据
- opencv roberts算子_图像之HOG特征描述算子-行人检测
- Windows Phone XNAでアニメーション - ぐるぐる
- 网络子系统在链路层的收发过程剖析(一)【转】
- JXSE 2.5 : What's Cool #6 -- PeerGroup Executor and ScheduledExcutor
- SpringBoot与JdbcTemplate的完美结合
- 关于用C#编写ActiveX控件1
- 【通信原理 入坑之路】 —— 详细理解傅里叶变换以及它在通信里面的应用
- Quartus II 安装
- ubuntu实现屏幕的旋转和开启自动旋转屏幕
- excel公式编辑器_让同事看傻,用Excel制作 “抽奖”小软件
- ①、iOS-RxSwift基础控件的使用、RxSwift-Tableview的使用、RxSwift-SectionTableview结合RxDataSources使用、RxSwift 网络请求封装使用
- 用“心”迎接情人节,用另一种形式表达爱意
- 小红书负面笔记下沉怎么办
- java毕设项目燕理快递中转站系统设计与实现(附源码)
- 初识ecshop小京东(1)——认识路由
- swagger2搭配knife4j 隐藏实体类的属性/字段