2D游戏引擎制作:图片与文字

图片与文字


前言

  基础部分就稍快一点,但是一天一篇笔者也累啊!上一篇除笔者外只有3个浏览记录,好悲伤,如果不是引擎制作而是游戏制作是不是人会多一点。 


正文

以下代码接上篇文章。
接下来绘制图片,需要引入新头文件:

#include <Wincodec.h>

在初始化d2d后添加初始化WIC(direct2D中常用WIC来加载图片)的方法:

IWICImagingFactory* wicFactory = NULL;
ID2D1Bitmap* pBitmap = NULL;

CoInitialize(NULL);
CoCreateInstance(CLSID_WICImagingFactory, nullptr, CLSCTX_INPROC_SERVER,IID_PPV_ARGS(&wicFactory));

加载每个图片的方法一样,可以封装到一个方法里:

IWICBitmapDecoder* decoder;
IWICBitmapFrameDecode* source;
IWICFormatConverter* converter;
IWICBitmap* wicBitmap;

wicFactory->CreateDecoderFromFilename(bitmapName.c_str(), NULL, GENERIC_READ, WICDecodeMetadataCacheOnLoad, &decoder);

decoder->GetFrame(0, &source);
wicFactory->CreateFormatConverter(&converter);
converter->Initialize(source, GUID_WICPixelFormat32bppPBGRA, WICBitmapDitherTypeNone, nullptr, 0, WICBitmapPaletteTypeMedianCut);
wicFactory->CreateBitmapFromSource(converter, WICBitmapCacheOnDemand, &wicBitmap);
pRenderTarget->CreateBitmapFromWicBitmap(wicBitmap, &pBitmap);

decoder->Release();
decoder = NULL;
source->Release();
source = NULL;
converter->Release();
converter = NULL;
wicBitmap->Release();
wicBitmap = NULL;

绘制图片,在原有绘制矩形函数前加一句:

pRenderTarget->DrawBitmap(pBitmap, D2D1::RectF(100.f, 100.f, 500.f, 500.f));

运行效果。
这里写图片描述

添加文字,需要引入新头文件:

#include <dwrite.h>
#pragma comment(lib,"dwrite.lib")

初始化方法:

DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), (IUnknown**)&writeFactory);
writeFactory->CreateTextFormat(L"宋体", NULL,DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, 30, L"chs", &textFormat);
//每需要一种字体需要生成一个textFormat,只生成一个在改属性也可以。

绘制文字,在原有绘制图片函数后加一句:

pRenderTarget->DrawTextW(text.c_str(), text.size(), textFormat, D2D1::RectF(100.f, 100.f, 500.f, 500.f), pBlackBrush);

运行效果。
这里写图片描述

至此,简单显示部分算完成了,绘制其它图形方法相似,只是更改函数,至于画路径那种的暂时用不到,使用到了再看即可,想学习其它方法的读者可以到上篇文章中Direct2D教程链接中查看。


结束语

  多说一句,编写博客的工具Markdown,功能是很强大,但好像直接从word中拷贝文字复制过来会显示不正常,可能是文字中有隐藏的字符吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值