我是靠谱客的博主 爱撒娇向日葵,最近开发中收集的这篇文章主要介绍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 target
hr = 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 画一个矩形的全部内容,希望文章能够帮你解决D2D 学习笔记第一课 初始化D2D 画一个矩形所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部