使用Windows Image Component(WIC),我想为我的Windows桌面应用程序(使用Windows 7 SP1的Direct2D / C ++ - Visual Studio 2013)执行以下操作
选择任何类型的RenderTarget(Direct2D Hwnd / Bitmap / WICBitmap - 等)用于绘图
创建一个空位图(D2D1Bitmap或IWICBitmap - (以适用者为准)
开始绘制 - 填充颜色,绘制一些线条和椭圆 - 结束抽奖==> (全部在位图中)
在某些时候,我需要 将绘制的内容作为计算机中的图像保存在位图中
将位图放在x1,y1(左上角 - xy坐标)和x2,y2中 渲染目标的(右下角 - xy坐标)。因为 窗口的其余部分将由工具栏使用。
如何使用C ++ / Direct2D实现这一目标?
我的功能的GDI +代码:
Bitmap* pBmp = NULL; //create null or empty bitmap
Graphics* pGrBuf = NULL; //initialise graphics to null
pBmp = new Bitmap((INT)rectClient.Width, (INT)rectClient.Height);
pGrBuf = new Graphics(pBmp);
在这个图形上,我总是可以绘制直线,矩形等。
pGrBuf.DrawRectangle(....)
pGrBuf.DrawLine(...)
最终,达到第5点
//leave some space (30, 30 in xy co-ordinates) for putting the toolbox in the top
pGrBuf.DrawImage(m_pBmp, 30.0f, 30.0f);
有意省略第4点的代码。
答案 0 :(得分:2)
这个问题有一个简单明确的答案,但你应该(重新)考虑一些细节。
Direct2D不是一个容易超越其他人的灵丹妙药框架。目前还不清楚你的图纸是什么,目的是什么,但有些情况下Direct2D的使用并不合适。如果用D2D替换GDI(+),你的一些痛苦将是:
但是,Direct2D可以提供的优势是无数的。
粗略地说,Direct2D只不过是Direct3D的包装。它是随DirectX 10引入的,其用法与GDI(+)非常相似。但是使用DirectX 11(1),Direct2D"原则"改变了,现在它更像D3D。它增加了另一种方法并删除旧方法。起初可能有点令人困惑。令人困惑的是,因为Web中的所有教程,文章和任何D2D资源(包括MSDN)都在D2D版本之间混淆。其中一些用于旧版本并推荐一件事(方法),其他用于描述新版本。
无论如何,我推荐新版本 - 即Direct2D 11.1。
对你的问题......
以下是一些可以帮助您的资源: