图片与文字


前言

  基础部分就稍快一点,但是一天一篇笔者也累啊!上一篇除笔者外只有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中拷贝文字复制过来会显示不正常,可能是文字中有隐藏的字符吧!

2D游戏引擎制作:图片与文字相关推荐

  1. 2D游戏引擎制作:前言

    前言 这是笔者生平第一次写博客,水平较差,请多谅解. 前言 笔者年少时,包括现在,一直是一个喜欢玩游戏的人.父亲曾因此批评过笔者,因为他也是个程序员,就说你可以自己做一个出来之类的话,可到现在都没有教 ...

  2. 2D游戏引擎制作:读取XML文件 1

    读取XML文件 1 前言 渲染底层部分暂时结束,等用到了再继续写. 之前创建的窗体大小800和600还有标题等信息是写死在代码里的,但笔者们一般需要将它提出来放在一个文件里,以便修改这些属性时不用重新 ...

  3. sdl 游戏引擎c语言,kys-cpp: 《金庸群侠传》C++复刻版,这是一个以SDL2为基础实现的2D游戏引擎。同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。...

    kys-cpp 这是一个以SDL2为基础实现的2D游戏引擎. 基本按照当代游戏引擎的思路实现,但是没有使用回调,因为回调会增加初学者的使用难度. 同时相当于提供了一个使用该引擎制作DOS游戏<金 ...

  4. Android 2D游戏引擎AndEngine快速入门教程

    Android 2D游戏引擎AndEngine快速入门教程 介绍:AndEngine是一款知名的Android 2D游戏引擎.该引擎代码开源,并且可以免费使用.本书详细讲解如何使用AndEngine引 ...

  5. python scratch unity_Unity3D研究院之2D游戏开发制作原理(二十一)

    经过了4个月不懈的努力,我和图灵教育合作的这本3D游戏开发书预计下个月就要出版了.这里MOMO先打一下广告,图灵的出版社编辑成员都非常给力,尤其是编辑小花为这本书付出了很大的努力,还有杨海玲老师,不然 ...

  6. 2D游戏引擎Allegro 系列教程(二) Hello world!

    本系列文章由sky编写,转载请注明出处. http://blog.csdn.net/qq573011406/article/details/8172949 作者:袁全伟   邮箱: qq5730114 ...

  7. Love2D游戏引擎制作贪吃蛇游戏

    预览游戏 love2d游戏引擎重要函数 详情: love.load:当游戏开始时被调用且仅调用一次 love.draw:回调函数,每帧更新一次游戏画面 love.update:回调函数,每帧更新一次游 ...

  8. 2d游戏引擎_8年,从2D到3D,我的学习之路

    Mickey 写了一篇 <一个本科毕业生创业两年的感悟>,从他的视角,总结了我们合作的两年经历. 我也来写一篇,介绍我的学习之路,希望对大家有所帮助,谢谢大家- 我的学习方法 1.直接从0 ...

  9. 开发2d游戏要用什么引擎_下一个游戏要使用什么2D游戏引擎

    开发2d游戏要用什么引擎 A few weeks ago, I posted about my experience attempting to make a prototype in a bunch ...

最新文章

  1. 刷新中文阅读理解水平,哈工大讯飞联合发布基于全词覆盖中文BERT预训练模型...
  2. pytorch_lightning Default process group is not initialized
  3. LeetCode Largest Divisible Subset(动态规划)
  4. 关于org.apache.lucene.queryParser.ParseException: Encountered 解决方法
  5. 一个PHP程序的“怪问题”
  6. ECSHOP批量添加商品到购物车
  7. mysql初始化很慢_mysql初始化报错
  8. 安装 | 最新MATLAB 2020b(64位)安装教程完整版
  9. 产品读书《极简工作法则》
  10. sql语句根据身份证号获取年龄
  11. Tapestry经典入门教程
  12. Mtk Sensor 驱动框架变更简要分析
  13. Spring基础-AOP-切入点详解
  14. PHP延迟静态捆绑Late Static Bindings
  15. Solr搜索引擎 — 中文全拼简拼分词
  16. 怎么把照片改成一寸照?教你把照片改成一寸照的方法
  17. 准备离职了,公司决定加薪留住我,是去是留?
  18. C++ 主函数几种语法
  19. STCP与TCP协议
  20. input组件选择日期时间

热门文章

  1. JavaScript对象的创建方式
  2. 小鹏G3 2020款到底有多智能
  3. MFC多窗口停靠成Tab页并默认选中第一个TAB页
  4. 【CAD学习-初级(1)】
  5. 按计算机病毒工作原理可将其分为,计算机基础知识练习题3.doc
  6. Java邮箱发送邮件(163邮箱)
  7. 看过的最好的护肤心得
  8. 识别干系人与如何理解识别干系人过程贯穿项目始终?
  9. channel shuffle通道洗牌
  10. python组合和继承_python 继承与组合