使用Windows映像组件(WIC),我想为我的Windows桌面应用程序(Direct2D / C ++与Windows 7 SP1 – Visual Studio 2013)
select任何types的RenderTarget(Direct2D Hwnd / Bitmap / WICBitmap – 等)进行绘制
创build一个空的位图(D2D1Bitmap或IWICBitmap – 无论哪个适用)
开始绘制 – 填充颜色,绘制一些线条和椭圆 – 结束绘制==>(全部在位图中)
在某些时候,我需要将绘制的内容保存在位图中作为我的电脑中的图像
将位图放在渲染目标的x1,y1(左上angular的xy坐标)和x2,y2(右下angular的xy坐标)中。 因为窗口的其余部分将被工具栏使用。
我如何使用C ++ / Direct2D来实现这一目标?
GDI +我的function代码:
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);
在这个graphics上,我总是可以绘制线条,矩形等。
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的代码被故意省略。
这个问题有一个简单的,明确的答案,但有一些细节,你应该(重新)考虑。
Direct2D不是一个万能的框架,很容易胜过其他人。 不太清楚你的图画是什么,他们的目的是什么,但有些情况下,Direct2D的使用不是很合适。 如果您用D2D替换GDI(+),您的一些苦难将是:
而且,Direct2D可以提供的优势是无数。
粗略地说,Direct2D不过是Direct3D的封装。 它是与DirectX 10一起推出的,其用法与GDI(+)非常相似。 但是在DirectX 11(1)中,Direct2D的“原则”已经改变,现在更像D3D。 它增加了另一种方法,并删除旧的。 起初可能有点混乱。 令人困惑的是,也是因为所有教程,文章以及网络中的任何D2D资源(包括MSDN)在D2D版本之间混淆在一起。 其中一些是为旧版本和推荐一件事(方法),其他描述新版本。
无论如何,我推荐新版本 – 即Direct2D 11.1。
对你的问题…
以下是一些可以帮助您的资源: