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

图片与文字


前言

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


正文

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

#include 

在初始化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));

运行效果。
2D游戏引擎制作:图片与文字_第1张图片

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

#include 
#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);

运行效果。
2D游戏引擎制作:图片与文字_第2张图片

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


结束语

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

你可能感兴趣的:(2D游戏引擎制作)